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);
?>
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?
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) {
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.