Hoe een IRC-bot te ontwikkelen

Als je op Internet Relay Chat (IRC) bent geweest, is de kans groot dat je ooit een bot bent tegengekomen. Bots zijn onafhankelijke programma's of scripts die op dezelfde manier met een netwerk worden verbonden als een mens. Ze kunnen worden geprogrammeerd om te reageren op gebruikersopdrachten of zelfs om te chatten. In deze gids kun je vinden wat je opties zijn om een ​​IRC-bot te bouwen en hoe je er een helemaal opnieuw kunt bouwen.



Methode een van 2: Opties evalueren

  1. een Overweeg om een ​​clientscript te installeren. Soms wil je gewoon een simpele taak gedaan hebben en wil je niet dat het een onafhankelijk programma is. In dat geval kunt u een script aan een IRC-client koppelen. Dit komt vrij vaak voor mIRC , die een robuuste script-engine en een grote verscheidenheid aan beschikbare scripts heeft. Dit is de gemakkelijkste optie en wordt ten zeerste aanbevolen als je niet veel of geen programmeerervaring hebt. Voor de rest van deze handleiding is enige kennis van computerprogrammering vereist om de instructies te volgen.
  2. 2 Overweeg een reeds bestaande codebase voor uw bot. Er bestaan ​​veel open source en gratis programma's die u kunnen helpen snel uw eigen aangepaste bot op te zetten. Een voorbeeld hiervan is Eggdrop , de oudste IRC-bot die nog steeds wordt onderhouden.
  3. 3 Overweeg om je eigen bot te schrijven. Voor gevorderde IRC-gebruikers en ontwikkelaars die al bekend zijn met een programmeertaal, is dit een geweldige optie. Je kunt vrijwel elke gewenste taal gebruiken, zolang deze socket-ondersteuning heeft, maar populaire om te gebruiken zijn Python, Lua, PHP, C en Perl. Als u geen van deze kent, maar wel een andere taal, is dat geen probleem. U kunt meestal voorbeelden op internet vinden in elke gewenste taal. Voor dit artikel demonstreren we het gebruik van PHP. Om PHP te gebruiken, moet PHP-CLI op uw computer of server zijn geïnstalleerd.
    • PHP kan worden gedownload van php.net
    • PHP-scripts kunnen vanaf de opdrachtregel worden uitgevoerd. Zie voor aanvullende informatie en hulp bij het gebruik van PHP deze PHP-handleiding .
    Advertentie

