Example #1
0
        public List <string> OnChannelMessage(IrcBot ircBot, string server, string channel, IrcMessage m)
        {
            var key          = server + channel;
            var message      = m.Text;
            var botName      = ircBot.Nickname;
            var botNameMatch = string.Format("^{0}[:,;]", botName);

            if (!_brains.ContainsKey(key))
            {
                _brains.Add(key, new Chain(_settings.WindowSize));
            }
            var brain = _brains[key];

            if (Regex.IsMatch(message, botNameMatch))
            {
                var regex = new Regex(botNameMatch);

                message = regex.Replace(message, "");

                var response = TextSanitizer.FixInputEnds(brain.GenerateSentenceFromSentence(message));

                if (!string.IsNullOrWhiteSpace(response))
                {
                    return(new List <string> {
                        response
                    });
                }

                response = RandomResponse.Reponse(m.Sender);
                return(new List <string> {
                    response
                });
            }

            if (message.Split(' ').Length > _settings.WindowSize)
            {
                message = TextSanitizer.SanitizeInput(message);
                brain.Learn(message);

                SaveLine(key, message);
            }


            return(null);
        }
        public async Task Message(string message, SocketMessage m)
        {
            if (_brain == null)
            {
                return;
            }
            var brain = _brain;

            bool mentioned = false;

            foreach (var user in m.MentionedUsers)
            {
                if (user.Id == DiscordClient.CurrentUser.Id)
                {
                    mentioned = true;
                }
            }

            if (mentioned)
            {
                TextSanitizer.FixMiscelanious(message = Regex.Replace(message, "<.+>", ""));
                var response = TextSanitizer.FixInputEnds(brain.GenerateSentenceFromSentence(message));

                if (!string.IsNullOrWhiteSpace(response))
                {
                    await m.Channel.SendMessageAsync(response);

                    return;
                }

                response = RandomResponse.Reponse(m.Author.Username);
                await m.Channel.SendMessageAsync(response);

                return;
            }

            if (message[0] != ClientConfig.CommandSymbol && message.Split(' ').Length > _settings.WindowSize)
            {
                message = TextSanitizer.SanitizeInput(message);
                brain.Learn(message);

                SaveLine(message);
            }
        }