public static async void SendStartMessage(ITelegramBotClient Bot, long id, string name) { try { var image = new InputOnlineFile("https://telegra.ph/file/178ade71533890e6400c2.png"); var caption = $"Привет, {name}!\n" + $"Я Telegram бот для поиска гитарных аккордов"; await Bot.SendPhotoAsync(id, image, caption, replyMarkup : Keyboards.GetMainMenu()); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public static async void MessageReceiving(object sender, MessageEventArgs args) { var client = sender as TelegramBotClient; var Message = args.Message; if (Message.Text == null) { return; } User currentUser = new User(Message.From.Id); Console.WriteLine($"{DateTime.Now} {Message.From.FirstName} {Message.From.LastName} {Message.From.Id} {Message.Text}"); if (Message.Text == "Вернуться в Главное Меню 🚀") { currentUser.Stage = State.Stage.Default; currentUser.State = State.Categories.Default; try { await client.SendTextMessageAsync( Message.Chat.Id, "Выберите раздел меню 🎯", replyMarkup : Keyboards.GetMainMenu()); } catch (Exception ex) { Console.WriteLine(ex.Message); } currentUser.SaveUser(); return; } if (currentUser.State == State.Categories.Default) { currentUser.State = GetMessageCategory(Message.Text); } switch (currentUser.State) { case State.Categories.Start: { SendStartMessage(client, currentUser.id, Message.Chat.FirstName); currentUser.State = State.Categories.Default; break; } case State.Categories.Search: { if (currentUser.Stage == State.Stage.Default) { try { await client.SendTextMessageAsync( Message.Chat.Id, "SEARCH 🔎\nЧто ты хочешь найти?\nВведите название песни или исполнителя ✏️", replyMarkup : Keyboards.GetReturnKeyboard()); } catch (Exception exc) { Console.WriteLine(exc.Message); } currentUser.Stage = State.Stage.Alpha; } else if (currentUser.Stage == State.Stage.Alpha) { SongProcessing(client, Message, currentUser); } break; } case State.Categories.Settings: { if (currentUser.Stage == State.Stage.Default) { try { await client.SendTextMessageAsync( Message.Chat.Id, "НАСТРОЙКИ ⚙️", replyMarkup : Keyboards.GetSettingsMenu()); } catch (Exception ex) { Console.WriteLine(ex.Message); } currentUser.Stage = State.Stage.Alpha; } else if (currentUser.Stage == State.Stage.Alpha) { switch (Message.Text) { case "Сменить количество результатов 🎲": { try { await client.SendTextMessageAsync( Message.Chat.Id, "Отправь количество результатов в разделе ПОИСК ✏️", replyMarkup : Keyboards.GetNumberKeyboard()); } catch (Exception ex) { Console.WriteLine(ex.Message); } currentUser.Stage = State.Stage.SearchLimit; break; } case "Связаться с разработчиком 📝": { try { await client.SendTextMessageAsync( Message.Chat.Id, "Отправь свое сообщение ✏️ Оно будет прочитано разработчиком 📌", replyMarkup : Keyboards.GetRemoveKeyboard()); } catch (Exception ex) { Console.WriteLine(ex.Message); } currentUser.Stage = State.Stage.SendMessage; break; } default: { try { await client.SendTextMessageAsync( Message.Chat.Id, "Выбери раздел меню 🎯", replyMarkup : Keyboards.GetSettingsMenu()); } catch (Exception ex) { Console.WriteLine(ex.Message); } break; } } } else if (currentUser.Stage == State.Stage.SearchLimit) { int count; if (int.TryParse(Message.Text, out count) && count <= 10) { currentUser.LimitResultsNumber = count; } else { currentUser.LimitResultsNumber = 5; } try { await client.SendTextMessageAsync( Message.Chat.Id, "НАСТРОЙКИ ⚙️\n" + "Выбери раздел меню 🎯", replyMarkup : Keyboards.GetSettingsMenu()); } catch (Exception ex) { Console.WriteLine(ex.Message); } currentUser.Stage = State.Stage.Alpha; } else if (currentUser.Stage == State.Stage.SendMessage) { try { await client.SendTextMessageAsync( Message.Chat.Id, "Спасибо за твое сообщение 💎", replyMarkup : Keyboards.GetRemoveKeyboard()); await client.SendTextMessageAsync( Message.Chat.Id, "Настройки ⚙️\n" + "Выбери раздел меню 🎯", replyMarkup : Keyboards.GetSettingsMenu()); } catch (Exception ex) { Console.WriteLine(ex.Message); } currentUser.Stage = State.Stage.Alpha; } break; } case State.Categories.Popular: { try { var query = "https://amdm.ru/akkordi/popular/week/"; var urls = await FindSongs(query, 10); if (urls.Count == 0) { client.SendTextMessageAsync( Message.Chat.Id, "Извините, раздел временно не работает!", replyMarkup: Keyboards.GetReturnKeyboard()); return; } client.SendTextMessageAsync( Message.Chat.Id, "Пожалуйста, подожди несколько секунд ⏳", replyMarkup: Keyboards.GetReturnKeyboard()); foreach (var urlPair in urls) { var songName = urlPair.Key; var songUrl = urlPair.Value; if (songUrl != string.Empty) { string chordsUrl; if (DataBase.CheckSong(songName, out chordsUrl)) { if (chordsUrl != string.Empty) { SendFilesByFileId(client, new Dictionary <string, string> { { chordsUrl, songName } }, currentUser.id, true); continue; } } SongSending(client, currentUser.id, songName, songUrl); } } try { client.SendTextMessageAsync( Message.Chat.Id, $"Найденные {urls.Count} Песни 💎\n" + $"Ты можешь сменить количество результатов в разделе НАСТРОЙКИ ⚙️", replyMarkup: Keyboards.GetReturnKeyboard()); } catch (Exception ex) { Console.WriteLine(ex.Message); } } catch (Exception ex) { Console.WriteLine(ex.Message); } break; } case State.Categories.Playlist: { var urls = DataBase.GetMusicLibrary(currentUser.id); try { if (urls.Count == 0) { await client.SendTextMessageAsync( Message.Chat.Id, "Тут будут твои любимые песни 🎯", replyMarkup : Keyboards.GetMainMenu()); } else { SendFilesByFileId(client, urls, currentUser.id, false); } } catch (Exception ex) { } currentUser.State = State.Categories.Default; break; } default: { try { await client.SendTextMessageAsync( Message.Chat.Id, "Выбери рздел меню 🎯", replyMarkup : Keyboards.GetMainMenu()); } catch (Exception ex) { Console.WriteLine(ex.Message); } currentUser.Stage = State.Stage.Default; break; } } currentUser.SaveUser(); }