Naar de inhoud
Dialova

IRC-documentatie · Gevorderd

Een IRC-bot begrijpen en ontwikkelen

Een IRC-bot is een programma dat als client met een netwerk verbindt. Het kan gebeurtenissen volgen, op opdrachten antwoorden of een chatroom levendig houden. Betrouwbaarheid hangt vooral af van protocolverwerking, rechten en de snelheid waarmee berichten worden gestuurd.

Dialova-team · Gecontroleerd op

De cyclus van een bot #

  1. Open een TLS-verbinding en controleer het certificaat.
  2. Onderhandel CAP en authenticeer daarna het account als het beleid dat vereist.
  3. Geef de IRC-identiteit door en wacht tot registratie voltooid is.
  4. Open toegestane chatrooms en verwerk berichten, fouten en gebeurtenissen.
  5. Beantwoord PING, beperk verzending en zorg voor geleidelijk opnieuw verbinden.
Fragment van een al geregistreerde en toegestane sessie
S: PING :jeton-123
C: PONG :jeton-123
S: :Alice!alice@cloak.example PRIVMSG #atelier :!bonjour
C: PRIVMSG #atelier :Bonjour Alice !

Dit fragment toont de gegevensstroom. Het is geen compleet uitvoerbaar programma. Een onderhouden IRC-bibliotheek kan transport en grammatica afhandelen. Ga er niet vanuit dat elke netwerkleesactie een volledige regel geeft.

Protocol, regels en acties scheiden #

OnderdeelVerantwoordelijkheid
Transport en parserTLS, bytes, CRLF, gedeeltelijke berichten en grenzen.
IRC-statusRegistratie, capabilities, chatrooms, identiteit en wijzigingen.
BotlogicaEen verzoek herkennen, de voorwaarden controleren en een voorgenomen actie maken.
Uitgaande wachtrijSnelheid beperken, volgorde bewaren en herhaalde verzending bij herverbinden voorkomen.

Vertrouw niet alleen op een nickname #

Een deelnemer kan de naam veranderen of syntax nabootsen. Gebruik bij gevoelige acties waar beschikbaar een door de server bevestigde identiteit. Controleer daarna de rechten voor de actie. Geef een spelbot niet zomaar operatorrechten alleen om te kunnen praten.

Ontvangen tekst is onbetrouwbare invoer. Geef die niet door aan een shell, een door tekstsamenvoeging gemaakte query of een code-uitvoerder. Verbindingsgeheimen horen in privéconfiguratie, niet in een repository of botantwoord.

Flood en lussen voorkomen #

Het netwerk bepaalt limieten. Er is geen universeel veilige verzendsnelheid. Reageer op fouten, bundel uitvoer waar nuttig en begrens acties per gebruiker en chatroom. Gebruik oplopende wachttijden voor herverbinden, geen directe lus.

Antwoord niet automatisch op NOTICE en voer oude gebruikersopdrachten niet opnieuw uit bij geschiedenisweergave. Met echo-message kan je eigen uitvoer terugkomen. Onderscheid die van inkomende verzoeken.

Bobot op Dialova #

Bobot verzorgt onder meer chatroomspellen op Dialova. Het is iets anders dan de grafische spellen en ledenaccounts. Dit laat zien dat een geautomatiseerde client een community kan aanvullen zonder een eigen gesloten chatprotocol.

Bronnen en controle

De voorbeelden gebruiken fictieve gebruikersnamen en domeinen, behalve waar verbindingspunten uitdrukkelijk zijn gedocumenteerd. Uitbreidingen en netwerkspecifieke instellingen worden in de tekst aangegeven.