2

現在、単純な IRC GUI クライアントを作成しようとしています。私は SmartIrc4net をベースとして使用しています。これは、すべての中で最も支持的であるように思われるためです

今私が問題を抱えているのはアクションコマンドです。たとえば、自分をオペラにするには、次のように入力します。

/oper 管理者パスワードまたは changehost は、/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();

しかし、これらの値を渡すと、チャットに入力した内容が表示されるだけで、実際に oper になったり、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 を開いてコマンドの転送方法を確認します。

ただし、 https: //www.rfc-editor.org/rfc/rfc2812で見つけることができるRfc2812標準を読むか、少なくとも覗くことをお勧めします

于 2012-05-09T12:29:06.273 に答える