Hoe een IRC Bot te ontwikkelen: 12 stappen (met afbeeldingen)

Inhoudsopgave:

Hoe een IRC Bot te ontwikkelen: 12 stappen (met afbeeldingen)
Hoe een IRC Bot te ontwikkelen: 12 stappen (met afbeeldingen)

Video: Hoe een IRC Bot te ontwikkelen: 12 stappen (met afbeeldingen)

Video: Hoe een IRC Bot te ontwikkelen: 12 stappen (met afbeeldingen)
Video: Hoe Builderall te promoten-9 manieren om Builderall te promoten 2024, Maart
Anonim

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 verbinding maken met een netwerk als een mens. Ze kunnen worden geprogrammeerd om te reageren op gebruikerscommando's of zelfs om te chatten. In deze gids kun je vinden wat je opties zijn voor het bouwen van een IRC-bot en hoe je er een helemaal opnieuw kunt bouwen.

Stappen

Methode 1 van 2: Opties evalueren

Ontwikkel een IRC Bot Stap 1
Ontwikkel een IRC Bot Stap 1

Stap 1. Overweeg een clientscript te installeren

Soms wil je gewoon een simpele taak gedaan hebben en niet dat het een onafhankelijk programma is. In dat geval kun je een script koppelen aan een IRC-client. Dit komt vrij vaak voor bij mIRC, dat een robuuste scripting-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 vereisen de instructies enige kennis van computerprogrammering om te volgen.

Ontwikkel een IRC Bot Stap 2
Ontwikkel een IRC Bot Stap 2

Stap 2. Overweeg een reeds bestaande codebase voor uw bot

Er bestaan veel open source en gratis programma's waarmee u snel uw eigen aangepaste bot kunt opzetten. Een voorbeeld hiervan is Eggdrop, de oudste IRC-bot die nog steeds wordt onderhouden.

Ontwikkel een IRC Bot Stap 3
Ontwikkel een IRC Bot Stap 3

Stap 3. Overweeg om uw eigen bot te schrijven

Voor gevorderde IRC-gebruikers en ontwikkelaars die al de weg weten in een programmeertaal, is dit een geweldige optie. Je kunt vrijwel elke taal gebruiken die je wilt, zolang deze socket-ondersteuning heeft, maar populaire om te gebruiken zijn Python, Lua, PHP, C en Perl. Als je geen van deze talen kent, maar wel een andere taal, dan is dat geen probleem. U kunt meestal voorbeelden op internet vinden in elke gewenste taal. Voor dit artikel zullen we het gebruik van PHP demonstreren. 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 deze PHP-handleiding voor meer informatie en hulp bij het gebruik van PHP.

Methode 2 van 2: Uw eigen bot ontwikkelen

Ontwikkel een IRC Bot Stap 4
Ontwikkel een IRC Bot Stap 4

Stap 1. Verzamel de verbindingsdetails

U hebt de volgende informatie nodig om een succesvolle verbinding met het netwerk te maken.

  • 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 je het niet zeker weet, controleer dan je 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 (@#!~).
  • Identificeren: Het ident-veld verschijnt na de bijnaam wanneer iemand een WHOIS als volgt uitvoert:

    bijnaam!ident@hostnaam

  • GECOS: Dit veld bevat meestal de echte naam van een gebruiker of een algemene beschrijving van de bot, maar je kunt er alles in zetten wat je wilt.
  • Kanaal: U wilt meestal dat uw bot aanwezig is in een of meer kanalen. Op de meeste netwerken worden deze voorafgegaan door '#', maar het kan iets anders zijn.
Ontwikkel een IRC Bot Stap 5
Ontwikkel een IRC Bot Stap 5

Stap 2. Initialiseer de configuratie in uw script

De eenvoudigste manier om dit te doen is door een paar variabelen te benoemen volgens de configuratienamen hierboven. Je zou ze ook in een configuratiebestand kunnen opslaan en ze kunnen ontleden, maar voor nu houden we het bij de absolute benodigdheden.

Ontwikkel een IRC Bot Stap 6
Ontwikkel een IRC Bot Stap 6

Stap 3. Maak verbinding met het netwerk

Om dit te doen, moet u een socket openen naar de server 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 enkele handige functies om de fout effectief af te handelen.

Ontwikkel een IRC Bot Stap 7
Ontwikkel een IRC Bot Stap 7

Stap 4. Registreer uw bot

Dit betekent dat je je nickname, ident en GECOS aan de server moet geven, niet registreren bij NickServ. Om dit te doen, schrijft u gewoon de NICK- en USER-opdrachten naar de server, gevolgd door een regelterugloop en een nieuwe regel. Het is absoluut noodzakelijk dat u het precies doet zoals weergegeven, want zo is het gespecificeerd in RFC1459, de specificatie voor het IRC-protocol.

Merk op dat de middelste twee parameters (in dit geval * en 8) gespecificeerd moeten worden, maar ze worden genegeerd door de server. Die twee worden alleen gebruikt tussen gekoppelde servers, niet door een direct verbindende client

Ontwikkel een IRC Bot Stap 8
Ontwikkel een IRC Bot Stap 8

Stap 5. Blijf gegevens ophalen uit de socket met behulp van een lus

Als je geen lus zou gebruiken, zou je script onmiddellijk worden beëindigd en zou de bot in principe nutteloos zijn. Om verbonden te blijven, moet u gegevens van de server ophalen, controleren op invoer in de gewenste stream en erop reageren als dat zo is. Hier pakken we gegevens met behulp van socket_read() om alle voor ons beschikbare gegevens te pakken. Als dat zo is, blijven we doen wat er in de lus zit. Het kan handig zijn om de onbewerkte gegevens ook naar de console te sturen, zodat je kunt zien wat er gebeurt vanuit het perspectief van de bot.

Ontwikkel een IRC Bot Stap 9
Ontwikkel een IRC Bot Stap 9

Stap 6. Schrijf een ping-handler

Dit is belangrijk. Als u niet tijdig op pings reageert, zal de server de verbinding met u 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 PONG gebruiken.

Ontwikkel een IRC Bot Stap 10
Ontwikkel een IRC Bot Stap 10

Stap 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 ervoor te zorgen dat mensen je bot kunnen zien en gebruiken, moet deze zich in een kanaal bevinden (anders zou je hem moeten vertellen dat hij op privéberichten moet 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 wanneer je verbinding maakt, maar het is een goede indicator voor wanneer we kunnen beginnen met het toevoegen 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 gescheiden door spaties. Op deze manier kunnen we de gegevens splitsen en ernaar verwijzen met behulp van een array-index.
Ontwikkel een IRC Bot Stap 11
Ontwikkel een IRC Bot Stap 11

Stap 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 gesegmenteerde gegevens weer samen te voegen ($ d). Dat valt buiten het bestek van dit artikel.
  • Als het doelwit een kanaal is (zoals #botters-test), dan antwoord je daarop. Als het een privébericht is, wordt dit bit de bijnaam van je bot! Je moet dan antwoorden met de bijnaam van de afzender, niet die van jou (anders praat je tegen jezelf, en dat is gewoon dom).
Ontwikkel een IRC Bot Stap 12
Ontwikkel een IRC Bot Stap 12

Stap 9. Verleng je bot

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, kicken en bannen, het instellen van het onderwerp en vele andere functies.

Tips

  • U kunt het resultaat van het "/me"-commando produceren door uw berichten als volgt vooraf te laten gaan:

    • PRIVMSG #channel:\001ACTION tekst hier\001.
    • 001 betekent ASCII-teken 1 en wordt als zodanig geïnterpreteerd in een PHP-tekenreeks tussen dubbele aanhalingstekens. Als alternatief kunt u

      chr(1)

    • buiten het touw.
  • Kleuren kunnen in een bericht worden geproduceerd door het voorvoegsel "\003" (ASCII-code 3) gevolgd door een nummer voor een kleur. 0 = wit, 1 = zwart, 2 = blauw, 3 = groen, 4 = rood […]. Zie mIRC's pagina voor meer kleuren.
  • Vraag uit beleefdheid toestemming van kanaaleigenaren en IRC-operators voordat je je bot online zet. Niet alle netwerken en kanalen hebben een welkomstbeleid ten aanzien van bots, zelfs niet goed opgevoede.
  • Sommige IRC-daemons gaan verder dan de specificaties van het protocol en implementeren andere functies. Als je het afstemt op een specifiek netwerk, kun je zeker gebruik maken van die functies als je het protocol kent. Als u echter wilt dat uw bot op meerdere netwerken wordt geïmplementeerd, probeer hem dan te houden aan wat er in de RFC staat.

Aanbevolen: