Hoppa till innehållet
Dialova

IRC-dokumentation · Medelnivå

Förstå och utveckla en IRC-bot

En IRC-bot är ett program som ansluter till nätverket som en klient. Den kan lyssna på händelser, svara på kommandon och ordna aktiviteter. Tillförlitligheten beror framför allt på protokollhantering, behörigheter och sändningstakt.

Dialovas team · Kontrollerat den

En bots arbetscykel #

  1. Öppna en TLS-anslutning och kontrollera certifikatet.
  2. Förhandla CAP och autentisera kontot om policyn kräver det.
  3. Ange IRC-identitet och invänta slutförd registrering.
  4. Gå med i tillåtna kanaler och behandla meddelanden, fel och händelser.
  5. Svara på PING, begränsa sändningar och planera återanslutning med ökande väntetid.
Utdrag från en redan registrerad och behörig session
S: PING :jeton-123
C: PONG :jeton-123
S: :Alice!alice@cloak.example PRIVMSG #atelier :!bonjour
C: PRIVMSG #atelier :Bonjour Alice !

Utdraget visar flödet och är inget komplett körbart program. Ett underhållet IRC-bibliotek kan hantera transport och grammatik i stället för att anta att varje nätverksläsning ger en hel rad.

Skilj protokoll, regler och åtgärder #

DelAnsvar
Transport och tolkningTLS, byte, CRLF, ofullständiga meddelanden och gränser.
IRC-tillståndRegistrering, funktioner, kanaler, identitet och ändringar.
BotlogikKänn igen begäran, kontrollera villkoren och skapa en åtgärdsavsikt.
Utgående köBegränsa hastigheten, bevara ordningen och undvik upprepad sändning efter återanslutning.

Lita inte enbart på smeknamnet #

En deltagare kan byta smeknamn eller imitera syntax. Använd en serverbekräftad identitet där den finns för känsliga åtgärder och kontrollera sedan åtgärdens behörigheter. Ge inte en spelbot operatörsrättigheter bara för att den ska kunna prata.

Inkommande text är opålitlig indata. Skicka den inte till ett skal, en fråga byggd med strängsammanfogning eller en kodtolk. Anslutningshemligheter hör hemma i privat konfiguration, inte i ett kodarkiv eller botsvar.

Undvik meddelandeflod och slingor #

Nätverket bestämmer gränserna. Ingen sändningstakt är säker överallt. Hantera fel, samla utdata när det är lämpligt och begränsa åtgärder per användare och kanal. Återanslut med ökande väntetid i stället för en omedelbar slinga.

Svara inte automatiskt på NOTICE och kör inte gamla användarkommandon när historik återspelas. Med echo-message kan egen utdata komma tillbaka. Skilj den från inkommande begäranden.

Bobot på Dialova #

Bobot sköter bland annat Dialovas kanalspel. Den är skild från webbplatsens grafiska spel och medlemmarnas konton. Exemplet visar hur en automatiserad klient kan berika en gemenskap utan ett proprietärt chattprotokoll.

Källor och kontroll

Exemplen använder påhittade smeknamn och domäner, utom uttryckligen dokumenterade anslutningspunkter. Nätverksspecifika tillägg och inställningar anges i texten.