2013-04-28 6 views
6

私はボットを作り、蹴ってキックするためにircに接続しようとしていましたが、別のものに応答させていましたが、CTCP ACTIONコマンドで応答します。ロールプレイまたはアクションの表示に使用されるユーザーとして一般的に知られています。CTCPのrawプロトコルのACTIONコマンドでC#を使用する

この偉大なウェブページによると、 http://www.irchelp.org/irchelp/rfc/ctcpspec.html

形式は、床の上に 001ACTION \ barfsです。\ 001

ので、私はすべてのそれだけでなく、私のコンソールでこの結果をプリントアウト

writer.WriteLine("PRIVMSG " + CHANNEL + " \001ACTION " + message + "\001"); 

で応答するために私のボットを設定 "No text to send"

私はエスケープ文字が最初に行を分割していると仮定しています。\ 0はそれ以降の他の文字列を完全に無視しています。ボーを持っているコンソールで何かを読んだり、私の踊りを入力してコンソールに表示したりする。

PRIVMSG CHANNEL:(奇数記号)ACTIONメッセージ(奇数記号) 私は奇数記号が何であるか分からない私にはスマイリーな顔のように見える..... いくつかの人と話した後、フォーマットは正しいが、\ 001は異なる言語で異なる可能性があることをご理解ください。

c#とi fin \ x01と\ 0011と\ 0011と\ 0011は何もしませんし、\ x01も同じ応答を返します.... "No text to send"

私は "PRIVMSG" + CHANNELを印刷します+ "\ x01ACTION "+ message +" \ x01 " 私のコンソールには、\ x01は、/ meのダンスを入力してボットにコンソールに読み込まれた内容をプリントアウトさせるときと同じスマイリーフェイスキャラクターに置き換えられます。

それのための私のコードは、ライター・オブジェクトがnullではない、と私のコンソールにそれを書くことは私は究極の質問がある

を何が起こるか見ることができている、これは正しく、単に

if (type == MessageType.ActionMessage) 
      { 
       writer.WriteLine("PRIVMSG " + CHANNEL + " \x01ACTION " + message + "\x01"); 
       Console.WriteLine("PRIVMSG " + CHANNEL + " \x01ACTION " + message + "\x01"); 
       writer.Flush(); 
      } 

ですC#クライアントからクライアントプロトコルを介してアクションを表示する正しい方法は何かではない場合CTCP

答えて

11

最後に見つけたのは \ x01は\ 001の適切なエスケープ文字ですが、\ x01は16進数で、エスケープ文字は2バイトです..... \ x01ACは有効なエスケープ文字です。私はそれを\ 0001にするか、エスケープ文字を "\ x01" + "ACTION action struff \ x01"にしなければなりませんでした。エスケープ文字の一部

Cのエスケープ文字は1バイトなので、\ 001または\ x01はAとCの一部にはなりません....

1

ここではPRIVMSGコマンドの構文は次のとおりです。

PRIVMSG target :Here is your message

あなたはおそらく唯一のNo text to sendエラーを説明するだろうメッセージの先頭の区切り文字である:を忘れてしまいました。

+0

私は答えのために私の結果を掲載しましたが、 –

関連する問題