私はC#で単純なircボットに取り組んでいますが、太字/色などの一般的なmirc制御コードを文字列リテラルに埋め込む方法がわかりません。
誰かがこれを行う方法を教えてもらえますか?
ここでは、mIRCカラーコード形式について説明します。文字列に^Cを埋め込む方法を尋ねていると思います。
これはキャレット記法として知られています。C0およびC1制御コードによると、^Cは次のとおりです。
'\x03'
文字列に埋め込まれています:
"blabla \x035,12to be colored text and background\x03 blabla"
列挙型を作成し、それらに制御コードの16進値を割り当てます。
enum ColorCode {
White = 0, /**< White */
Black = 1, /**< Black */
DarkBlue = 2, /**< Dark blue */
DarkGreen = 3, /**< Dark green */
Red = 4, /**< Red */
DarkRed = 5, /**< Dark red */
DarkViolet = 6, /**< Dark violet */
Orange = 7, /**< Orange */
Yellow = 8, /**< Yellow */
LightGreen = 9, /**< Light green */
Cyan = 10, /**< Cornflower blue */
LightCyan = 11, /**< Light blue */
Blue = 12, /**< Blue */
Violet = 13, /**< Violet */
DarkGray = 14, /**< Dark gray */
LightGray = 15 /**< Light gray */
};
enum ControlCode {
Bold = 0x02, /**< Bold */
Color = 0x03, /**< Color */
Italic = 0x09, /**< Italic */
StrikeThrough = 0x13, /**< Strike-Through */
Reset = 0x0f, /**< Reset */
Underline = 0x15, /**< Underline */
Underline2 = 0x1f, /**< Underline */
Reverse = 0x16 /**< Reverse */
};
私のPythonIRCボットでは、\ x02sometext \ x02を使用して、irssiに太字で表示できます。これは次のように表示されます。
this is \x02some text\x02
これはいくつかのテキストです
色については、\ x03AA、BBを探していると思います。ここで、Aは前景色、Bは背景色(Ctrl + Kの後に入力する色)です。ただし、100%ではありません。telnetを使用してIRCクライアントに接続してみて、Ctrl+Kを使用したときにmIRCが何をするかを確認してください。
IRCクライアント間で標準のまとまりのある動作が得られる可能性は低いです...ANSIエスケープコードは、irssiなどの旧式の主要なUnixクライアントによって処理され、mIRCが独自の処理を行う場合があります。
これは、私が使用していた特定のチャットライブラリ(ChatSharp)に起因する可能性がありますが、現在受け入れられている回答を機能させることができませんでした。私が最終的に得たのは:
channel.SendMessage((char)3 + "5,12hello");