2

我目前正在尝试制作一个简单的 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 服务器,而不仅仅是在聊天中显示原始文本吗?

任何帮助将不胜感激,谢谢

4

2 回答 2

2

这是因为您正在显式发送消息。IRC 本身没有 的概念/commands,这都是在客户端完成的。您正在做的只是发送一条带有特定文本的消息,该文本恰好以/. 即服务器收到的是

PRIVMSG #channel :/oper admin mypass

代替

OPER admin mypass

您只需要找出一种将原始 IRC 命令发送到服务器的方法。但是,您链接到的页面并没有提供太多关于该部分的文档。但从层数来看,这应该在第 2 层或第 1 层。

于 2012-05-09T12:28:23.267 回答
1

除了 SendMessages 之外,还有很多选项。

您有 Oper 的示例 irc.RfcOper(username, pasword)。

如果你想为它不支持的东西发送原始数据命令,例如sethost,你可以直接发送一个WriteLine。

irc.WriteLine("sethost mynewhost")

打开 IrcCommands.cs 以查看命令列表,打开 Rfc2812.cs 以查看它们是如何传输的。

但是,我建议您阅读或至少查看您可以在此处找到的 Rfc2812 标准https://www.rfc-editor.org/rfc/rfc2812

于 2012-05-09T12:29:06.273 回答