【问题标题】:PHP - IRC Bot Not sending message HelpPHP - IRC Bot 不发送消息 帮助
【发布时间】:2011-05-12 18:25:50
【问题描述】:

目前我正在制作一个向 IRC 主频道发送消息的 IRC。这是我的代码:

<?php


$ircServer = "xxxx";
$ircPort = "6667";
$ircChannel = "#bots";

set_time_limit(0);

$msg = $_GET['msg'];

$ircSocket = fsockopen($ircServer, $ircPort, $eN, $eS);

if ($ircSocket)
{

    fwrite($ircSocket, "USER Lost rawr.test lol :code\n");
    fwrite($ircSocket, "NICK Rawr" . rand() . "\n");
    fwrite($ircSocket, "JOIN " . $ircChannel . "\n");
    fwrite($ircSocket, "PRIVMSG " . $channel . " :" . $msg = $_GET['msg'] . "\n");

    while(1)
    {
        while($data = fgets($ircSocket, 128))
        {
            echo nl2br($data);
            flush();

            // Separate all data
            $exData = explode(' ', $data);

            // Send PONG back to the server
            if($exData[0] == "PING")
            {
                fwrite($ircSocket, "PONG ".$exData[1]."\n");
            }
}
    echo $eS . ": " . $eN;
}
}
?>

<html><body>
<h4>IRC Bot Tester</h4>
<form action="irc.php" method="post"> 
Command: <input type="text" name="msg" />
<input type="submit" />
</form>
</body></html>

我的问题是 BOT 没有向频道发送任何消息,如您所见,我使用 post + get data 来获取发送到频道的消息信息。

这是我收到的日志:

:irc.underworld.no 366 Rawr30517 #bots :/NAMES 列表结束。 :irc.underworld.no 411 Rawr30517 :没有 给定收件人(PRIVMSG):0:0PING :irc.underworld.no

我不知道是哪个部分导致了这个:

给定收件人 (PRIVMSG) : 0: 0PING

如果有人可以帮助我,谢谢。我试图简单地向机器人发布消息,然后机器人将消息传递到主频道。

【问题讨论】:

    标签: php irc


    【解决方案1】:

    变化:

    $msg = $_GET['msg'];
    ...
    fwrite($ircSocket, "PRIVMSG " . $channel . " :" . $msg = $_GET['msg'] . "\n");
    

    收件人:

    $msg = $_POST['msg'];
    ...
    fwrite($ircSocket, "PRIVMSG " . $ircChannel . " :" . $msg . "\n");
    

    【讨论】:

    • 现在它给了我这个错误::irc.underworld.no 366 Rawr6090 #bots :End of /NAMES list。 :irc.underworld.no 412 Rawr6090 :没有要发送的文本
    • 仍然给我:错误::irc.underworld.no 366 Rawr6090 #bots :End of /NAMES 列表。 :irc.underworld.no 412 Rawr6090 :没有要发送的文本。一些无法获取消息的原因。
    • 如何调用脚本?网址是什么样的?
    • 看上面,我创建了一个简单的表单。在“命令”字段中输入的任何内容都将发送到机器人,机器人应该发送到通道。但是它不起作用。
    • 那是因为您的表单是 $_POST 而您正在寻找 $_GET,请将 $_GET 更改为 $_POST
    【解决方案2】:
    fwrite($ircSocket, "PRIVMSG " . $ircChannel . " " . $msg = $_GET['msg'] . "\n");
    

    收件人:

    fwrite($ircSocket, "PRIVMSG " . $ircChannel . " " .$msg. "\n");
    

    【讨论】:

      猜你喜欢
      • 2013-02-27
      • 2016-08-11
      • 2017-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-18
      • 1970-01-01
      • 2012-06-05
      相关资源
      最近更新 更多