我正在制作一个机器人来连接到 irc 以进行踢腿和咯咯笑,我正在让它响应不同的事情,但我希望它用 CTCP ACTION 命令做出响应,这通常被用户称为 /me 用于角色播放或显示动作。
根据这个关于 ctcp http://www.irchelp.org/irchelp/rfc/ctcpspec.html的精彩网页?
格式为 \001ACTION barfs on the floor。\001
所以我设置了我的机器人来回应
writer.WriteLine("PRIVMSG " + CHANNEL + " \001ACTION " + message + "\001");
我也在我的控制台中打印出这个结果,它的响应是“没有要发送的文本”
这真的不知道这应该告诉我什么,我假设转义字符很早就断线了, \0 完全忽略了后面的其他 01,所以我让机器人在控制台中打印出它读到的内容,我输入 /me dances 我在控制台中阅读
PRIVMSG 频道:(奇数符号)动作消息(奇数符号)我不知道奇数符号是什么,但对我来说它们看起来像笑脸.....与几个人交谈后,我知道格式是正确的,但是\001 对于不同的语言可能会有所不同
所以我查找了 \001 对 c# 的含义,我发现 \x01 和 \0011 和 \0011 没有做任何事情, \x01 也返回了相同的响应......“没有要发送的文本”
我在控制台上打印“PRIVMSG” + CHANNEL + “\x01ACTION” + 消息 + “\x01”,然后 \x01 被替换为当我输入 /me dances 并让我的机器人打印时显示的相同笑脸字符把它读到控制台的内容...
我的代码很简单
if (type == MessageType.ActionMessage)
{
writer.WriteLine("PRIVMSG " + CHANNEL + " \x01ACTION " + message + "\x01");
Console.WriteLine("PRIVMSG " + CHANNEL + " \x01ACTION " + message + "\x01");
writer.Flush();
}
writer 对象不为空,将其写入我的控制台是这样我可以看到会发生什么
最终的问题是,这是否正确,如果不是通过 c# 客户端到客户端协议 CTCP 显示操作的正确方法是什么