Hur man utvecklar en IRC Bot: 12 steg (med bilder)

Innehållsförteckning:

Hur man utvecklar en IRC Bot: 12 steg (med bilder)
Hur man utvecklar en IRC Bot: 12 steg (med bilder)

Video: Hur man utvecklar en IRC Bot: 12 steg (med bilder)

Video: Hur man utvecklar en IRC Bot: 12 steg (med bilder)
Video: 12 TIPS HUR DU FÅR BADET FÖR DIG SJÄLV 2024, April
Anonim

Om du har varit på Internet Relay Chat (IRC) är chansen stor att du har stött på en bot någon gång. Bots är oberoende program eller skript som ansluter till ett nätverk på samma sätt som en människa skulle. De kan programmeras för att svara på användarkommandon eller till och med chatta. I den här guiden kan du hitta vilka alternativ du har för att bygga en IRC -bot samt hur du bygger en från grunden.

Steg

Metod 1 av 2: Utvärderingsalternativ

Utveckla ett IRC Bot Steg 1
Utveckla ett IRC Bot Steg 1

Steg 1. Överväg att installera ett klientskript

Ibland vill du bara ha en enkel uppgift utförd och vill inte att det ska vara ett oberoende program. I så fall kan du bifoga ett skript till en IRC -klient. Detta är ganska vanligt att göra med mIRC, som har en robust skriptmotor och en mängd olika tillgängliga skript. Detta är det enklaste alternativet och rekommenderas starkt om du inte har mycket eller någon programmeringserfarenhet. För resten av denna guide kräver instruktionerna viss kunskap om datorprogrammering för att följa.

Utveckla ett IRC Bot Steg 2
Utveckla ett IRC Bot Steg 2

Steg 2. Överväg en redan existerande kodbas för din bot

Det finns många öppen källkod och gratisprogram som kan hjälpa dig att snabbt skapa din egen anpassade bot. Ett sådant exempel är Eggdrop, den äldsta IRC -boten som fortfarande underhålls.

Utveckla ett IRC Bot Steg 3
Utveckla ett IRC Bot Steg 3

Steg 3. Överväg att skriva din egen bot

För avancerade IRC -användare och utvecklare som redan kan sin väg runt ett programmeringsspråk är detta ett bra alternativ. Du kan använda i stort sett vilket språk du vill så länge det har stöd för socket, men populära att använda inkluderar Python, Lua, PHP, C och Perl. Om du inte kan något av dessa men du kan ett annat språk är det inget problem. Du kan vanligtvis hitta exempel på webben på vilket språk du vill. För den här artikeln demonstrerar vi med PHP. För att kunna använda PHP måste du ha PHP-CLI installerat på din dator eller server.

  • PHP kan laddas ner från php.net
  • PHP -skript kan köras från kommandoraden. Mer information och hjälp med PHP finns på denna PHP -manualsida.

Metod 2 av 2: Utveckla din egen bot

Utveckla ett IRC Bot Steg 4
Utveckla ett IRC Bot Steg 4

Steg 1. Samla anslutningsdetaljer

