在我的IRC客户端中使用命令

时间:2012-05-09 12:17:25

标签: c# client irc

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

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

2 个答案:

答案 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