Fout met irc (Opgelost)
tomie94 - 15/01/2008 19:10
PHP interesse
Ik heb de vogelde code vandeze site gehaald:
<?php
$config = array();
$config['nickname'] = 'Botje';
$config['realname'] = 'Botje';
$config['ident'] = 'Botje';
$config['hostname'] = 0;
$config['server'] = 'irc.chatfactory.net';
$config['poort'] = 6667;
$config['kanalen'] = array('');
if(!$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) {
die('Fatale fout: socket kon niet worden aangemaakt.');
}
echo 'Socket aangemaakt'."\n";
if(!socket_bind($socket,$config['hostname'])) {
die('Fatale fout: verbinding kon niet worden gekoppeld aan hostname '.$config['hostname'].'.');
}
echo 'Verbinding gekoppeld aan hostname'."\n";
if(!socket_connect($socket,$config['server'],$config['poort'])) {
die('Fatale fout: verbinding met server kon niet tot stand worden gebracht.');
}
echo 'Verbinden...'."\n";
function schrijf($data) {
global $socket;
socket_write($socket,$data."\r\n");
}
schrijf('USER '.$config['ident'].' '.$config['hostname'].' '.$config['server'].' :'.$config['realname']);
schrijf('NICK '.$config['nickname']);
$inKanaal = false;
while($data = socket_read($socket,65000,PHP_NORMAL_READ)) {
if($data == "\n") continue;
$eData = explode(" ",$data);
for($i = 0; isset($eData[$i]); $i++) {
$eData[$i] = trim($eData[$i]);
}
echo $data."\n";
if($inKanaal == false && strstr($data,'MOTD')) {
// Eerst kanalen binnengaan
for($i = 0; isset($config['kanalen'][$i]); $i++) {
schrijf('JOIN '.$config['kanalen'][$i]);
}
$inKanaal = true;
}
if($eData[0] == 'PING') {
schrijf('PONG '.$eData[1]);
}
if(isset($eData[3]) && $eData[3] == ':!google' && isset($eData[4])) {
// Google command en minstens 1 trefwoord
// http://www.google.be/search?q=trefwoord
$zoekstring = trim(array_pop(explode('!google',$data)));
$u = 'Google zoeken: http://www.google.be/search?q='.urlencode($zoekstring);
schrijf('NOTICE '.nickname($eData[0]).' : '.$u);
}
}
?>
<?php
$config [ 'nickname' ] = 'Botje' ;
$config [ 'realname' ] = 'Botje' ;
$config [ 'ident' ] = 'Botje' ;
$config [ 'hostname' ] = 0 ;
$config [ 'server' ] = 'irc.chatfactory.net' ;
$config [ 'poort' ] = 6667 ;
$config [ 'kanalen' ] = array ( '' ) ;
die ( 'Fatale fout: socket kon niet worden aangemaakt.' ) ; }
echo 'Socket aangemaakt' . "\n " ;
die ( 'Fatale fout: verbinding kon niet worden gekoppeld aan hostname ' . $config [ 'hostname' ] . '.' ) ; }
echo 'Verbinding gekoppeld aan hostname' . "\n " ;
die ( 'Fatale fout: verbinding met server kon niet tot stand worden gebracht.' ) ; }
echo 'Verbinden...' . "\n " ;
function schrijf( $data ) {
}
schrijf( 'USER ' . $config [ 'ident' ] . ' ' . $config [ 'hostname' ] . ' ' . $config [ 'server' ] . ' :' . $config [ 'realname' ] ) ;
schrijf( 'NICK ' . $config [ 'nickname' ] ) ;
$inKanaal = false ;
while ( $data = socket_read ( $socket , 65000 , PHP_NORMAL_READ
) ) { if ( $data == "\n " ) continue ;
for ( $i = 0 ; isset ( $eData [ $i ] ) ; $i ++ ) { $eData [ $i ] = trim ( $eData [ $i ] ) ; }
if ( $inKanaal == false && strstr ( $data , 'MOTD' ) ) { // Eerst kanalen binnengaan
for ( $i = 0 ; isset ( $config [ 'kanalen' ] [ $i ] ) ; $i ++ ) { schrijf( 'JOIN ' . $config [ 'kanalen' ] [ $i ] ) ;
}
$inKanaal = true ;
}
if ( $eData [ 0 ] == 'PING' ) {
schrijf( 'PONG ' . $eData [ 1 ] ) ;
}
if ( isset ( $eData [ 3 ] ) && $eData [ 3 ] == ':!google' && isset ( $eData [ 4 ] ) ) { // Google command en minstens 1 trefwoord
// http://www.google.be/search?q=trefwoord
$u = 'Google zoeken: http://www.google.be/search?q=' . urlencode ( $zoekstring ) ; schrijf( 'NOTICE ' . nickname( $eData [ 0 ] ) . ' : ' . $u ) ;
}
}
?>
nu doet hij het niet, ik zie gewoon een melding als de bot online komt of offline maar als ik bijv. PING intik krijg ik niks terug. en als ik !google zoekwoord intik gaat de hele boot offline....
wat moet ik doen??
33 antwoorden
Gesponsorde links
ikkedikke - 15/01/2008 19:19
PHP expert
bestaat de functie nickname? en weet je zeker dat er verder geen errors in dat stuk zitten?
Stijn - 15/01/2008 19:29
PHP expert
Je draait het php script in een console? Je kan zo'n scripts niet via het HTTP protocol uitvoeren.
tomie94 - 15/01/2008 19:34
PHP interesse
moet ik dan php dowloaden en op m'n pc php.exe uitvoeren en daarna de locatie invoeren?
Stijn - 15/01/2008 19:43
PHP expert
Heb jij geen php geinstalleerd op je pc ofzo? Anders zou ik dat maar vlug doen (before we all murder you!)
tomie94 - 15/01/2008 19:48
PHP interesse
oke, ik heb nu gedowload, ik heb via go-pear gekozen vaan local copy en ik ben klaar. hoe kan ik nu die bot instraleren?
Stijn - 15/01/2008 20:14
PHP expert
Apache als je apache hebt anders None?
tomie94 - 16/01/2008 15:49 (laatste wijziging 16/01/2008 17:26)
PHP interesse
oke heb hem geinstraleerd maar hoe kun je dan het script uitvoeren?
EDIT:
Via uitvoeren tik ik dit: C:\Program Files\PHP\exe.exe C:\irc\bot.php
dan krijg ik de melding dat het niet bestaat. als ik ze allebei los intik wel... weet iemand hoe het wel moet?.
Ricky - 16/01/2008 20:38
PHP beginner
Zet je php-bestand is gewoon in die php-map
Dan hoef je alleen maar exe.exe bot.php te doen...
tomie94 - 17/01/2008 14:46
PHP interesse
dat werkt
tomie94 - 17/01/2008 14:46 (laatste wijziging 20/01/2008 14:07)
PHP interesse
ik gebruik de volgende code:
<?php
include("config.php");
if(!$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) {
die('Fatale fout: socket kon niet worden aangemaakt.');
}
echo 'Socket aangemaakt'."\n";
if(!socket_bind($socket,$config['hostname'])) {
die('Fatale fout: verbinding kon niet worden gekoppeld aan hostname '.$config['hostname'].'.');
}
echo 'Verbinding gekoppeld aan hostname'."\n";
if(!socket_connect($socket,$config['server'],$config['poort'])) {
die('Fatale fout: verbinding met server kon niet tot stand worden gebracht.');
}
echo 'Verbinden...'."\n";
function schrijf($data) {
global $socket;
socket_write($socket,$data."\r\n");
}
schrijf('USER '.$config['ident'].' '.$config['hostname'].' '.$config['server'].' :'.$config['realname']);
schrijf('NICK '.$config['nickname']);
$f = 0;
$inKanaal = false;
while (TRUE) {
if (socket_select($_r = array($socket), $_e = NULL, $_w = NULL, 0 , 200000 ))
{
$data = @socket_read($socket, 65000);
if ($data == '' || $data == "\n" ) break;
$eData = explode(" ",$data);
for($i = 0; isset($eData[$i]); $i++) {
$eData[$i] = trim($eData[$i]);
}
echo $data."\n";
if($inKanaal == false && strstr($data,'MOTD')) {
// Eerst kanalen binnengaan
for($i = 0; isset($config['kanalen'][$i]); $i++) {
schrijf('JOIN '.$config['kanalen'][$i]);
}
$inKanaal = true;
}
if(strstr($data,'PING')) {
schrijf('PRIVMSG #testkanaal : PONG');
}
}
}
?>
<?php
include ( "config.php" ) ;
die ( 'Fatale fout: socket kon niet worden aangemaakt.' ) ; }
echo 'Socket aangemaakt' . "\n " ;
die ( 'Fatale fout: verbinding kon niet worden gekoppeld aan hostname ' . $config [ 'hostname' ] . '.' ) ; }
echo 'Verbinding gekoppeld aan hostname' . "\n " ;
die ( 'Fatale fout: verbinding met server kon niet tot stand worden gebracht.' ) ; }
echo 'Verbinden...' . "\n " ;
function schrijf( $data ) {
}
schrijf( 'USER ' . $config [ 'ident' ] . ' ' . $config [ 'hostname' ] . ' ' . $config [ 'server' ] . ' :' . $config [ 'realname' ] ) ;
schrijf( 'NICK ' . $config [ 'nickname' ] ) ;
$f = 0 ;
$inKanaal = false ;
while ( TRUE ) {
{
if ( $data == '' || $data == "\n " ) break ;
for ( $i = 0 ; isset ( $eData [ $i ] ) ; $i ++ ) { $eData [ $i ] = trim ( $eData [ $i ] ) ; }
if ( $inKanaal == false && strstr ( $data , 'MOTD' ) ) { // Eerst kanalen binnengaan
for ( $i = 0 ; isset ( $config [ 'kanalen' ] [ $i ] ) ; $i ++ ) { schrijf( 'JOIN ' . $config [ 'kanalen' ] [ $i ] ) ;
}
$inKanaal = true ;
}
schrijf( 'PRIVMSG #testkanaal : PONG' ) ;
}
}
}
?>
dit werkt als ik PING intik krijg ik netjes PONG terug.
maar als ik shsyaPINGsjdnsu intik krijg ik ook PONG terug. ik wil dat dat dus niet kan hoe moet ik dat doen?
mitshell - 20/01/2008 14:12 (laatste wijziging 20/01/2008 14:13)
Nieuw lid
<?php
if($eData[0] == 'PING') {
schrijf('PONG '.$eData[1]);
}
if ($eData[3] == ':PING') {
schrijf('PRIVMSG '.$eData[2].' :PONG');
}
?>
<?php
if ( $eData [ 0 ] == 'PING' ) {
schrijf( 'PONG ' . $eData [ 1 ] ) ;
}
if ( $eData [ 3 ] == ':PING' ) {
schrijf( 'PRIVMSG ' . $eData [ 2 ] . ' :PONG' ) ;
}
?>
probeer dat s
tomie94 - 20/01/2008 14:16
PHP interesse
dat werkt maar wat is dat 2e stukje code dan?
mitshell - 20/01/2008 14:17 (laatste wijziging 20/01/2008 14:18)
Nieuw lid
Citaat:
dit werkt als ik PING intik krijg ik netjes PONG terug.
dat doet het 2e stukje
tomie94 - 20/01/2008 14:18
PHP interesse
en het eerste stukje...
mitshell - 20/01/2008 14:20
Nieuw lid
Als je PING krijgt van server terug PONGen
tomie94 - 20/01/2008 14:22
PHP interesse
het werkt maar wat als ik bijvoorbeeld !regels nick* intik dan wil ik dat je de vogelde telst krijg: nick* lees de regels op url
*nick kan dus bijv ook tomie94 zijn
mitshell - 20/01/2008 14:25 (laatste wijziging 20/01/2008 14:26)
Nieuw lid
//function nickname - boven die while zetten
function nickname($str) {
return substr(array_shift(explode('!',$str)),1);
}
$nickname = nickname($edata[0]);
if ($eData[3] == ':!regels') {
schrijf('PRIVMSG '.$eData[2].' :'.$nickname.' lees de regels op url');
}
//function nickname - boven die while zetten
function nickname( $str ) {
}
$nickname = nickname( $edata [ 0 ] ) ;
if ( $eData [ 3 ] == ':!regels' ) {
schrijf( 'PRIVMSG ' . $eData [ 2 ] . ' :' . $nickname . ' lees de regels op url' ) ;
}
Bart - 20/01/2008 14:29
PHP expert
Tomie94, ZUCHT.
Leer PHP en mIRC scripting.
Dan kan je eens overwegen een topic aan te maken met daarin een vraag. En als je dit doet, laat zien wat je ZELF al geprobeerd hebt en denk mee met de anderen die je proberen te helpen.
En loop niet te zeuren als een klein kind van 10,
"nee wil niet" "kan ik niet" "andere oplossing aub" etc.
mitshell - 20/01/2008 14:34
Nieuw lid
Zet function nickname is buiten die while
tomie94 - 20/01/2008 14:37 (laatste wijziging 20/01/2008 14:39)
PHP interesse
dit werkt. maar nu krijg ik m'n eigen nickname. ik wil graag de nickname die ik na !regels invoer zoals !regels naam dan zo ik dus naam lees de regels op url
Ik zal nog effe doorzoeken.
edit:
gevonden:
if ($eData[3] == ':!regels') {
schrijf('PRIVMSG '.$eData[2].' :'.$eData[4].' lees de regels op url');
}
if ( $eData [ 3 ] == ':!regels' ) {
schrijf( 'PRIVMSG ' . $eData [ 2 ] . ' :' . $eData [ 4 ] . ' lees de regels op url' ) ;
}
mitshell - 20/01/2008 14:40 (laatste wijziging 20/01/2008 14:40)
Nieuw lid
begin maar met mirc ofzo
tomie94 - 20/01/2008 14:43
PHP interesse
probleempje: ben al over de 30 dagen trail heen...
Koen - 20/01/2008 14:45
PHP expert
kvirc?
Bart - 20/01/2008 14:45
PHP expert
Tomie!!
Das toch helemaal offtopic?!
Zoek op Google een free IRC client.
Wat had je verwacht dat we zouden doen? Je een serial geven?
Helaas daar doen we niet aan op Sima
Gesponsorde links
Dit onderwerp is gesloten .