Embed mIRC Color codes into a C# literal?

后端 未结 4 451
执笔经年
执笔经年 2021-02-04 11:27

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

相关标签:
4条回答
  • 2021-02-04 11:48

    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.

    0 讨论(0)
  • 2021-02-04 11:59

    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 */
    };
    
    0 讨论(0)
  • 2021-02-04 12:00

    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");
    
    0 讨论(0)
  • 2021-02-04 12:01

    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"
    
    0 讨论(0)
提交回复
热议问题