Example #1
0
        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);
        }
Example #2
0
        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");
            }
        }
Example #3
0
        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();
        }
Example #4
0
        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);
            }
        }
Example #5
0
        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();
        }