Du måste få följande information för att kunna ansluta till nätverket.

  • Server: Domännamnet på servern som används för att ansluta till IRC, t.ex.

    chat.freenode.net

  • Hamn: I de flesta fall är detta 6667, men om du är osäker, kolla din egen IRC -klient eller nätverkets webbplats.
  • Smeknamn: Smeknamnet din bot ska använda. Tänk på att vissa specialtecken vanligtvis inte är tillåtna (@#! ~).
  • Ident: Identfältet visas efter smeknamnet när någon utför en WHOIS så här:

    smeknamn! ident@värdnamn

  • GECOS: Detta fält innehåller vanligtvis en användares riktiga namn eller en allmän beskrivning av boten, men du kan lägga in vad du vill där.
  • Kanal: Du brukar vilja att din bot ska finnas i en eller flera kanaler. På de flesta nätverk har dessa prefix med "#" men det kan vara något annat.
Utveckla ett IRC Bot Steg 5
Utveckla ett IRC Bot Steg 5

Steg 2. Initiera konfigurationen i ditt skript

Det mest grundläggande sättet att göra detta är genom att namnge några variabler enligt konfigurationsnamnen ovan. Du kan också lagra dem i en konfigurationsfil och analysera dem, men just nu håller vi oss till de absoluta nödvändigheterna.

Utveckla ett IRC Bot Steg 6
Utveckla ett IRC Bot Steg 6

Steg 3. Anslut till nätverket

För att göra detta måste du öppna ett uttag till servern på den angivna porten. Du bör också lägga till lite felhanteringskod i den här delen om anslutningen misslyckas av någon anledning. I det här fallet ger PHP oss några snygga funktioner för att hantera felet effektivt.

Utveckla ett IRC Bot Steg 7
Utveckla ett IRC Bot Steg 7

Steg 4. Registrera din bot

Det innebär att du tillhandahåller ditt smeknamn, ident och GECOS till servern, inte registrerar dig hos NickServ. För att göra detta, skriv bara NICK- och USER -kommandona till servern, följt av en vagnretur och ny rad. Det är absolut nödvändigt att du gör det exakt som visas, för det är så det anges i RFC1459, specifikationen för IRC -protokollet.

Observera att de två mellersta parametrarna (i detta fall, * och 8) måste anges, men de ignoreras av servern. Dessa två används endast mellan länkade servrar, inte av en direkt anslutande klient

Utveckla ett IRC Bot Steg 8
Utveckla ett IRC Bot Steg 8

Steg 5. Fortsätt hämta data från uttaget med hjälp av en loop

Om du inte använde en loop skulle ditt skript omedelbart avslutas och boten skulle i princip vara värdelös. För att hålla kontakten måste du hämta data från servern, leta efter eventuell ingång i strömmen och svara på den i så fall. Här tar vi tag i data med hjälp av socket_read () för att fånga all tillgänglig data för oss. Om det finns, fortsätter vi att göra vad som helst. Det kan vara till hjälp att även mata ut rådata till konsolen så att du kan se vad som händer från botens perspektiv.

Utveckla ett IRC Bot Steg 9
Utveckla ett IRC Bot Steg 9

Steg 6. Skriv en pinghanterare

Det här är viktigt. Om du inte svarar på pingar i tid kopplar servern från dig. Låt oss ta hand om det först. Pings ser ut så här när de skickas från servern:

PING: rajaniemi.freenode.net

. Servern behöver inte ange sitt namn efter ':', den kan leverera vad den vill. Du * måste * upprepa exakt vad servern sa, förutom att använda PONG.

Utveckla ett IRC Bot Steg 10
Utveckla ett IRC Bot Steg 10

Steg 7. Gå med i dina kanaler

Okej, så vi har en bot som ansluter till nätverket och svarar på ping, men annars gör ingenting. För att människor ska kunna se och använda din bot bör den finnas i en kanal (annars måste du berätta för den att svara på privata meddelanden).

  • För att göra detta kommer vi att söka efter serverstatuskoder 376 eller 422. 376 betyder att MOTD (dagens meddelande) är klar. 422 betyder att det inte fanns någon MOTD att skicka. Att MOTD bara är något servern skickar när du ansluter, men det är en bra indikator för när vi kan börja gå med i kanaler.
  • Du måste utfärda ett JOIN -kommando. Detta kommando kan följas av en eller flera kanaler separerade med ett kommatecken.
  • Observera att data som servern skickar är avgränsade av mellanslag. På så sätt kan vi dela upp data och referera till dem med hjälp av ett arrayindex.
Utveckla ett IRC Bot Steg 11
Utveckla ett IRC Bot Steg 11

Steg 8. Svara på kanalmeddelanden

Nu till det roliga. Din bot har gått med i kanalen, så nu kan du använda den för det du ville. Låt oss skapa ett exempelkommando som heter @moo.

  • Observera förskjutningen där meddelanden börjar (detta gäller både kanaler och privata meddelanden). Det är alltid på samma ställe.
  • Du kan hantera kommandon med mellanslag i dem genom att splitsa tillbaka de delade data ($ d). Det ligger utanför ramen för denna artikel.
  • Om målet är en kanal (t.ex. #botters-test), svarar du på det. Om det är ett privat meddelande kommer den här biten att vara din bots smeknamn! Du måste sedan svara med avsändarens smeknamn, inte ditt (annars skulle du prata med dig själv, och det är bara dumt).
Utveckla ett IRC Bot Steg 12
Utveckla ett IRC Bot Steg 12

Steg 9. Förläng din bot

Du kan lägga till många nya funktioner med hjälp av ovanstående implementering. Det finns många andra kommandon som kan utfärdas till IRC -nätverket, till exempel att hantera ops, sparka och förbjuda, ställa in ämnet, bland många andra funktioner.

Tips

  • Du kan skapa resultatet av kommandot "/me" genom att prefixa dina meddelanden så här:

    • PRIVMSG #channel: / 001ACTION text här / 001.
    • 001 betyder ASCII -tecken 1 och kommer att tolkas som sådant i en dubbelciterad PHP -sträng. Alternativt kan du använda

      chr (1)

    • utanför strängen.
  • Färger kan produceras i ett meddelande genom att prefixa "\ 003" (ASCII -kod 3) följt av ett nummer för en färg. 0 = vit, 1 = svart, 2 = blå, 3 = grön, 4 = röd […]. Se mIRCs sida för fler färger.
  • Av artighet, få samtycke från kanalägare och IRC -operatörer innan du lägger din bot online. Inte alla nätverk och kanaler har en välkommen politik mot bots, även välskötta.
  • Vissa IRC -demoner går utöver protokollets specifikationer och implementerar andra funktioner. Om du gör det för ett specifikt nätverk kan du verkligen använda dessa funktioner om du känner till deras protokoll. Om du vill att din bot ska distribueras på flera nätverk, försök dock att hålla den till vad som finns i RFC.

Rekommenderad: