22. januar 2005 - 01:59Der er
44 kommentarer og 1 løsning
IRC bot
Hej Jeg kommer en del på irc og har programmert lidt tid i php, er der en der kender en god tutorial til hvordan man laver en irc bot i php, jeg har søgt på google og fundet en masse, men jeg kan ikke få det til at virke. Jeg håber der er en der kan hjælp. Mvh Bo
glemte lige at sige at jeg har prøvet at lave det her for at se om den bare kommer på.. <? $server="eu.undernet.org"; $port="6667"; $nick="hejmeddig"; $channel="#qwertyui"; $realname="fanden"; $connect = fsockopen($server, $port); if ($connect){ echo "Der er hul igennem"; fputs($connect, "NICK $nick"); fputs($connect,"USER bo bo bo :$realname"); } else { echo "Der blev ikke oprettet forbindelse"; } Den skriver at der er hul igennem men jeg kan ikke se den på irc. Mvh Bo
Du SKAL faktisk gøre det fra CLI , da din bot ellers vil være online indtil du lukker jobbet i "joblisten" (hvis det er windåse). Derudover vil din bot crashe efter max execution time (30 sek. normalt, angivet i php.ini). Endnu en grund til at bruge CommandLineInterface (CLI) :D
Mht. dit script ville jeg nok lave så det skriver server output ud, så du kan se om det reaelt forbinder til netværket.
Hvor kan jeg downloade cli til windows? Jeg ved godt at jeg skal gøre så jeg kan se server output, men jeg ville bare se om jeg kunne få den på serveren først. Mvh Bo
ja nu har jeg fundet det :) Men jeg kan stadigvæk ikke få den til at connecte, hvis jeg nu giver dig de her piont og hæver med 60 mere, kan jeg så få dig til at lave et lille eksempel på hvordan den bare logger på serveren og får et nick, resten skal jeg nok lave? Mvh Bo
jeg har lige fundet en god tutorial, som jeg vil følge men jeg har et lille problem når jeg bruger socket_create får jeg følgende fejl: call to undefined function: socket_create ? hvordan overvinder jeg det problem? Mvh Bo
hej igen jeg har lige et sidste spørgsmål hvis det er i orden, der står angående sockets at der ikke skal installeres nogle yderlige tind? hvorfor kan jeg så ikke få lov at oprette med socket_create? Mvh Bo
Jeg får følgende fejlnår jeg sætter den linje ind i php.ini Unknown(): Unable to load dynamic library './php_sockets.dll - Det angivende modul blev ikke fundet. Jeg har søgt efter php_socket.dll på min maskine men den eksistere ikke, ved du hvor jeg kan finde den?
der er ikke noget bibliotek der hedder extensions, kan det have noget at gøre med at jeg installerede php med windows installer? det script di lavede virker fint, jeg kan bare ikke bruge socket_* hvilket jeg meget gerne ville :(
----------------------------------------------- NOTICE AUTH :*** Looking up your hostname NOTICE AUTH :*** Checking Ident NOTICE AUTH :*** Found your hostname <br /> <b>Fantal error</b>: Maximun execution time of 30 seconds exceeded in <b>C:\irc.php</b> on line <b>23</b><br /> -----------------------------------------------
jeg har brugt denne kode i irc.php ----------------------------------------------- <?
Kunne du tænke dig og prøve og sætte det ind hvor der skal være, jeg er ikke lige selv verden bedsre til php endnu, da det ikke er særlig lang tid siden jeg startet med php
alister_crowley Hvordan hvordan havde du installeret det? kan jeg ikke bare kopiere de biblioteker jeg ikke har ind i min eksisterende installation og så aktivere php_socket.dll ? eller skal jeg installere det manuelt, da der jo ikke er en installer med?
jeg kan med den her kode få den til at logge på et netværk og få motd, men når jeg laver en whois på min bot er den der ikke? en der kan se hvad der er gået galt jeg burde da kunne lave en whois og se botten når den har fået motd
PING 23105735 (hvor 23105735 er et random tal) Herefter skal der inden for 2-3 sek. sendes: PONG 23105735 (hvor 23105735 er det samme tal som ping sendte med)
Mht. den socket extension, så mener jeg bare at du skal pakke zip filen ud. Ellers kan du hente denne her extention pakkke: www.thedeathart.dk/upload/extensions.zip
Det er den jeg bruger, under PHP v. 4.3.10 og så er det bare at tilføje den i php.ini :) (som ligger i c:\windows\ )
if (!$fp) { echo "$errstr ($errno)\n"; } else { fwrite($fp,"USER bo bo $server :$realname\r\n"); fwrite($fp,"NICK $nick\r\n"); sleep(1); while (!feof($fp)) { echo fgets($fp,128); $input = fgets($fp,128); $strinput = explode(" ", $input); if ($strinput[0] == "PING") { fwrite($fp, "PONG %s\r\n", $strinput[1]); fwrite($fp,"JOIN $channel\n"); fwrite($fp,"PRIVMSG $channel $joinmsg\r\n"); } } fclose($fp); }
?>
Men jeg har et problem, nogle gange vil den ikke komme på internettet, så får jeg bare denne besked: serverens navn : register first
451 ERR_NOTREGISTERED ":You have not registered"
- Returned by the server to indicate that the client must be registered before the server will allow it to be parsed in detail.
Men på undernettet er der ikke noget med nick registering, så det er lige det problem jeg prøver at løse lige pt. men hvis du ved hvordan ville det være rart, da jeg næsten har revet alt håret af mig selv :))
ja som du kan se har jeg prøvet at skifte lidt ud i USER, og byttet om på række følgen, nogle gange kommer den på og joiner en kanal andre gange får jeg den besked.. pænt irreterende
skummelt, jeg fik den på ved at det jeg havde skrevet ud med fwrite($fp,"USER ".$botnick." none none : ".$readname."\n"); fwrite($ftp,"NICK ".$botnick."\n"); som du havde skrevet, men det var jo stort det sammen bare en anden måde at skrive det på!! Men lige nu er den på, så kan jeg gå igang med kommandoer! endnu engang tak :)
med hensyn til socket så har jeg udpakket den zip fil og lagt det i c:\php men det virker stadigvæk ikke, jeg får den her fejl meddelse: kunne ikke finde modulet php_socket.dll
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.