Om du har varit på Internet Relay Chat (IRC), är chansen 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 man bygger en från grunden.
Steg
Metod ett av 2: Utvärdera alternativ
- ett Överväg att installera ett klientskript. Ibland vill du bara göra en enkel uppgift och inte vill 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 ett stort antal 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 att följa.
- 2 Tänk på en befintlig 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 Äggdroppe , den äldsta IRC-boten som fortfarande underhålls.
- 3 Överväg att skriva din egen bot. För avancerade IRC-användare och utvecklare som redan känner till ett programmeringsspråk är detta ett utmärkt alternativ. Du kan använda i stort sett vilket språk du vill så länge det har sockelstöd, men populära att använda inkluderar Python, Lua, PHP, C och Perl. Om du inte känner till något av dessa men vet 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 kommer vi att demonstrera att använda 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. För mer information och hjälp med PHP, se denna PHP-handbokssida .
Metod 2 av 2: Utveckla din egen bot
- ett Samla anslutningsdetaljerna. 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, till exempel
chat.freenode.net
- Hamn : I de flesta fall är detta 6667, men om du inte är sä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 : Ident-fältet visas efter smeknamnet när någon utför en WHOIS så här:
nickname!ident@hostname
- GECOS : Det här fältet innehåller vanligtvis en användares riktiga namn eller en allmän beskrivning av botten men du kan placera vad du vill där.
- Kanal : Du vill vanligtvis att din bot ska finnas i en eller flera kanaler. I de flesta nätverk är dessa prefixade med '#' men det kan vara något annat.
- Server : Domännamnet på servern som används för att ansluta till IRC, till exempel
- 2 Initiera konfigurationen i ditt skript. Det mest grundläggande sättet att göra detta är 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 bara med de absoluta nödvändigheterna.
- 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 en felhanteringskod i den här delen om anslutningen av någon anledning misslyckas. I det här fallet ger PHP oss några snygga funktioner för att hantera felet effektivt.
- 4 Registrera din bot. Detta innebär att du levererar ditt smeknamn, identitet och GECOS till servern, inte registrerar sig hos NickServ. För att göra detta, skriv bara kommandona NICK och USER till servern, följt av en vagnretur och ny linje. Det är absolut nödvändigt att du gör det exakt som visat, för det är så det specificeras 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 direktanslutande klient.
- 5 Fortsätt hämta data från uttaget med en slinga. Om du inte använde en loop skulle ditt skript omedelbart avslutas och botten i princip vara värdelös. För att hålla kontakten måste du hämta data från servern, söka efter eventuell ingång i strömmen du vill ha och svara på den i så fall. Här hämtar vi 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 i slingan. Det kan vara till hjälp att också skicka rådata till konsolen så att du kan se vad som händer ur botens perspektiv.
- 6 Skriv en pinghanterare. Det här är viktigt. Om du inte svarar på pingar i rätt tid kommer kopplingen att kopplas 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 lägga sitt namn efter ':', den kan leverera vad den vill. Du * måste * upprepa exakt vad servern sa, förutom att använda PONG. - 7 Gå med i dina kanaler. Okej, så vi har en bot som ansluter till nätverket och svarar på pingar, men annars gör ingenting. För att människor ska kunna se och använda din bot bör den vara i en kanal (annars måste du be den att svara på privata meddelanden).
- För att göra detta kontrollerar vi om 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 som servern skickar när du ansluter, men det är en bra indikator för när vi kan börja ansluta till kanaler.
- Du måste utfärda ett JOIN-kommando. Detta kommando kan följas av en eller flera kanaler åtskilda av ett kommatecken.
- Observera att data som servern skickar avgränsas bekvämt av mellanslag. På så sätt kan vi dela upp data och referera till dem med hjälp av ett matrisindex.
- 8 Svara på kanalmeddelanden. Nu för den roliga delen. 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 plats.
- Du kan hantera kommandon med mellanslag genom att skarva ihop de bitade data ($ d). Det är utanför ramen för denna artikel.
- Om målet är en kanal (som # botters-test), svarar du på det. Om det är ett privat meddelande kommer den här biten att vara ditt 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).
- 9 Förläng din bot. Du kan lägga till många nya funktioner med implementeringen ovan. Det finns många andra kommandon som kan utfärdas till IRC-nätverket, som att hantera ops, sparka och förbjuda, ställa in ämnet bland många andra funktioner. Annons
Gemensamma frågor och svar
Sök Lägg till ny fråga- Fråga När lägger jag till dem i anteckningsblock +, var lägger jag till dessa koder? flygande 8 Sätt dem på en webbserver (som Apache) som stöder PHP. Du kan installera XXAMP på din lokala dator eller vara värd för dem på en annan webbserver.
Annons
Tips
- Du kan producera 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 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 [...]. Ser mIRC sida för fler färger.
- Med tillåtelse får du samtycke från kanalägare och IRC-operatörer innan du tar din bot online. Inte alla nätverk och kanaler har en välkommen policy gentemot bots, även väluppfostrade.
- Vissa IRC-demoner går utöver specifikationerna för protokollet och implementerar andra funktioner. Om du använder 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 i flera nätverk, försök dock hålla den till vad som finns i RFC.
Annons Skicka ett tips Alla tipsinlägg granskas noggrant innan de publiceras Tack för att du skickar ett tips för granskning!