Embed mIRC Color codes into a C# literal?

匿名 (未验证) 提交于 2019-12-03 02:48:02

问题:

I'm working on a simple irc bot in C#, and I can't figure out how to embed the typical mirc control codes for bold/color etc into string literals.

Can someone point me towards how to do this?

回答1:

The mIRC color code format is described here. I guess you're asking how to embed a ^C in a string.

This is known as Caret notation. According to C0 and C1 control codes, ^C is:

'\x03'

Embedded in a string:

"blabla \x035,12to be colored text and background\x03 blabla"


回答2:

I create an enum and assign the hex values for the control codes to them.

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 */ };


回答3:

In my Python IRC bot, I can get bold to show up in irssi using \x02sometext\x02, which shows up like:

this is \x02some text\x02

this is some text

As for colors, I believe you're looking for \x03AA,BB where A is the foreground color and B the background color (what you'd type in after Ctrl+K). Not 100% for sure, though. Try connecting an IRC client using telnet, and check what mIRC does when you use Ctrl+K.

You're not likely to get a standard cohesive behavior across IRC clients...ANSI escape codes are processed by more of the old-fare staple Unix clients like irssi, and mIRC sometimes does its own thing.



回答4:

This might be down to the specific chat library I was using (ChatSharp), but I couldn't get the current accepted answer to work. What I ended up with was:

channel.SendMessage((char)3 + "5,12hello");


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!