Hvis du har vært på Internet Relay Chat (IRC), er sjansen stor for at du har møtt en bot på et tidspunkt. Bots er uavhengige programmer eller skript som kobles til et nettverk på samme måte som et menneske ville gjort. De kan programmeres til å svare på brukerkommandoer eller til og med chatte. I denne guiden kan du finne ut hva alternativene dine er for å bygge en IRC-bot, samt hvordan du bygger en fra bunnen av.
Fremgangsmåte
Metode en av 2: Evaluering av alternativer
- en Vurder å installere et klientscript. Noen ganger vil du bare ha en enkel oppgave utført og ikke vil at det skal være et uavhengig program. I så fall kan du legge ved et skript til en IRC-klient. Dette er ganske vanlig å gjøre med mIRC , som har en robust skriptmotor og et bredt utvalg av tilgjengelige skript. Dette er det enkleste alternativet og anbefales på det sterkeste hvis du ikke har mye eller noen programmeringserfaring. For resten av denne veiledningen krever instruksjonene litt kunnskap om dataprogrammering å følge.
- 2 Vurder en eksisterende kodebase for boten din. Det finnes mange åpen kildekode og gratis programmer som kan hjelpe deg med å sette opp din egen tilpassede bot raskt. Et slikt eksempel er Eggedrop , den eldste IRC-bot som fortsatt blir vedlikeholdt.
- 3 Vurder å skrive din egen bot. For avanserte IRC-brukere og utviklere som allerede vet veien rundt et programmeringsspråk, er dette et flott alternativ. Du kan bruke stort sett hvilket som helst språk du vil så lenge det har socket-støtte, men populære å bruke inkluderer Python, Lua, PHP, C og Perl. Hvis du ikke kjenner noen av disse, men du kjenner et annet språk, er det ikke noe problem. Du kan vanligvis finne eksempler på nettet på hvilket som helst språk du vil ha. For denne artikkelen vil vi demonstrere bruk av PHP. For å bruke PHP, må du ha PHP-CLI installert på datamaskinen eller serveren.
- PHP kan lastes ned fra php.net
- PHP-skript kan kjøres fra kommandolinjen. For mer informasjon og hjelp til å bruke PHP, se denne siden med PHP-manualer .
Metode 2 av 2: Utvikle din egen bot
- en Samle tilkoblingsdetaljene. Du må få følgende informasjon for å kunne koble til nettverket.
- Server : Domenenavnet på serveren som brukes til å koble til IRC, for eksempel
chat.freenode.net
- Havn : I de fleste tilfeller er dette 6667, men hvis du ikke er sikker, sjekk din egen IRC-klient eller nettverkets nettsted.
- Kallenavn : Kallenavnet din bot skal bruke. Husk at noen spesialtegn vanligvis ikke er tillatt (@ #! ~).
- Ident : Ident-feltet vises etter kallenavnet når noen utfører en WHOIS som dette:
nickname!ident@hostname
- GECOS : Dette feltet inneholder vanligvis brukerens virkelige navn eller en generell beskrivelse av boten, men du kan plassere det du vil der inne.
- Kanal : Du vil vanligvis at boten din skal være til stede i en eller flere kanaler. På de fleste nettverk er disse prefikset med '#', men det kan være noe annet.
- Server : Domenenavnet på serveren som brukes til å koble til IRC, for eksempel
- 2 Initialiser konfigurasjonen i skriptet. Den mest grunnleggende måten å gjøre dette på er ved å navngi noen variabler i henhold til konfigurasjonsnavnene ovenfor. Du kan også lagre dem i en konfigurasjonsfil og analysere dem, men akkurat nå holder vi oss bare til de absolutte nødvendighetene.
- 3 Koble til nettverket. For å gjøre dette må du åpne en stikkontakt til serveren i den angitte porten. Du bør også legge til noen feilhåndteringskoder i denne delen i tilfelle forbindelsen mislykkes av en eller annen grunn. I dette tilfellet gir PHP oss noen pene funksjoner for å håndtere feilen effektivt.
- 4 Registrer boten din. Dette betyr å levere kallenavn, identitet og GECOS til serveren, ikke registrerer seg hos NickServ. For å gjøre dette er det bare å skrive NICK- og USER-kommandoene til serveren, etterfulgt av vognretur og ny linje. Det er viktig at du gjør det nøyaktig som vist, for det er slik det er spesifisert i RFC1459, spesifikasjonen for IRC-protokollen.
- Merk at de to midterste parameterne (i dette tilfellet * og 8) må spesifiseres, men de ignoreres av serveren. Disse to brukes bare mellom koblede servere, ikke av en direkte koblende klient.
- 5 Fortsett å hente data fra kontakten ved hjelp av en løkke. Hvis du ikke brukte en løkke, ville skriptet ditt umiddelbart avsluttet, og boten ville i utgangspunktet være ubrukelig. For å holde kontakten, må du hente data fra serveren, se etter eventuelle innganger i strømmen du vil ha, og svare på det i så fall. Her tar vi tak i data ved hjelp av socket_read () for å hente alle tilgjengelige data for oss. Hvis det er, fortsetter vi å gjøre hva som helst i løkken. Det kan være nyttig å også sende rådata til konsollen slik at du kan se hva som skjer fra botens perspektiv.
- 6 Skriv en pingbehandler. Dette er viktig. Hvis du ikke svarer på pinger i tide, kobler serveren deg fra. La oss ta oss av det først. Pings ser slik ut når de sendes fra serveren:
PING :rajaniemi.freenode.net
. Serveren trenger ikke å sette navnet sitt etter ':', den kan levere hva den vil. Du må * gjenta nøyaktig hva serveren sa, bortsett fra å bruke PONG. - 7 Bli med på kanalene dine. Ok, så vi har en bot som kobler seg til nettverket og reagerer på ping, men ellers gjør ingenting. For at folk skal se og bruke boten din, bør den være i en kanal (ellers må du fortelle den å svare på private meldinger).
- For å gjøre dette, ser vi etter serverstatuskoder 376 eller 422. 376 betyr MOTD (dagens melding) ferdig. 422 betyr at det ikke var noen MOTD å sende. At MOTD bare er noe serveren sender når du kobler til, men det er en god indikator for når vi kan begynne å bli med i kanaler.
- Du må utstede en JOIN-kommando. Denne kommandoen kan følges av en eller flere kanaler atskilt med et komma.
- Legg merke til at dataene serveren sender er avgrenset av mellomrom. På denne måten kan vi dele dataene og referere til dem ved hjelp av en matriseindeks.
- 8 Svar på kanalmeldinger. Nå for den morsomme delen. Boten din har sluttet seg til kanalen, så nå kan du bruke den til det du ønsket. La oss lage en eksempelkommando kalt @moo.
- Legg merke til forskyvningen der meldinger begynner (dette gjelder både kanaler og private meldinger). Det er alltid på samme sted.
- Du kan håndtere kommandoer med mellomrom ved å spleise de delte dataene sammen igjen ($ d). Det er utenfor omfanget av denne artikkelen.
- Hvis målet er en kanal (for eksempel # botters-test), så svarer du på det. Hvis det er en privat melding, vil denne biten være kallenavnet til boten din! Du må da svare med avsenderens kallenavn, ikke ditt (ellers vil du snakke med deg selv, og det er bare dumt).
- 9 Utvid bot. Du kan legge til mange nye funksjoner ved hjelp av implementeringen ovenfor. Det er mange andre kommandoer som kan utstedes til IRC-nettverket, for eksempel administrere ops, sparke og forby, sette temaet, blant mange andre funksjoner. Annonse
Samfunnsspørsmål og svar
Søk Legg til nytt spørsmål- Spørsmål Når jeg legger til dem i notisblokk +, hvor legger jeg til disse kodene? flyr 8 mangel Sett dem på en webserver (for eksempel Apache) som støtter PHP. Du kan installere XXAMP på din lokale datamaskin, eller være vert for dem på en annen webserver.
Annonse
Tips
- Du kan produsere resultatet av kommandoen '/ me' ved å prefikse meldingene dine slik:
- PRIVMSG #channel: 001ACTION tekst her 001 .
- 001 betyr ASCII-tegn 1 og tolkes slik i en dobbel sitert PHP-streng. Alternativt kan du bruke
chr(1)
utenfor strengen.
- Farger kan produseres i en melding ved å prefikse ' 003' (ASCII-kode 3) etterfulgt av et tall for en farge. 0 = hvit, 1 = svart, 2 = blå, 3 = grønn, 4 = rød [...]. Se mIRC siden for flere farger.
- Hilsen, få samtykke fra kanaleiere og IRC-operatører før du bringer boten din online. Ikke alle nettverk og kanaler har en velkomstpolitikk mot roboter, til og med veloppførte.
- Noen IRC-demoner går utover spesifikasjonene i protokollen og implementerer andre funksjoner. Hvis du gir det til et bestemt nettverk, kan du absolutt bruke disse funksjonene hvis du vet om protokollen deres. Hvis du vil at boten din skal distribueres i flere nettverk, kan du prøve å holde den til det som er i RFC.
Annonse Send et tips Alle tipsinnleveringer blir nøye gjennomgått før de blir publisert. Takk for at du sendte et tips til gjennomgang!