/// <summary> /// Channel modes /// </summary> /// <param name="message"></param> public static void Parse324(BotMessage message) { int channelID = GetChannelID(message.MessageList[3]); ParseChannelModeString(message.MessageList[4], channelID); MBEvents.OnChannelListModified(); }
/// <summary> /// Channel topic /// </summary> /// <param name="message"></param> public static void Parse332(BotMessage message) { int channelID = GetChannelID(message.MessageList[3]); lock (channelSync) Channels[channelID].Topic = message.RawMessage.Substring(message.RawMessage.IndexOf(':', 1) + 1); MBEvents.OnChannelListModified(); }
public static void ParseTOPIC(BotMessage message) { int channelID = GetChannelID(message.ReplyTo); lock (channelSync) Channels[channelID].Topic = message.MessageString; MBEvents.OnChannelListModified(); }
public static void ParsePART(BotMessage message, bool parterIsMe) { int channelID, userID = GetUserID(message.User.Name, message.MessageList[2].TrimStart(':'), out channelID); lock (channelSync) Channels[channelID].Users.RemoveAt(userID); MBEvents.OnUserListModified(); if (parterIsMe) { lock (channelSync) Channels.RemoveAt(channelID); MBEvents.OnChannelListModified(); } }
public static int GetChannelID(string channelName) { channelName = channelName.ToLowerInvariant(); int channelID; lock (channelSync) { channelID = Channels.FindIndex(c => c.Name == channelName); if (channelID == -1) { Channel channel = new Channel(); channel.Name = channelName; Channels.Add(channel); channelID = Channels.IndexOf(channel); MBEvents.OnChannelListModified(); } } return(channelID); }
public static void ParseMODE(BotMessage message) { string modeString = message.MessageList[3]; if (message.MessageList.Count > 4) // User mode change { int channelID, userID = GetUserID(message.MessageList[4], message.MessageList[2], out channelID); bool addModes = modeString.StartsWith("+"); modeString = modeString.TrimStart('+', '-'); if (modeString.Contains("b")) { return; // Ban message, ignore } if (addModes) { lock (channelSync) { foreach (char mode in modeString) { if (!Channels[channelID].Users[userID].Modes.Contains(mode)) { Channels[channelID].Users[userID].Modes.Add(mode); } if (mode == 'q') { Channels[channelID].Users[userID].Symbols += "~"; } if (mode == 'o') { Channels[channelID].Users[userID].Symbols += "@"; } if (mode == 'h') { Channels[channelID].Users[userID].Symbols += "%"; } if (mode == 'v') { Channels[channelID].Users[userID].Symbols += "+"; } } } } else { lock (channelSync) { foreach (char mode in modeString) { if (Channels[channelID].Users[userID].Modes.Contains(mode)) { Channels[channelID].Users[userID].Modes.Remove(mode); } if (mode == 'q') { Channels[channelID].Users[userID].Symbols.Replace("~", ""); } if (mode == 'o') { Channels[channelID].Users[userID].Symbols.Replace("@", ""); } if (mode == 'h') { Channels[channelID].Users[userID].Symbols.Replace("%", ""); } if (mode == 'v') { Channels[channelID].Users[userID].Symbols.Replace("+", ""); } } } } MBEvents.OnUserListModified(); } else // Channel mode change { if (message.MessageList[2].ToLowerInvariant() == message.User.Name.ToLowerInvariant()) { return; } int channelID = GetChannelID(message.MessageList[2]); ParseChannelModeString(modeString, channelID); MBEvents.OnChannelListModified(); } }