public string DummyTalk(UserMessage message) { string result = ""; if (message.Message.ToLower().Contains("запретить") && !message.Message.ToLower().Contains("законодательном")) { result = "На законодательном уровне!"; } if (message.Message.ToLower().StartsWith("!info")) { var stringList = SwagContainer.Resolve <IPluginContainer>().Plugins.Select(x => x.PluginName).ToList(); result = "Доступные плагины: " + string.Join(", ", stringList); } if (message.Message.ToLower().StartsWith("!zay") && message.UserName == Program.Configuration["Irc:BotAdmin"]) { var say = message.Message.ToLower().Replace("!zay", "").Trim(); result = say; } if (message.Message.ToLower().StartsWith("!join") && message.UserName == Program.Configuration["Irc:BotAdmin"]) { var targetChannel = message.Message.ToLower().Replace("!join", "").Trim(); if (!targetChannel.StartsWith("#")) { targetChannel = "#" + targetChannel; } _ircBot.JoinChannel(targetChannel); } if (message.Message.ToLower().StartsWith("!leave") && message.UserName == Program.Configuration["Irc:BotAdmin"]) { var targetChannel = message.Message.ToLower().Replace("!leave", "").Trim(); if (!targetChannel.StartsWith("#")) { targetChannel = "#" + targetChannel; } _ircBot.LeaveChannel(targetChannel); } if (message.Message.ToLower().StartsWith("!quit") && message.UserName == Program.Configuration["Irc:BotAdmin"]) { _ircBot.Dispose(); } return(result); }
private static async void Program_NewMessageRecieved(object sender, EventArgs e) { try { var messageEvent = e as NewMessageEventArgs; if (messageEvent == null || messageEvent.Channel == null || string.IsNullOrWhiteSpace(messageEvent.Channel.Name) || messageEvent.UserMessage == null || string.IsNullOrWhiteSpace(messageEvent.UserMessage.Message)) { return; } Console.WriteLine(messageEvent.Channel.Name + " " + messageEvent.UserMessage.Message); if (ChatCommandPrefixes.Any(x => messageEvent.UserMessage.Message.StartsWith(x))) { var trimmedMessage = messageEvent.UserMessage.Message.Remove(0, 2).Trim(); var result = await SwagContainer.Resolve <IDialogflow>().SendMessage(trimmedMessage); Console.WriteLine(result.Action + " " + result.Speech); var plugins = SwagContainer.Resolve <IPluginContainer>().Plugins; var plugin = plugins.SingleOrDefault(x => x.ActionsName.Contains(result.Action)); string response = ""; if (plugin == null) //if plugin with action not found - just say something { response = result.Speech; } else { response = await plugin.GetReponse(result.Parameters, result.Action); } SwagContainer.Resolve <IIrcBot>() .SendMessageToChannel(messageEvent.Channel, response); } else { var dummyTalker = SwagContainer.Resolve <DummyTalker>(); var response = dummyTalker.DummyTalk(messageEvent.UserMessage); if (!string.IsNullOrEmpty(response)) { SwagContainer.Resolve <IIrcBot>() .SendMessageToChannel(messageEvent.Channel, response); } } } catch (Exception) { Console.WriteLine("Exception"); } }
private async Task Do(string line) { var result = await SwagContainer.Resolve <IDialogflow>().SendMessage(line); var plugin = SwagContainer.Resolve <PluginContainer>().Plugins .SingleOrDefault(x => x.ActionsName.Contains(result.Action)); if (plugin == null) //if plugin with action not found - just say something { Console.WriteLine(result.Speech); } else { //var pluginResponse = plugin.GetReponse(result.Parameters, result.Action).Result; var pluginResponse = SwagContainer.Resolve <WeatherPlugin>().GetReponse(result.Parameters, result.Action).Result; Console.WriteLine(pluginResponse); } Console.ReadKey(); }
static void Main(string[] args) { var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json"); Configuration = builder.Build(); SwagContainer.Init(); SwagContainer.Resolve <IDialogflow>().Connect(Configuration["DialogflowKey"]); SwagContainer.Resolve <IPluginContainer>().LoadPlugins(); SwagContainer.Resolve <IIrcBot>().Connect(Configuration["Irc:Server"], new IrcUserRegistrationInfo() { NickName = Configuration["Irc:UserName"], Password = Configuration["Irc:Password"], RealName = Configuration["Irc:UserName"], UserName = Configuration["Irc:UserName"] }); SwagContainer.Resolve <IIrcBot>().NewMessageRecieved += Program_NewMessageRecieved; System.Threading.Thread.Sleep(5000); SwagContainer.Resolve <IIrcBot>().JoinChannel("#test"); System.Threading.Thread.Sleep(2000); foreach (var ircChannel in SwagContainer.Resolve <IIrcBot>().GetChannels()) { SwagContainer.Resolve <IIrcBot>().SendMessageToChannel(ircChannel, "!д"); SwagContainer.Resolve <IIrcBot>().SendMessageToChannel(ircChannel, "Прочитала " + SwagContainer.Resolve <IPluginContainer>().Plugins.Count + " плагинов"); } SwagContainer.Resolve <IIrcBot>().GetChannels(); while (true) { System.Threading.Thread.Sleep(50); } }
static void Main(string[] args) { var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json"); Configuration = builder.Build(); SwagContainer.Init(); SwagContainer.Resolve <IDialogflow>().Connect(Configuration["DialogflowKey"]); SwagContainer.Resolve <PluginContainer>().LoadPlugins(); SwagContainer.Resolve <WeatherPlugin>().Init(new Dictionary <string, string>() { { "apiKey", Configuration["Plugins:Weather:apiKey"] } }); var p = new Program(); var line = Console.ReadLine(); p.Do(line); Console.ReadKey(); }