public void InterpretChatCommand(MSGserver messageContent) { //bot commands in chat all start with '!' if (messageContent.message.StartsWith("!") && messageContent.message.Length > 1) { string commandName = ""; string[] commandTerms = SeparateCommandTerms(messageContent.message, out commandName); //string[] splitSpace = messageContent.message.Split(' '); //string commandName = splitSpace[0].Substring(1).ToLower(); //string[] commandTerms = splitSpace.Skip(1).ToArray(); BotCommandController.RunChatBotCommand(new UserGeneratedCommand() { rawTerms = commandTerms, channel = messageContent.channel, characterName = messageContent.character, commandName = commandName, ops = null, terms = null });//commandTerms, commandName, messageContent.character, messageContent.channel); } if (_returnAllRecievedChatMessagesFromChannels && !string.IsNullOrEmpty(messageContent.channel)) { MessageQueue.AddMessage(new BotMessage() { messageType = BotMessageFactory.MSG, MessageDataFormat = new MSGclient() { channel = messageContent.channel, message = messageContent.channel + " " + messageContent.character + " " + messageContent.message } }); } }
public void OnMessage(string data) { string[] pieces = data.Split(' '); if (pieces == null || pieces.Length < 1) { Console.WriteLine("Error OnMessage, data did not parse correctly."); return; } string messageType = pieces[0]; string trimmedChatCommand = data.Substring(3).Trim(); switch (messageType) { case "NLN": //a user connected case "STA": //status change for character case "FLN": break; case "RLL": //a user generated /roll using FChat's roll break; case "ICH": //initial channel users case "LIS": //all online characters, gender, status break; case "COL": //sent in response to join channel COLserver colinfo = JsonConvert.DeserializeObject <COLserver>(trimmedChatCommand); Console.WriteLine("Recieved: " + (data.Length > 300 ? data.Substring(0, 300) : data)); UserGeneratedCommand req = WaitingChannelOpRequests.FirstOrDefault(b => b.channel == colinfo.channel); if (req != null) { Console.WriteLine("channelops returned COL, channel ops returned"); req.ops = colinfo.oplist; } else { ChannelsJoined.Add(colinfo.channel); } break; case "JCH": //someone joined a channel the bot is in JCHserver jchInfo = JsonConvert.DeserializeObject <JCHserver>(trimmedChatCommand); ChannelSettings s = GetChannelSettings(jchInfo.channel); if (s.GreetNewUsers) { SendMessageInChannel("Welcome to the channel, " + Utils.GetCharacterUserTags(jchInfo.character.identity) + "!", jchInfo.channel); } break; case "LCH": //someone left a channel the bot is in break; case "PIN": //ping from server. reply with ping MessageQueue.AddMessage(new BotMessage() { MessageDataFormat = null, messageType = "PIN" }); break; case "PRI": //private message from a user PRICmd msgContentPri = JsonConvert.DeserializeObject <PRICmd>(trimmedChatCommand); InterpretChatCommand(new MSGserver() { character = msgContentPri.character, message = msgContentPri.message, channel = null }); break; case "MSG": //message sent in channel MSGserver msgContent = JsonConvert.DeserializeObject <MSGserver>(trimmedChatCommand); InterpretChatCommand(msgContent); break; default: Console.WriteLine("Recieved: " + (data.Length > 300? data.Substring(0, 300) : data)); break; } }