Я работаю над простым irc-ботом на С#, и я не могу понять, как встраивать типичные управляющие коды mirc для жирного/цветного и т.д. в строковые литералы.
Может кто-нибудь указать мне, как это сделать?
Я работаю над простым irc-ботом на С#, и я не могу понять, как встраивать типичные управляющие коды mirc для жирного/цветного и т.д. в строковые литералы.
Может кто-нибудь указать мне, как это сделать?
Формат цветового кода mIRC описан здесь. Я думаю, вы спрашиваете, как вставить строку ^ C в строку.
Это называется обозначение Caret. Согласно C0 и C1 управляющие коды, ^ C:
'\x03'
Встраивается в строку:
"blabla \x035,12to be colored text and background\x03 blabla"
Я создаю перечисление и присваиваю ему шестнадцатеричные значения для управляющих кодов.
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 */
};
В моем ботте IRC Python я могу полужирным шрифтом появиться в irssi с помощью \x02sometext\x02, который отображается как:
this is \x02some text\x02
это некоторый текст
Что касается цветов, я считаю, что вы ищете \x03AA, BB, где A - цвет переднего плана, а B - цвет фона (что вы наберете после Ctrl + K). Правда, не на 100%. Попробуйте подключиться к IRC-клиенту с помощью telnet и проверить, что делает mIRC при использовании Ctrl + K.
Вероятно, вы не получите стандартное согласованное поведение для клиентов IRC... Коды escape-кода ANSI обрабатываются более старыми клиентскими Unix-клиентами, такими как irssi, и mIRC иногда делает свое дело.
Возможно, это зависит от конкретной библиотеки чата, которую я использовал (ChatSharp), но я не мог получить текущий принятый ответ для работы. Я закончил с этим:
channel.SendMessage((char)3 + "5,12hello");