Ejemplo n.º 1
0
        public async Task ProcessMessage(Message message)
        {
            if (_chatSettingsBotData.ActiveCommand != ActiveCommand.YouTubeSearch)
            {
                var inlineKeyboard = new InlineKeyboardMarkup(new[]
                {
                    new[]
                    {
                        InlineKeyboardButton.WithCallbackData("Dancing!", "Dancing"),
                        InlineKeyboardButton.WithCallbackData("Cats in space", "Cats in space"),
                        InlineKeyboardButton.WithCallbackData("Tame Impala", "Tame Impala")
                    }
                });

                _chatSettingsBotData.ActiveCommand = ActiveCommand.YouTubeSearch;

                await _botService.Client.SendTextMessageAsync(message.Chat.Id,
                                                              "Choose from list ot try to search something funny: ", replyMarkup : inlineKeyboard);

                return;
            }

            var svc = new CustomsearchService(new BaseClientService.Initializer
            {
                ApiKey = BotConstants.YouTubeSearch.ApiKey
            });
            var listRequest = svc.Cse.List();

            listRequest.Q = message.Text;

            listRequest.Cx = BotConstants.YouTubeSearch.CxKey;
            var search = await listRequest.ExecuteAsync();

            var keyboard = KeyboardBuilder.CreateExitButton();

            if (search.Items == null || search.Items.Count == 0)
            {
                await _botService.Client.SendTextMessageAsync(message.Chat.Id, "No videos:( Try again: ",
                                                              replyMarkup : keyboard);

                return;
            }

            var numberOfVideos = 3;

            for (var i = 0; i < Math.Min(search.Items.Count, numberOfVideos); i++)
            {
                if (i == Math.Min(search.Items.Count, numberOfVideos) - 1)
                {
                    await _botService.Client.SendTextMessageAsync(message.Chat.Id, search.Items[i].Link,
                                                                  replyMarkup : keyboard);

                    break;
                }

                await _botService.Client.SendTextMessageAsync(message.Chat.Id, search.Items[i].Link);
            }

            _chatSettingsBotData.ActiveCommand = ActiveCommand.Default;
        }
Ejemplo n.º 2
0
        public async Task ProcessMessage(Message message)
        {
            if (message.Text == TextCommandList.AddAnswer)
            {
                await _botService.Client.SendTextMessageAsync(message.Chat.Id, "Enter the question: ");

                _chatSettingsBotData.TrainingAction = TrainingActions.AddAnswer;
                _chatSettingsBotData.ActiveCommand  = ActiveCommand.Training;
                _chatSettingsBotData.LearningState  = 1;

                return;
            }

            if (_chatSettingsBotData.LearningState == 1)
            {
                var questionId = CurrentDialogBotData.DialogBotData.QuestionsData
                                 .FirstOrDefault(x => x.Value.Contains(message.Text.ToLower())).Key;
                if (questionId == 0)
                {
                    await _botService.Client.SendTextMessageAsync(message.Chat.Id, "Question not found ");

                    return;
                }

                _chatSettingsBotData.LearningState     = 2;
                _chatSettingsBotData.CurrentQuestionId = questionId;

                await _botService.Client.SendTextMessageAsync(message.Chat.Id, "Enter the answer you want to add:");

                return;
            }

            if (message.Text == TextCommandList.Exit)
            {
                _chatSettingsBotData.TrainingAction = TrainingActions.NoTrain;
                _chatSettingsBotData.ActiveCommand  = ActiveCommand.Default;
                _chatSettingsBotData.LearningState  = 0;

                var exitKeyboard = KeyboardBuilder.CreateExitButton();
                await _botService.Client.SendTextMessageAsync(message.Chat.Id, "Yeah!", replyMarkup : exitKeyboard);

                return;
            }

            if (_chatSettingsBotData.LearningState == 2)
            {
                CurrentDialogBotData.DialogBotData.AnswerData[_chatSettingsBotData.CurrentQuestionId]
                .Enqueue(message.Text.ToLower());

                var inlineKeyboard = new InlineKeyboardMarkup(new[]
                {
                    new[] { InlineKeyboardButton.WithCallbackData("Finish train ", TextCommandList.Exit) },
                });

                await _botService.Client.SendTextMessageAsync(message.Chat.Id,
                                                              "Answer was added! Want to add another answer?", replyMarkup : inlineKeyboard);
            }
        }
