C# CTCP原始协议操作命令,在c中使用#

C# CTCP原始协议操作命令,在c中使用#,c#,irc,C#,Irc,我制作了一个机器人连接到irc进行踢腿和咯咯笑,我让它响应不同的事情,但我希望它用CTCP动作命令进行响应,这对于用户来说通常被称为角色扮演或显示动作 根据这个关于ctcp的伟大网页 ? 格式是 \001地板上有动作杆。\001 所以我设置了我的机器人来响应 writer.WriteLine("PRIVMSG " + CHANNEL + " \001ACTION " + message + "\001"); 我也在我的控制台上打印出这个结果,它的响应是 “没有要发送的文本” 我不知道这会告诉我

我制作了一个机器人连接到irc进行踢腿和咯咯笑,我让它响应不同的事情,但我希望它用CTCP动作命令进行响应,这对于用户来说通常被称为角色扮演或显示动作

根据这个关于ctcp的伟大网页 ?

格式是 \001地板上有动作杆。\001

所以我设置了我的机器人来响应

writer.WriteLine("PRIVMSG " + CHANNEL + " \001ACTION " + message + "\001");
我也在我的控制台上打印出这个结果,它的响应是 “没有要发送的文本”

我不知道这会告诉我什么,我假设转义字符很早就断线了,\0完全忽略了它后面的另一个01,所以我让机器人在控制台中打印出它读取的内容,我键入/me舞蹈,我在控制台中读取

PRIVMSG通道:(奇数符号)动作消息(奇数符号) 我不知道奇怪的符号是什么,但对我来说,它们看起来像笑脸。。。。。 在与一些人交谈后,我了解到格式是正确的,但是\001对于不同的语言可能不同

所以我查找\001对c的含义,我fin\x01和\0011,而\0011不做任何事情,\x01也会返回相同的响应。。。。“没有要发送的文本”

我打印“PRIVMSG”+通道+“\x01操作”+消息+“\x01” 到我的控制台,我将\x01替换为键入/me跳舞时显示的同一笑脸字符,并让我的机器人将读取到控制台的内容打印出来

我的代码很简单

 if (type == MessageType.ActionMessage)
            {
                writer.WriteLine("PRIVMSG " + CHANNEL + " \x01ACTION " + message + "\x01");
                Console.WriteLine("PRIVMSG " + CHANNEL + " \x01ACTION " + message + "\x01");
                writer.Flush();
            }
writer对象不是null,将其写入控制台是为了查看发生了什么


最终的问题是,这是否正确?如果不是,那么通过c#client-to-client协议CTCP显示操作的正确方式是什么

PRIVMSG target:这是您的信息

您可能只是忘记了消息开头的分隔符
,这可以解释
无需发送文本的错误。

我终于找到了答案 \x01是\001的正确转义字符,但是\x01是十六进制的,转义字符是2字节sooo\x01AC是有效的转义字符。。。。因此,我要么将其设置为\0001,要么将转义字符放在自己的字符串“\x01”+“ACTION-ACTION-struff\x01”中,这样编译器或w/e就不会将A和C误认为是转义字符的一部分


在C中,转义字符为1字节,因此\001或\x01不会导致A和C成为其中的一部分。…

我发布了我的结果以获得答案,但感谢您的回复