Hallo allemaal,
Een tijdje geleden dacht ik erover een MSN bot te maken. Nou, daar ben ik vandaag aan begonnen, alleen snap ik niet helemaal precies welke commando's je nou naar de server moet sturen en hoe je moet inloggen. Ik hoopte dat jullie mij konden helpen...
Hier is overigens de 'code' waarmee ik contact mee maak (probeer te maken).

<?php
// Maak contact met de server:
fsockopen($this->_msnserver, $this->_msnpoort, $errno=0, $errstr='', 60);
?>
Hoe kan ik die commands vanaf de MSN-server uitlezen; wat voor parameter(s) moet ik meegeven?
Als je goed zoekt (en wellicht staat het ook op die hypothetic site), zie je hier en daar wel voorbeelden over hoe je verbinding moet maken en jezelf moet authoriseren. Maar bereid je maar vast voor: het is veel, heel veel lezen. Ik zelf heb ook nog wel eens een poging gewaagd, maar heb er maar vanaf gezien omdat het zoveel was en het risico hebt dat het bij het volgende protocol weer geheel veranderd is (en die protocollen komen vrij snel uit).

En daarnaast is het niet makkelijk om zo'n bot te maken; ik raad je aan eerst meer met sockets te doen, voordat je aan de slag gaat met MSNPxx.
Begin bijvoorbeeld met een IRC botje, die zijn relatief simpel in vergelijking met een MSN bot.
Misschien gaat het allemaal wel wat te snel, ik begin eerst wel met een IRC-bot... Alleen, waar kan je een IRC-kanaal openen, zodat ik mijn bot kan testen?
download eerst mIRC of een dergelijk programma, ga naar een host server en typ /j #jouwkanaal...

tada...
Kan dat ook gewoon via Chatzilla (firefox extensie?)
Ik heb een beginnetje gemaakt van een IRC-bot, ik heb alleen een probleempje, hij blijft maar laden...

<?php

class irc {

var $_botnaam = 'Jip-bot';
var $_host = 'http://www.babaluji.nl/';;
var $_irchost = 'irc://irc.chat4all.com';
var $_poort = '80';
var $_kanaal = '#jipchannel';
var $_verbinding;
var $_data;


function irc() {

// Contact maken met IRC-server:
$this->connect();
$this->ping();

}



function connect() {

// Verbinding met IRC-server openen:
if ($this->_verbinding = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) == false)
die('De verbinding (socket) kon niet gemaakt worden');

// De IRC-verbinding een naam geven:
if (socket_bind($this->_verbinding, $this->_host) == false)
die('De verbinding (socket) kon niet gekoppeld worden aan' .$this->_host);

// Uiteindelijke verbinding maken:
if (socket_connect($this->_verbinding, $this->_irchost, $this->_poort) == false)
die('Het is niet mogelijk om een verbinding (socket) met ' .$this->_irchost. ' te maken');

}



function write($data) {

// Data wegschrijven:
socket_write($this->_verbinding, $data);

}




function ping() {

$kanaal = 0; // 0 = geen kanaal
// 1 = wel kanaal

while ($data = socket_read($this->_verbinding, 65000, PHP_NORMAL_READ)) {

// Zoek regeleinde: (?)
if ($data == "\n")
continue;

// Binnengekregen data opsplitsen:
$_this->data = explode(' ', $data);


// Whitespaces aan begin en einde verwijderen:
for ($i = 0; isset($edata[$i]); $i++)
$edata[$i] = trim($edata[$i]);

// Controleren of bot al in een channel zit:
if ($kanaal == 0) {

$this->write('/join ' .$this->_kanaal);
$channel = 1;
}

// Controleren of er een ping is ontvangen:
if ($edata[0] == 'PING')
$this->_write('PONG ' .$edata[1]);

}

}

}

?>
Hij hoort ook te blijven laden..
Dan isie al bezig ;)
Je ziet niks in die PHP pagina, maar wel in IRC ;)
Ik denk dat je de verkeerde instellingen gebruikt: je moet de IRC-poort invullen (meestal 6666~6669), je host is je eigen ip-adres.

Daarnaast moet je continu controleren of de server jou PING't, zodat jij kan antwoorden met PONG. Ik denk dat je dat nu maar één keer doet, waardoor je de verbinding zal verliezen.

En ik krijg een foutmelding van socket_bind, maar ik kan zo gauw niet zien waar de fout zit.
Mmm, ik krijg geen foutmelding voor socket_bind...

Reageren