Ejemplo n.º 3
0
        public async Task ProcessMessage(Message message)
        {
            if (_chatSettingsBotData.ActiveCommand != ActiveCommand.WeatherApi)
            {
                var inlineKeyboard = new InlineKeyboardMarkup(new[]
                {
                    new[]
                    {
                        InlineKeyboardButton.WithCallbackData("Samara", "Samara"),
                        InlineKeyboardButton.WithCallbackData("Saint-Petersburg", "Saint Petersburg"),
                        InlineKeyboardButton.WithCallbackData("Moscow", "Moscow")
                    }
                });

                _chatSettingsBotData.ActiveCommand = ActiveCommand.WeatherApi;

                await _botService.Client.SendTextMessageAsync(message.Chat.Id, "Enter the city or choose from list: ",
                                                              replyMarkup : inlineKeyboard);

                return;
            }

            var uri      = $"{BotConstants.Weather.Url}?q={message.Text}&appid={BotConstants.Weather.ApiKey}";
            var client   = new RestClient(BotConstants.Weather.Host);
            var request  = new RestRequest(uri, DataFormat.Json);
            var response = await client.ExecuteAsync(request);

            var json = JObject.Parse(response.Content);

            if (json["cod"].ToString() == "404")
            {
                await _botService.Client.SendTextMessageAsync(message.Chat.Id, "Unknown city, try again: ");

                return;
            }

            if (json["name"] == null)
            {
                await _botService.Client.SendTextMessageAsync(message.Chat.Id, "Server Error");

                return;
            }

            var city    = json["name"];
            var weather = json["weather"][0]["main"];
            var temp    = Math.Round((double)json["main"]["temp"] - 273.15, 2);
            var wind    = json["wind"]["speed"];
            var result  =
                $"City: {city}, Weather: {weather},{Environment.NewLine}Temperature: {temp} °C, Wind: {wind} m/s";

            _chatSettingsBotData.ActiveCommand = ActiveCommand.Default;

            var exitKeyboard = KeyboardBuilder.CreateExitButton();
            await _botService.Client.SendTextMessageAsync(message.Chat.Id, result, replyMarkup : exitKeyboard);
        }
        public async Task ProcessMessage(Message message)
        {
            if (_chatSettingsBotData.ActiveCommand != ActiveCommand.WikiApi)
            {
                var inlineKeyboard = new InlineKeyboardMarkup(new[]
                {
                    new[]
                    {
                        InlineKeyboardButton.WithCallbackData("Travel", "Travel"),
                        InlineKeyboardButton.WithCallbackData("Singing", "Singing"),
                        InlineKeyboardButton.WithCallbackData("Eagle", "Eagle")
                    }
                });

                _chatSettingsBotData.ActiveCommand = ActiveCommand.WikiApi;

                await _botService.Client.SendTextMessageAsync(message.Chat.Id,
                                                              "Enter name of article or choose from list: ", replyMarkup : inlineKeyboard);

                return;
            }

            var config  = Configuration.Default.WithDefaultLoader().WithCss();
            var context = BrowsingContext.New(config);

            if (string.IsNullOrEmpty(message.Text))
            {
                await _botService.Client.SendTextMessageAsync(message.Chat.Id, "Invalid request");

                return;
            }

            var source = await context.OpenAsync(BotConstants.Wiki.Url + message.Text);

            var document = _htmlParser.ParseDocument(source.Body.InnerHtml);

            var firstParagraph = document.GetElementById("mf-section-0")?.GetElementsByTagName("p");

            if (firstParagraph == null)
            {
                await _botService.Client.SendTextMessageAsync(message.Chat.Id, "Not found, try again");

                return;
            }

            var result       = HtmlParserHelper.RemoveUnwantedTagsFromHtmlCollection(firstParagraph);
            var exitKeyboard = KeyboardBuilder.CreateExitButton();

            _chatSettingsBotData.ActiveCommand = ActiveCommand.Default;

            await _botService.Client.SendTextMessageAsync(message.Chat.Id, result, replyMarkup : exitKeyboard);
        }
