我在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
然后它会回吐一个数据包,说你不是运营商,然后 op / de-op响应数据包。
答案 0 :(得分:2)
这与TCP没有任何关系 - 它与IRC的架构有关。 ChanServ
服务通常不是您要连接的客户端ircd的一部分。它由一个单独的ircd实现,该ircd链接到客户端ircd(s)。
这意味着您的KICK
(来自您的客户端)可以在您(来自服务守护程序)的模式更改消息到达之前到达您的客户端服务器。
要正确执行此操作,您需要向op
发出ChanServ
命令,然后等到MODE
命令在发出KICK
之前给出操作deop
命令。