Example #1
0
        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
                    }
                });
            }
        }
Example #2
0
        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;
            }
        }