Kit di Costruzione per Discord Bot 🤖

Ops, ho cancellato il link sbagliato dall’OP. (C’erano due plugin: avrei dovuto eliminare quello OAuth, ma invece ho rimosso il link al bot!)

Disinstalla quel plugin il prima possibile, poiché Core ora supporta nativamente l’OAuth di Discord.

Il plugin del bot è QUESTO:

Ho modificato l’OP di conseguenza, scusate!!

3 Mi Piace

Sappiamo già qual è lo stato per quanto riguarda l’aggiornamento automatico degli utenti tramite questo plugin al momento dell’iscrizione al gruppo, invece di una sincronizzazione manuale? E anche una possibile modalità per indicare quali gruppi/ruoli sincronizzare tra loro, invece che il plugin si impadronisca o crei i ruoli autonomamente?

2 Mi Piace

È la prima volta che viene richiesto, quindi, come puoi immaginare, non è nemmeno nella backlog, per così dire.

Sarebbe piuttosto complicato, dato che il bot gira su un thread separato. Dovresti aggiungere un metodo per inviare un messaggio al bot e assicurarti che sia in ascolto della richiesta. Un esercizio tecnicamente interessante, ma non banale.

In alternativa, potrebbe essere meglio esplorare un’alternativa tramite chiamata API diretta invece di utilizzare il bot. Dovresti poi decidere se ciò giustifica l’implementazione in un plugin diverso, basato su chiamate separate e non su un bot.

Non è una cattiva idea, ma per curiosità, perché hai bisogno che siano diversi?

Questa opzione è più pratica.

PR accettata. Purtroppo il mio tempo è molto limitato per lavorare su funzionalità significative senza finanziamenti.

3 Mi Piace

Bene, al momento sembra che i ruoli siano basati sul “nome” invece che sul titolo. Ciò significa che i miei ruoli su Discord finiscono per avere “dashing” e senza spazi, per esempio. Quindi, immagino che una soluzione alternativa sia far sì che i ruoli siano basati non sul nome, ma sul nome completo o sul titolo predefinito.

Detto questo, potrebbero esserci gruppi su Discourse che non vorrei sincronizzare affatto con Discord.

Apprezzo le risposte :slight_smile:

2 Mi Piace

Questo è intenzionale per evitare di fare affidamento su un campo di descrizione che può:

a) contenere spazi
b) non essere univoco

e (è solitamente un’idea terribile nell’informatica).

Tuttavia, se esiste un modo sicuro per migliorare questa situazione, sono tutto orecchi. Apprezzo che non ‘sembri’ molto elegante :slight_smile:

Il plugin potrebbe certamente avere funzionalità aggiuntive per disattivare la sincronizzazione per gruppi specifici, a discrezione dell’amministratore. Le PR sono accettate.

4 Mi Piace

Nel frattempo, mentre si esplora un metodo API, potremmo far sincronizzare il bot automaticamente a un orario programmato? Qualcosa come un controllo ogni ora, o 24, ecc.?

1 Mi Piace

Credo che sarebbe possibile aggiungere una funzionalità simile a ‘ripeti questo tra x ore’ senza problemi.

Il problema, però, è che si interromperebbe ogni volta che il bot si spegne (ad esempio, durante un riavvio).

L’approccio assolutamente migliore sarebbe:

a) aggiungere una chiamata API discreta collegata a un job Sidekiq a questo plugin, oppure
b) scrivere un nuovo plugin che utilizzi chiamate API normali invece di avvalersi di un bot (e integrare una sincronizzazione batch in quel contesto).

Entrambe le opzioni richiederanno uno sponsor o una pull request.

1 Mi Piace

Giusto. Grazie per l’aiuto.

2 Mi Piace

Ciao.

Sto attualmente utilizzando il tuo plugin e ho portato tutto a un punto funzionante. Sembra davvero ottimo, ottimo lavoro!

Tuttavia, ho alcune domande: ora che ho tutto in esecuzione, devo far accedere i miei utenti tramite Discord OAuth. Questo crea un nuovo account.

Qual è il modo migliore per gestirlo? Devo unire gli account nuovi e vecchi? Ho provato a farlo con il mio account Admin e ho ottenuto l’errore “Non hai il permesso di eseguire il comando discsync!” quando ho tentato di eseguire manualmente !discsync.

Inoltre, non ha ancora copiato nessun ruolo dal mio Discourse.

Per tua informazione, il mio account Discord risulta nelle opzioni come un account associato.

Grazie in anticipo per il tuo aiuto!

2 Mi Piace

Grazie per il tuo interesse nel plugin!

Questa non è una funzionalità del plugin, ma una funzionalità principale. Discord OAuth è incluso di default in Discourse.:

Le impostazioni sopra indicate appaiono indipendentemente dall’aggiunta di questo plugin al tuo Discourse.

Se accedi tramite un account sociale, purché gli indirizzi email di registrazione corrispondano, l’account dovrebbe essere riconosciuto e non ne verrà creato uno nuovo. Tuttavia, se l’utente si è registrato su Discord con un’email diversa da quella di Discourse, ovviamente non c’è modo per il sistema di sapere che si tratta dello stesso utente, quindi verrà creato un nuovo account.

Si tratta del tuo account amministratore sul server Discord? Inoltre, hai autorizzato il bot?

Qual è il risultato di Ping!?

4 Mi Piace

Confermo. Nel peggiore dei casi posso semplicemente unire gli account con indirizzi email non corrispondenti.

Sì, esatto. Sono il proprietario delle istanze di Discord e Discourse. Il risultato di “Ping!” è “Pong!”. Nessun ruolo è stato migrato da Discourse a Discord.

Il bot è presente sul mio server Discord e ha privilegi di amministratore. Potresti chiarire cosa intendi per “autorizzare”?

3 Mi Piace

Hai completato questo passaggio? (sto solo verificando tutti i prerequisiti, quasi certamente li hai già soddisfatti).

2 Mi Piace

Sì, l’ho :slight_smile:

1 Mi Piace

Il mio istinto è che i tuoi diritti o quelli del bot sul server Discord non siano configurati correttamente in qualche modo. Sto solo rinfrescando la memoria su questo plugin mentre lavoro su decine di altri. L’ultima modifica che ho apportato a questo è stata parecchio tempo fa!

1 Mi Piace

Roger! Ho fatto un rapido controllo dalla mia parte, quindi per tua informazione risulto come proprietario del server e ho i diritti di amministratore.

EDIT: Possiamo chiarire quali diritti richiede il bot? Attualmente è elencato come amministratore (questo gli è stato concesso da un ruolo, non dall’invito OAuth, però).

1 Mi Piace

Il mio bot ha queste:

1 Mi Piace

Ecco i miei (scusa, essendo un nuovo utente qui

devo fare 3 post…)

1 Mi Piace

Potresti controllare le autorizzazioni del canale? Le autorizzazioni del canale su Discord hanno la priorità rispetto a quelle del server.

1 Mi Piace

Sì, è nel canale senza problemi. Non ci sono permessi disattivati che impediscano l’invio o la ricezione di messaggi.

Può inviare Pong!, e mi dice che non ho i permessi necessari per lanciare !discsync

1 Mi Piace

OK, sto cercando di ricreare il problema, ma finora riesco a eseguire entrambi i comandi.

1 Mi Piace