public static async void SongProcessing(TelegramBotClient Client, Message Message, User currentUser)
        {
            try
            {
                var query = $"https://amdm.ru/search/?q={Message.Text}";

                var urls = await FindSongs(query, currentUser.LimitResultsNumber);

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