-4

我在 IRC 机器人中发送以下内容:

bot->message("chanserv", "op #channel");
bot->raw("KICK #channel " + this->nick(args[0]) + " :RIPIP");
sleep(2000);  // even tried sleepin
bot->message("chanserv", "deop #channel");

我看到它通过套接字发送

PRIVMSG chanserv :op #channel
KICK #channel baduser :RIPIP
PRIVMSG chanserv :deop #channel
:hobana.freenode.net 482 username #channel :You're not a channel operator

但随后它会返回一个数据包,说明您不是操作员,然后是操作/解操作响应数据包。

4

1 回答 1

2

这与 TCP 没有任何关系——它与 IRC 的架构有关。该ChanServ服务通常不是您要连接的客户端 ircd 的一部分。相反,它由链接到客户端 ircd(s) 的单独 ircd 实现。

这意味着您的KICK(来自您的客户端)可以在操作您(来自服务守护程序)的模式更改消息到达之前到达您的客户端服务器。

要正确执行此操作,您需要发出op命令 to ChanServ,然后等到看到MODE命令为您提供操作,然后再发出KICKanddeop命令。

于 2013-06-11T12:30:16.737 回答