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; }
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); } }
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); }
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); }
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); } }