Vai al contenuto
Dialova

Documentazione IRC · Intermedio

Capire e progettare un bot IRC

Un bot IRC è un programma connesso alla rete come un client. Può ascoltare eventi, rispondere a comandi o animare un canale. La sua affidabilità dipende soprattutto dalla gestione del protocollo, dei permessi e della frequenza di invio.

Il team di Dialova · Verificato il

Il ciclo di un bot #

  1. Aprire una connessione TLS e verificare il certificato.
  2. Negoziare CAP e autenticare l’account se richiesto dalle regole.
  3. Dichiarare l’identità IRC e attendere la fine della registrazione.
  4. Entrare nei canali autorizzati e gestire messaggi, errori ed eventi.
  5. Rispondere ai PING, limitare gli invii e prevedere una riconnessione progressiva.
Estratto di una sessione già registrata e autorizzata
S: PING :jeton-123
C: PONG :jeton-123
S: :Alice!alice@cloak.example PRIVMSG #atelier :!bonjour
C: PRIVMSG #atelier :Bonjour Alice !

Questo estratto illustra il flusso; non è un programma completo da eseguire. Una libreria IRC mantenuta può gestire trasporto e grammatica, anziché supporre che ogni lettura di rete riceva un’intera riga.

Separare protocollo, regole e azioni #

ParteResponsabilità
Trasporto e parserTLS, byte, CRLF, messaggi parziali e limiti.
Stato IRCRegistrazione, capacità, canali, identità e cambiamenti.
Logica del botRiconoscere una richiesta, verificarne le condizioni e produrre un’intenzione d’azione.
Coda di uscitaLimitare la frequenza, mantenere l’ordine ed evitare invii ripetitivi alla riconnessione.

Non fidarsi del solo nickname #

Un partecipante può cambiare nickname o imitare una sintassi. Per un’azione sensibile usa un’identità attestata dal server quando disponibile e poi verifica i permessi dell’azione. Non dare i diritti di operatore a un bot di gioco soltanto per permettergli di parlare.

I testi ricevuti sono input non affidabili: non passarli a una shell, a una query costruita per concatenazione o a un esecutore di codice. I segreti di connessione restano in una configurazione privata, non in un repository o in una risposta del bot.

Evitare flood e cicli di risposte #

La rete stabilisce i limiti: non esiste una frequenza di invio universalmente sicura. Gestisci gli errori, raggruppa gli output quando ha senso e limita le azioni per utente e canale. La riconnessione deve prevedere un’attesa progressiva, non un ciclo immediato.

Non rispondere automaticamente alle NOTICE e non eseguire un vecchio comando utente durante la riproduzione della cronologia. Con echo-message può tornare il tuo stesso output: distinguilo dalle richieste in arrivo.

Bobot su Dialova #

Bobot anima, tra l’altro, i giochi nei canali di Dialova. È distinto dai giochi grafici del sito e dagli account dei suoi utenti. Questo esempio mostra che un client automatizzato può arricchire una comunità senza richiedere un protocollo di chat proprietario.

Fonti e verifica

Gli esempi usano nickname e domini fittizi, tranne gli endpoint esplicitamente documentati. Le estensioni e le impostazioni specifiche di una rete sono indicate nel testo.