Ejemplo n.º 5
0
        public async Task ProcessMessage(Message message)
        {
            var exitKeyboard = KeyboardBuilder.CreateExitButton();

            if (_chatSettingsBotData.AccountName == BotConstants.AccountName.Admin)
            {
                await _botService.Client.SendTextMessageAsync(message.Chat.Id, "Some Secret Info",
                                                              replyMarkup : exitKeyboard);

                return;
            }

            await _botService.Client.SendTextMessageAsync(message.Chat.Id, "Denied ", replyMarkup : exitKeyboard);
        }
        public async Task ProcessMessage(Message message)
        {
            string infoMessage;

            if (!_chatSettingsBotData.VoiceAnswer)
            {
                _chatSettingsBotData.VoiceAnswer = true;
                infoMessage = "Voice: On";
            }
            else
            {
                _chatSettingsBotData.VoiceAnswer = false;
                infoMessage = "Voice: Off";
            }

            var exitKeyboard = KeyboardBuilder.CreateExitButton();
            await _botService.Client.SendTextMessageAsync(message.Chat.Id, infoMessage, replyMarkup : exitKeyboard);
        }
Ejemplo n.º 7
0
        public async Task ProcessMessage(Message message)
        {
            if (message.Text == TextCommandList.CreateNewQuestion)
            {
                _chatSettingsBotData.TrainingAction    = TrainingActions.Create;
                _chatSettingsBotData.ActiveCommand     = ActiveCommand.Training;
                _chatSettingsBotData.LearningState     = 1;
                _chatSettingsBotData.CurrentQuestionId = CurrentDialogBotData.DialogBotData.Count + 1;

                await _botService.Client.SendTextMessageAsync(message.Chat.Id, "Enter the question: ");

                return;
            }

            if (_chatSettingsBotData.LearningState == 1)
            {
                if (CurrentDialogBotData.DialogBotData.QuestionsData.Any(x => x.Value.Contains(message.Text.ToLower())))
                {
                    await _botService.Client.SendTextMessageAsync(message.Chat.Id,
                                                                  "There is already such a question. Please, try again:");

                    return;
                }

                CurrentDialogBotData.DialogBotData.QuestionsData.AddOrUpdate(_chatSettingsBotData.CurrentQuestionId,
                                                                             new ConcurrentQueue <string>(new List <string> {
                    message.Text.ToLower()
                }),
                                                                             (key, oldValue) =>
                {
                    oldValue.Enqueue(message.Text.ToLower());
                    return(oldValue);
                });
                _chatSettingsBotData.LearningState = 2;

                await _botService.Client.SendTextMessageAsync(message.Chat.Id, "Enter the answer: ");

                return;
            }

            if (message.Text == TextCommandList.Exit)
            {
                _chatSettingsBotData.TrainingAction = TrainingActions.NoTrain;
                _chatSettingsBotData.ActiveCommand  = ActiveCommand.Default;
                _chatSettingsBotData.LearningState  = 0;

                var exitKeyboard = KeyboardBuilder.CreateExitButton();
                await _botService.Client.SendTextMessageAsync(message.Chat.Id, "Yeah!", replyMarkup : exitKeyboard);
            }
            else if (_chatSettingsBotData.LearningState == 2)
            {
                if (CurrentDialogBotData.DialogBotData.AnswerData.All(x =>
                                                                      x.Key != _chatSettingsBotData.CurrentQuestionId))
                {
                    CurrentDialogBotData.DialogBotData.AnswerData.AddOrUpdate(_chatSettingsBotData.CurrentQuestionId,
                                                                              new ConcurrentQueue <string>(new List <string> {
                        message.Text.ToLower()
                    }),
                                                                              (key, oldValue) =>
                    {
                        oldValue.Enqueue(message.Text.ToLower());
                        return(oldValue);
                    });
                }
                else
                {
                    CurrentDialogBotData.DialogBotData.AnswerData
                    .SingleOrDefault(x => x.Key == _chatSettingsBotData.CurrentQuestionId).Value
                    .Enqueue(message.Text.ToLower());
                }

                var inlineKeyboard = new InlineKeyboardMarkup(new[]
                {
                    new[] { InlineKeyboardButton.WithCallbackData("Finish train ", TextCommandList.Exit) },
                });

                await _botService.Client.SendTextMessageAsync(message.Chat.Id, "Want to add another answer?",
                                                              replyMarkup : inlineKeyboard);
            }
        }