Methode 2 van 2: Uw eigen bot ontwikkelen

  1. een Verzamel de verbindingsdetails. U heeft de volgende informatie nodig om verbinding te maken met het netwerk.
    • Server : De domeinnaam van de server die wordt gebruikt om verbinding te maken met IRC, zoals chat.freenode.net
    • Haven : In de meeste gevallen is dit 6667, maar als u het niet zeker weet, controleer dan uw eigen IRC-client of de website van het netwerk.
    • Bijnaam : De bijnaam die uw bot moet gebruiken. Houd er rekening mee dat sommige speciale tekens meestal niet zijn toegestaan ​​(@ #! ~).
    • Ident : Het ident-veld verschijnt achter de bijnaam wanneer iemand een WHOIS uitvoert als volgt: nickname!ident@hostname
    • GECOS : Dit veld bevat meestal de echte naam van een gebruiker of een algemene beschrijving van de bot, maar je kunt er alles in plaatsen wat je wilt.
    • Kanaal : Meestal wil je dat je bot aanwezig is in een of meer kanalen. Op de meeste netwerken hebben deze het voorvoegsel '#', maar het kan iets anders zijn.
  2. 2 Initialiseer de configuratie in uw script. De eenvoudigste manier om dit te doen, is door een paar variabelen een naam te geven volgens de configuratienamen hierboven. Je zou ze ook kunnen opslaan in een configuratiebestand en ze kunnen ontleden, maar voorlopig houden we het bij de absolute noodzaak.
  3. 3 Maak verbinding met het netwerk. Om dit te doen, moet u een socket naar de server openen op de opgegeven poort. U moet in dit deel ook een foutafhandelingscode toevoegen voor het geval de verbinding om welke reden dan ook mislukt. In dit geval biedt PHP ons een aantal handige functies om de fout effectief af te handelen.
  4. 4 Registreer uw bot. Dit betekent dat u uw bijnaam, ident en GECOS aan de server moet verstrekken, niet registreren bij NickServ. Om dit te doen, schrijft u gewoon de opdrachten NICK en USER naar de server, gevolgd door een regelterugloop en een nieuwe regel. Het is absoluut noodzakelijk dat u het precies doet zoals getoond, want dat is hoe het wordt gespecificeerd in RFC1459, de specificatie voor het IRC-protocol.
    • Merk op dat de middelste twee parameters (in dit geval * en 8) moeten worden gespecificeerd, maar ze worden genegeerd door de server. Die twee worden alleen gebruikt tussen gekoppelde servers, niet door een rechtstreeks verbonden client.
  5. 5 Blijf gegevens uit de socket ophalen met behulp van een lus. Als je geen lus zou gebruiken, zou je script onmiddellijk worden beëindigd en zou de bot in feite nutteloos zijn. Om verbonden te blijven, moet u gegevens van de server ophalen, controleren op eventuele invoer in de gewenste stream en hierop reageren als dat het geval is. Hier verzamelen we gegevens met socket_read () om alle gegevens te verzamelen die voor ons beschikbaar zijn. Als dat het geval is, blijven we doen wat er op de hoogte is. Het kan handig zijn om ook de onbewerkte gegevens naar de console te sturen, zodat je kunt zien wat er gebeurt vanuit het perspectief van de bot.
  6. 6 Schrijf een ping-handler. Dit is belangrijk. Als u niet tijdig op pings reageert, zal de server uw verbinding verbreken. Laten we daar eerst voor zorgen. Pings zien er als volgt uit wanneer ze vanaf de server worden verzonden: PING :rajaniemi.freenode.net. De server hoeft zijn naam niet achter de ':' te zetten, hij kan leveren wat hij wil. Je * moet * precies herhalen wat de server zei, behalve door PONG te gebruiken.
  7. 7 Sluit je aan bij je kanalen. Oké, dus we hebben een bot die verbinding maakt met het netwerk en reageert op pings, maar verder niets doet. Om mensen je bot te laten zien en gebruiken, moet deze zich in een kanaal bevinden (anders zou je hem moeten vertellen om op privéberichten te reageren).
    • Om dit te doen, controleren we op serverstatuscodes 376 of 422. 376 betekent dat de MOTD (bericht van de dag) is afgelopen. 422 betekent dat er geen MOTD was om te verzenden. Die MOTD is gewoon iets dat de server verzendt als je verbinding maakt, maar het is een goede indicator voor wanneer we kunnen beginnen met het aansluiten van kanalen.
    • U moet een JOIN-opdracht geven. Dit commando kan worden gevolgd door een of meer kanalen gescheiden door een komma.
    • Merk op dat de gegevens die de server verzendt handig worden afgebakend door spaties. Op deze manier kunnen we de gegevens splitsen en ernaar verwijzen met behulp van een array-index.
  8. 8 Reageer op kanaalberichten. Nu voor het leuke gedeelte. Je bot is lid geworden van het kanaal, dus nu kun je hem gebruiken voor wat je wilde. Laten we een voorbeeldopdracht maken met de naam @moo.
    • Let op de verschuiving waar berichten beginnen (dit geldt voor zowel kanalen als privéberichten). Het is altijd op dezelfde plek.
    • U kunt opdrachten met spaties erin verwerken door de gesplitste gegevens weer aan elkaar te koppelen ($ d). Dat valt buiten het bestek van dit artikel.
    • Als het doel een kanaal is (zoals # botters-test), dan reageer je daarop. Als het een privébericht is, wordt dit bit de bijnaam van je bot! U moet dan antwoorden met de bijnaam van de afzender, niet die van u (anders zou u tegen uzelf praten, en dat is gewoon dom).
  9. 9 Breid je bot uit. U kunt veel nieuwe functies toevoegen met behulp van de bovenstaande implementatie. Er zijn veel andere commando's die aan het IRC-netwerk kunnen worden gegeven, zoals het beheren van ops, schoppen en verbannen, het onderwerp instellen, naast vele andere functies. Advertentie

Community Q&A

Zoeken Nieuwe vraag toevoegen
  • Vraag Waar moet ik deze codes toevoegen nadat ik ze in kladblok + heb toegevoegd? vliegende 8lack Zet ze op een webserver (zoals Apache) die PHP ondersteunt. U kunt XXAMP op uw lokale computer installeren of ze hosten op een andere webserver.
Stel een vraag 200 tekens over. Voeg uw e-mailadres toe om een ​​bericht te ontvangen wanneer deze vraag is beantwoord. Verzenden
Advertentie

Tips

  • U kunt het resultaat van het '/ me'-commando produceren door uw berichten als volgt voor te voegen:
    • PRIVMSG #channel: 001ACTION tekst hier 001 .
    • 001 betekent ASCII-teken 1 en wordt als zodanig geïnterpreteerd in een PHP-string tussen dubbele aanhalingstekens. U kunt ook chr(1) gebruiken buiten de string.
  • Kleuren kunnen in een bericht worden geproduceerd door ' 003' (ASCII-code 3) voor te voegen, gevolgd door een nummer voor een kleur. 0 = wit, 1 = zwart, 2 = blauw, 3 = groen, 4 = rood [...]. Zien mIRC 's pagina voor meer kleuren.
  • Vraag uit beleefdheid om toestemming van kanaaleigenaren en IRC-operators voordat je je bot online brengt. Niet alle netwerken en kanalen hebben een welkom beleid ten opzichte van bots, zelfs niet goed opgevoede.
  • Sommige IRC-daemons gaan verder dan de specificaties van het protocol en implementeren andere functies. Als u het afstemt op een specifiek netwerk, kunt u zeker gebruik maken van die functies als u op de hoogte bent van hun protocol. Als u echter wilt dat uw bot op verschillende netwerken wordt geïmplementeerd, probeer deze dan te houden aan wat er in de RFC staat.

Advertentie Dien een tip in Alle inzendingen van fooien worden zorgvuldig beoordeeld voordat ze worden gepubliceerd. Bedankt voor het indienen van een tip ter beoordeling!

Populaire Onderwerpen

Alexander Zverev neemt het op tegen Kevin Anderson in een kaskraker in de eerste ronde van 2020 US Open. Het paar ontmoette elkaar 5 keer in de Tour, waarbij Zverev Anderson met 5-0 leidde in hun h2h.

Tim Henman is van mening dat het kiezen van Novak Djokovic als titelfavoriet 'niet echt uit de bol gaan'. De Brit beweerde ook dat Dominic Thiem de beste speler ter wereld is na Djokovic en Rafael Nadal.

Hier is alles wat je moet weten om alle UFC 248 prelim-gevechten live online zonder kabel te bekijken als je in de Verenigde Staten bent.

Hier leest u hoe u de basketbalwedstrijd VCU vs North Texas van vandaag live online kunt bekijken.