我目前正在尝试制作一个简单的IRC Gui客户端。我使用SmartIrc4net作为基础,因为它似乎是所有这些中最受支持的,在这里找到:http://www.codeproject.com/Articles/8323/SmartIrc4net-the-C-IRC-library
现在我遇到的问题是动作命令。例如,为了使自己成为一个操作员,你可以输入
/ oper管理员密码或更改主机,将是/ sethost mynewhost
我的问题是,当我通过TextBox传递该值时,而不是让我管理员或更改我的主机。我的输入只是在聊天中显示为文本。
这是我的代码:
string[] serverlist;
serverlist = new string[] { "mydomain.com" };
int port = 6667;
string channel = "#MyChannel#";
try
{
irc.Connect(serverlist, port);
irc.Login("SmartIRC", "SmartIrc4net Test Bot");
irc.RfcJoin(channel);
irc.SendMessage(SendType.Message, channel, "/oper admin mypass");
irc.SendMessage(SendType.Action, channel, "/sethost mynewhost");
irc.Listen();
但是当我传递这些值时,它所做的只是显示我在聊天中输入的内容,而不是实际让我操作或改变我的sethost。
无论如何,我实际上可以将命令传递给IRC服务器,而不是仅仅在聊天中显示原始文本?
任何帮助将不胜感激,谢谢
答案 0 :(得分:2)
这是因为您明确发送了一条消息。 IRC本身没有/commands
的概念,这是在客户端完成的。您所做的只是发送一条消息,其中包含恰好以/
开头的特定文本。即服务器收到的是
PRIVMSG #channel :/oper admin mypass
而不是
OPER admin mypass
您只需要找出一种向服务器发送原始IRC命令的方法。但是,您链接到的页面并未提供有关该部分的大量文档。但从图层来看,这应该是第2层或第1层。
答案 1 :(得分:1)
SendMessages还有很多选择。
你有Oper的例子irc.RfcOper(用户名,密码)。
如果你想发送原始数据命令,它不支持动态示例sethost,你可以直接发送WriteLine。
irc.WriteLine(“sethost mynewhost”)
打开IrcCommands.cs以查看命令列表和Rfc2812.cs以查看它们的传输方式。
我建议您阅读或至少查看您在此处可以找到的Rfc2812标准http://tools.ietf.org/html/rfc2812