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); } }
private void LoadBrain() { using (var stream = new FileStream(BrainPath, FileMode.Open)) using (var reader = new StreamReader(stream)) { var brain = new Chain(_settings.WindowSize); string line; var i = 0; while ((line = reader.ReadLine()) != null) { brain.Learn(TextSanitizer.SanitizeInput(line)); i++; } _brain = brain; Log.Information("Patternspider - Sentience: Loaded Brain, Parsed {i} Lines", i); } }
private void LoadBrains() { var brainFiles = Directory.EnumerateFiles(BrainPath, "*.brain"); foreach (var brainfile in brainFiles) { var sr = new StreamReader(brainfile); var brain = new Chain(_settings.WindowSize); string line; var key = brainfile.Replace(".brain", ""); key = key.Replace(BrainPath, ""); while ((line = sr.ReadLine()) != null) { brain.Learn(TextSanitizer.SanitizeInput(line)); } _brains.Add(key, brain); sr.Close(); Console.WriteLine("Sentience: Loaded {0}", key); } }