よろしくお願いします。私はPHPでIRCボットを構築しています。私は幾分noobをPHPにしているので、愚かな間違いであれば私と一緒に裸でいます。あるエラーが、私はエラーとライン45 & 50のためである与え、 "未定義のオフセット:4/* //* /Grue.phpにライン50に": ライン45PHP IRC Bot不定オフセット
は、ここでこれらの行です:$command = str_replace(array(chr(10), chr(13)), '', $this -> ex[3]);
ライン50:
<?php
//So the bot doesn't stop.
set_time_limit(0);
ini_set('display_errors', 'on');
//Sample connection.
$config = array('server' => 'irc.foonetic.net', 'port' => 6667, 'channel' => '#lingubender', 'name' => 'KiBot', 'nick' => 'Grue', 'pass' => '',);
class Grue {
var $socket; // TCP/IP Connection
var $ex = array(); // Messages
function __construct($config)
{
$this -> socket = fsockopen($config['server'], $config['port']);
$this -> login($config);
$this -> main($config);
}
/* Log into server
@param array
*/
function login($config)
{
$this -> write_data('USER', $config['nick'].' :'.$config['name']);
$this -> write_data('NICK', $config['nick']);
$this -> enter_channel($config['channel']);
}
//* Grabs/displays data
function main($config)
{
$data = fgets($this -> socket, 256);
echo nl2br($data);
flush();
$this -> ex = explode(' ', $data);
if ($this -> ex[0] == 'PING') {
write_data('PONG', $this -> ex[1]);
}
$command = str_replace(array(chr(10), chr(13)), '', $this -> ex[3]);
strtolower($command);
if ($command == ':grue' || ':gu') {
switch($this -> ex[4]) {
case 'join':
enter_channel($this -> ex[5]);
break;
case 'part':
$this -> write_data('PART'.$this -> ex[5].' :', $this -> ex[6]);
break;
case 'repeat':
$message = "";
for ($i = 5; $i <= (count($this -> ex)); $i++) {
$message .= $this -> ex[$i]." ";
}
$this -> write_data('PRIVMSG '.$this -> ex[4].' :', $message);
break;
case 'restart':
echo "<meta http-equiv=\"refresh\" content=\"5\">";
exit;
case 'shutdown':
$this -> write_data('QUIT', $this -> ex[5]);
exit;
}
}
$this -> main($config);
}
function write_data($cmd, $msg = null) {
if ($msg == null) {
fputs($this -> socket, $cmd."\r\n");
echo '<strong>'.$cmd.'</strong><br>';
} else {
echo '<strong>'.$cmd.' '.$msg.'</strong><br>';
}
} function enter_channel($channel) {
if (is_array($channel)) {
foreach ($channel as $chan) {
$this -> write_data('JOIN', $chan);
}
} else {
$this -> write_data('JOIN', $channel);
}
}
}
$bot = new Grue($config);
?>
01:ここで
switch($this -> ex[4]) {
は、コードの彼の残りの部分です
すべての角かっことかっこをチェックしました。私が考えることができるすべてはうまくいかなかった。ああ、それは助けて、私がそれを実行したときに上記のエラー(45 & 50)を約60回演奏した。
ありがとうございました。
これは、 '$ this-> ex [4]'(または3)が存在しないため、存在しない配列要素にアクセスしようとしていることを意味します。エラー。デバッグスタック( 'print_r(debug_backtrace())')を出力して、それがどこにあるのかを確認する必要があります。 –
また、私はPHP IRCボットを持っています。あなたが望むなら、あなたよりもはるかに洗練されています(各ユーザはオブジェクトであり、各チャンネルはオブジェクトであり、動的なユーザ追跡とチャンネル監視、接続作業など)私はそれをあなたと共有することができます。 –
確かに - – Kinz