Ejemplo n.º 1
0
        public async Task sentTelegram(string filename, string locationStr, int locationIndex)
        {
            try
            {
                var        bot        = new Telegram.Bot.TelegramBotClient("*******************");
                List <int> ChatIDList = _context.LocationTelegram.Where(x => x.LocationIndex == locationIndex).Select(x => x.ChatID).ToList();

                foreach (int chatID in ChatIDList)
                {
                    await bot.SendTextMessageAsync(chatID, "From: SkyTech Mask Monitoring System");

                    await bot.SendTextMessageAsync(chatID, "Subject: Notification of people without mask");

                    await bot.SendTextMessageAsync(chatID, "Location: " + locationStr);

                    await bot.SendTextMessageAsync(chatID, "Date Time: " + DateTime.Now);

                    await bot.SendTextMessageAsync(chatID, "A person not wearing mask is discovered in the premises.<br/> This is a system generated email. Please do not reply.");

                    using (Stream stream = System.IO.File.OpenRead(filename))
                    {
                        await bot.SendPhotoAsync(chatID, stream);
                    }
                }
            } catch (Exception ex)
            {
                Debug.WriteLine("Send telegram");
                Debug.WriteLine(ex.InnerException);
            }
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> NewMessage([FromForm] NewTelegramMessage newTelegramMessage)
        {
            try
            {
                _logger.LogInformation($"{newTelegramMessage.ChatId} : {newTelegramMessage.Text}");

                var botClient = new Telegram.Bot.TelegramBotClient(newTelegramMessage.BotToken);
                var me        = await botClient.GetMeAsync();

                if (newTelegramMessage.File != null)
                {
                    var resultPhotoMessage = await botClient.SendPhotoAsync(newTelegramMessage.ChatId, new InputMedia(newTelegramMessage.File.OpenReadStream(), newTelegramMessage.File.FileName), newTelegramMessage.Text);

                    return(Ok(resultPhotoMessage.MessageId));
                }
                else
                {
                    var resultTextMessage = await botClient.SendTextMessageAsync(newTelegramMessage.ChatId, newTelegramMessage.Text);

                    return(Ok(resultTextMessage.MessageId));
                }
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(BadRequest(e.Message));
            }
        }
Ejemplo n.º 3
0
 private async static void SendPhotoAsync(long?ChatId, string Caption, byte[] file, IReplyMarkup Markup = null)
 {
     if (ChatId.HasValue)
     {
         using (MemoryStream ms = new MemoryStream(file))
         {
             await bot.SendPhotoAsync(ChatId, new InputOnlineFile(ms), Caption, ParseMode.Default, false, 0, Markup);
         }
     }
 }
Ejemplo n.º 4
0
        async void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            var worker = sender as BackgroundWorker;
            var key    = e.Argument as String; // получаем ключ аргументов

            try
            {
                var Bot = new Telegram.Bot.TelegramBotClient(key); // инициализируем API
                await Bot.SetWebhookAsync("");                     //Bot.SetWebhook(""); // Обязательно! убираем старую привязку к вебхуку для бота

                int offset = 0;                                    // отступ по сообщениям
                while (true)
                {
                    var newUpdates = await Bot.GetUpdatesAsync(offset); // получаем массив обновлений

                    var updates = newUpdates.Distinct().ToArray();      // убираем повторения из списка новых запросов
                    foreach (var update in updates)                     // Перебираем все обновления
                    {
                        var message = update.Message;
                        if (message.Type == Telegram.Bot.Types.Enums.MessageType.Text)
                        {
                            if (message.Text == "/getimage" || message.Text == "/getimage@...") //После @ - пишем ссылку на вашего бота!!! Это нужно для исп бота в конфах!!!
                            {
                                ImgurPars imgurPars = new ImgurPars();
                                // в ответ на команду /getimage выводим картинку
                                await Bot.SendPhotoAsync(message.Chat.Id, imgurPars.GeneratePictur());
                            }
                        }
                        offset = update.Id + 1;
                    }
                }
            }
            catch (Telegram.Bot.Exceptions.ApiRequestException ex)
            {
                Console.WriteLine(ex.Message); // если ключ не подошел - пишем об этом в консоль отладки
            }
        }
Ejemplo n.º 5
0
        private async Task <string> SendPhotoAndSaveFileId(AttachmentFs attachmentFs)
        {
            if (BotInfo == null)
            {
                BotInfo = Bot.GeneralFunction.GetBotInfo();
            }


            try
            {
                string token = BotInfo.Token;

                TelegramBotClient = new Telegram.Bot.TelegramBotClient(token);

                System.IO.Stream stream = new MemoryStream(attachmentFs.Fs);

                Telegram.Bot.Types.FileToSend fileToSend = new Telegram.Bot.Types.FileToSend
                {
                    Content  = stream,
                    Filename = "Photo.jpg"
                };

                var Message = await TelegramBotClient.SendPhotoAsync(BotInfo.OwnerChatId, fileToSend);

                string Fileid = Message.Photo[Message.Photo.Length - 1].FileId;

                AttachmentTelegramFunction.AddAttachmentTelegram(attachmentFs.Id, BotInfo.Id, Fileid);

                return(Fileid);
            }

            catch
            {
                return(null);
            }
        }
Ejemplo n.º 6
0
        public async void BotOnMessageReceived(object sender, MessageEventArgs messageEventArgs)
        {
            Message message = messageEventArgs.Message;

            if (message == null || message.Type != MessageType.TextMessage)
            {
                return;
            }
            _chatid = message.Chat.Id;
            try
            {
                Logger.ColoredConsoleWrite(ConsoleColor.Red, "[TelegramAPI] Got Request from " + message.From.Username + " | " + message.Text);
                string username       = _clientSettings.TelegramName;
                string telegramAnswer = string.Empty;

                if (username != message.From.Username)
                {
                    using (System.IO.Stream stream = new System.IO.MemoryStream())
                    {
                        Properties.Resources.norights.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
                        stream.Position = 0;
                        await _telegram.SendPhotoAsync(_chatid, new FileToSend("norights.jpg", stream), replyMarkup : new ReplyKeyboardHide());
                    }
                    return;
                }

                // [0]-Commando; [1+]-Argument
                string[]         textCMD = message.Text.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                TelegramUtilTask cmd     = getTask(textCMD[0]);
                switch (cmd)
                {
                case TelegramUtilTask.UNKNOWN:
                    telegramAnswer = string.Format("Usage:\r\n{0}\r\n{1}\r\n{2}\r\n{3}\r\n{4}",
                                                   @"/stats - Get Current Stats",
                                                   @"/livestats - Enable/Disable Live Stats",
                                                   @"/information <topic> - Enable/Disable Information topics",
                                                   @"/top <HowMany?> - Outputs Top (?) Pokemons",
                                                   @"/forceevolve - Forces Evolve");
                    break;

                case TelegramUtilTask.GET_STATS:
                    var inventory = await _client.GetInventory();

                    var profil = await _client.GetProfile();

                    IEnumerable <PlayerStats> stats = inventory.InventoryDelta.InventoryItems
                                                      .Select(i => i.InventoryItemData.PlayerStats)
                                                      .Where(i => i != null);
                    foreach (PlayerStats ps in stats)
                    {
                        int l = ps.Level;

                        long   expneeded     = ((ps.NextLevelXp - ps.PrevLevelXp) - StringUtils.getExpDiff(ps.Level));
                        long   curexp        = ((ps.Experience - ps.PrevLevelXp) - StringUtils.getExpDiff(ps.Level));
                        double curexppercent = (Convert.ToDouble(curexp) / Convert.ToDouble(expneeded)) * 100;
                        string curloc        = _client.CurrentLat + "%20" + _client.CurrentLng;
                        curloc = curloc.Replace(",", ".");
                        string curlochtml = "https://www.google.de/maps/search/" + curloc + "/";
                        double shortenLng = Math.Round(_client.CurrentLng, 3);
                        double shortenLat = Math.Round(_client.CurrentLat, 3);
                        string pokemap    = shortenLat + ";" + shortenLng;
                        pokemap = pokemap.Replace(",", ".").Replace(";", ",");
                        string pokevishtml = "https://skiplagged.com/pokemon/#" + pokemap + ",14";
                        telegramAnswer +=
                            "\nNickname: " + profil.Profile.Username
                            + "\nLevel: " + ps.Level
                            + "\nEXP Needed: " + ((ps.NextLevelXp - ps.PrevLevelXp) - StringUtils.getExpDiff(ps.Level))
                            + $"\nCurrent EXP: {curexp} ({Math.Round(curexppercent)}%)"
                            + "\nEXP to Level up: " + ((ps.NextLevelXp) - (ps.Experience))
                            + "\nKM walked: " + ps.KmWalked
                            + "\nPokeStops visited: " + ps.PokeStopVisits
                            + "\nStardust: " + profil.Profile.Currency.ToArray()[1].Amount
                            + "\nPokemons: " + await _inventory.getPokemonCount() + "/" + profil.Profile.PokeStorage
                            + "\nItems: " + await _inventory.getInventoryCount() + " / " + profil.Profile.ItemStorage
                            + "\nCurentLocation:\n" + curlochtml
                            + "\nPokevision:\n" + pokevishtml;
                    }
                    break;

                case TelegramUtilTask.GET_TOPLIST:
                    int shows = 10;
                    if (textCMD.Length > 1 && !int.TryParse(textCMD[1], out shows))
                    {
                        telegramAnswer += $"Error! This is not a Number: {textCMD[1]}\nNevermind...\n";
                        shows           = 10; //TryParse error will reset to 0
                    }
                    telegramAnswer += "Showing " + shows + " Pokemons...\nSorting...";
                    await _telegram.SendTextMessageAsync(_chatid, telegramAnswer, replyMarkup : new ReplyKeyboardHide());

                    var myPokemons = await _inventory.GetPokemons();

                    myPokemons = myPokemons.OrderByDescending(x => x.Cp);
                    var profile = await _client.GetProfile();

                    telegramAnswer = $"Top {shows} Pokemons of {profile.Profile.Username}:";

                    IEnumerable <PokemonData> topPokemon = myPokemons.Take(shows);
                    foreach (PokemonData pokemon in topPokemon)
                    {
                        telegramAnswer += string.Format("\n{0} ({1})  |  CP: {2} ({3}% perfect)",
                                                        pokemon.PokemonId,
                                                        StringUtils.getPokemonNameGer(pokemon.PokemonId),
                                                        pokemon.Cp,
                                                        PokemonInfo.CalculatePokemonPerfection(pokemon));
                    }
                    break;

                case TelegramUtilTask.SWITCH_LIVESTATS:
                    _livestats = SwitchAndGetAnswer(_livestats, out telegramAnswer, "Live Stats");
                    break;

                case TelegramUtilTask.SWITCH_INFORMATION:
                    //_informations = SwitchAndGetAnswer(_informations, out telegramAnswer, "Information");
                    Array topics = Enum.GetValues(typeof(TelegramUtilInformationTopics));
                    if (textCMD.Length > 1)
                    {
                        if (textCMD[1] == "all-enable")
                        {
                            foreach (TelegramUtilInformationTopics topic in topics)
                            {
                                String niceName = topic.ToString().Substring(0, 1).ToUpper() + topic.ToString().Substring(1).ToLower();
                                telegramAnswer     += "Enabled information topic " + niceName + "\n";
                                _information[topic] = true;
                            }
                            break;
                        }
                        else if (textCMD[1] == "all-disable")
                        {
                            foreach (TelegramUtilInformationTopics topic in topics)
                            {
                                String niceName = topic.ToString().Substring(0, 1).ToUpper() + topic.ToString().Substring(1).ToLower();
                                telegramAnswer     += "Disabled information topic " + niceName + "\n";
                                _information[topic] = false;
                            }
                            break;
                        }
                        else
                        {
                            foreach (TelegramUtilInformationTopics topic in topics)
                            {
                                String niceName = topic.ToString().Substring(0, 1).ToUpper() + topic.ToString().Substring(1).ToLower();
                                telegramAnswer      = (_information[topic] ? "Dis" : "En") + "abled information topic " + niceName + "\n";
                                _information[topic] = !_information[topic];
                                break;
                            }
                        }
                    }
                    else
                    {
                        foreach (TelegramUtilInformationTopics topic in topics)
                        {
                            String niceName = topic.ToString().Substring(0, 1).ToUpper() + topic.ToString().Substring(1).ToLower();
                            telegramAnswer += " - " + niceName + "\n";
                            telegramAnswer += " -     " + _informationDescription[topic] + "\n";
                            telegramAnswer += " -     Currently " + (_information[topic] ? "enabled" : "disabled") + "\n";
                            telegramAnswer += "\n";
                        }

                        telegramAnswer += " - all-disable\n";
                        telegramAnswer += " -     " + TranslationHandler.getString("telegram-disable-all", "Disable all topics") + "\n";
                        telegramAnswer += "\n";

                        telegramAnswer += " - all-enable\n";
                        telegramAnswer += " -     " + TranslationHandler.getString("telegram-enable-all", "Enable all topics") + "\n";
                        telegramAnswer += "\n";
                        break;
                    }

                    break;

                case TelegramUtilTask.RUN_FORCEEVOLVE:
                    IEnumerable <PokemonData> pokemonToEvolve = await _inventory.GetPokemonToEvolve(null);

                    if (pokemonToEvolve.Count() > 3)
                    {
                        await _inventory.UseLuckyEgg(_client);
                    }
                    foreach (PokemonData pokemon in pokemonToEvolve)
                    {
                        if (_clientSettings.pokemonsToEvolve.Contains(pokemon.PokemonId))
                        {
                            var evolvePokemonOutProto = await _client.EvolvePokemon((ulong)pokemon.Id);

                            if (evolvePokemonOutProto.Result == EvolvePokemonOut.Types.EvolvePokemonStatus.PokemonEvolvedSuccess)
                            {
                                await _telegram.SendTextMessageAsync(_chatid, $"Evolved {pokemon.PokemonId} successfully for {evolvePokemonOutProto.ExpAwarded}xp", replyMarkup : new ReplyKeyboardHide());
                            }
                            else
                            {
                                await _telegram.SendTextMessageAsync(_chatid, $"Failed to evolve {pokemon.PokemonId}. EvolvePokemonOutProto.Result was {evolvePokemonOutProto.Result}, stopping evolving {pokemon.PokemonId}", replyMarkup : new ReplyKeyboardHide());
                            }
                            await RandomHelper.RandomDelay(1000, 2000);
                        }
                    }
                    telegramAnswer = "Done.";
                    break;
                }

                await _telegram.SendTextMessageAsync(_chatid, telegramAnswer, replyMarkup : new ReplyKeyboardHide());
            }
            catch (Exception ex)
            {
                if (ex is ApiRequestException)
                {
                    await _telegram.SendTextMessageAsync(_chatid, (ex as ApiRequestException).Message, replyMarkup : new ReplyKeyboardHide());
                }
            }
        }
Ejemplo n.º 7
0
        async void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            var    worker = sender as BackgroundWorker;
            string key    = "622335668:AAEv62L9dRi4BH6JVyW8gfEg-tCmd-qTRXo";

            try
            {
                var Bot = new Telegram.Bot.TelegramBotClient(key);
                await Bot.SetWebhookAsync("");

                // Callback'и от кнопок
                Bot.OnCallbackQuery += async(object sc, Telegram.Bot.Args.CallbackQueryEventArgs ev) =>
                {
                    var message = ev.CallbackQuery.Message;
                    if (ev.CallbackQuery.Data == "callback0")
                    {
                        await Bot.AnswerCallbackQueryAsync(ev.CallbackQuery.Id, "You hav choosen " + ev.CallbackQuery.Data, true);
                    }

                    else if (ev.CallbackQuery.Data.Contains("correctAnswer"))
                    {
                        await Bot.SendTextMessageAsync(message.Chat.Id, "Вірно!", replyToMessageId : message.MessageId);

                        await Bot.AnswerCallbackQueryAsync(ev.CallbackQuery.Id);                        // видаляє очікування (годинник)

                        GetQuestion(Bot, ev, message);
                        string tCountry = ev.CallbackQuery.Data.Replace("correctAnswer", "");
                        BotAs.RightAnswer(tCountry);
                    }

                    else if (ev.CallbackQuery.Data == "wrongAnswer")
                    {
                        await Bot.SendTextMessageAsync(message.Chat.Id, "Емм..Ні. Йдем далі...", replyToMessageId : message.MessageId);

                        await Bot.AnswerCallbackQueryAsync(ev.CallbackQuery.Id);                        // видаляє очікування (годинник)

                        GetQuestion(Bot, ev, message);
                        BotAs.WrongAnswer();
                    }

                    else
                    if (ev.CallbackQuery.Data.Contains("Continent:"))
                    {
                        string tContinent = ev.CallbackQuery.Data.Replace("Continent:", "");
                        await Bot.SendTextMessageAsync(message.Chat.Id, "Хмм, сміливо!", replyToMessageId : message.MessageId);

                        BotAs.ChooseContinent(tContinent);
                        GetQuestion(Bot, ev, message);
                    }
                };

                Bot.OnUpdate += async(object su, Telegram.Bot.Args.UpdateEventArgs evu) =>
                {
                    if (evu.Update.CallbackQuery != null || evu.Update.InlineQuery != null)
                    {
                        return;
                    }
                    var update  = evu.Update;
                    var message = update.Message;
                    if (message == null)
                    {
                        return;
                    }
                    if (message.Type == Telegram.Bot.Types.Enums.MessageType.Text)
                    {
                        if (message.Text == "/hello")
                        {
                            await Bot.SendTextMessageAsync(message.Chat.Id, "Хелова", replyToMessageId : message.MessageId);
                        }
                        if (message.Text == "/getimage")
                        {
                            await Bot.SendPhotoAsync(message.Chat.Id, "https://static.365info.kz/uploads/2019/03/a346a3729504594579883eeb12a38d80.jpg", "Та й таке!");
                        }

                        if (message.Text == "/stopgame")
                        {
                            await Bot.SendTextMessageAsync(message.Chat.Id, "Гру завершено! Правильних: " + BotAs.RightAnswers + " з " + (BotAs.WrongAnswers + BotAs.RightAnswers), replyToMessageId : message.MessageId);

                            BotAs.OverGame();
                        }

                        if (message.Text == "/capitals")
                        {
                            BotAs.StartGame();
                            List <string> continents = BotAs.GetContinents();
                            continents.Add("Все");

                            Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton[] Keys = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton[continents.Count];

                            int i = 0;

                            foreach (string continent in continents)
                            {
                                Keys[i] = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton {
                                    Text = continent, CallbackData = "Continent:" + continent
                                };
                                i++;
                            }

                            var keyboard = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(
                                new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton[][]
                            {
                                Keys
                            }
                                );

                            await Bot.SendTextMessageAsync(message.Chat.Id, "З чого розпочнемо гру?", replyMarkup : keyboard);
                        }
                    }
                };

                Bot.StartReceiving();
            }
            catch (Telegram.Bot.Exceptions.ApiRequestException ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Ejemplo n.º 8
0
        async void GetQuestion(Telegram.Bot.TelegramBotClient Bot, Telegram.Bot.Args.CallbackQueryEventArgs ev, Telegram.Bot.Types.Message message)
        {
            await Bot.AnswerCallbackQueryAsync(ev.CallbackQuery.Id);

            if (!BotAs.GameStarted)
            {
                BotAs = new BotAssistent();
            }


            Country country   = BotAs.GetRandomCountry();
            string  tCountry1 = country.Name;
            string  tCapital1 = country.Capital;
            string  tFlagPath = country.Flag;

            string tCapital2 = BotAs.GetRandomCapital(tCapital1, "");
            string tCapital3 = BotAs.GetRandomCapital(tCapital1, tCapital2);


            //Визначаємо рандомно порядок правильної відповіді
            Random rnd      = new Random();
            int    rndValue = rnd.Next(1, 4);

            Dictionary <int, string> dic = new Dictionary <int, string>();

            dic.Add(rndValue, tCapital1);

            if (rndValue == 1)
            {
                dic.Add(2, tCapital2);
                dic.Add(3, tCapital3);
            }
            else if (rndValue == 2)
            {
                dic.Add(1, tCapital2);
                dic.Add(3, tCapital3);
            }
            else
            {
                dic.Add(1, tCapital2);
                dic.Add(2, tCapital3);
            }

            dic = dic.OrderBy(x => x.Key).ToDictionary(y => y.Key, z => z.Value);


            var keyboard = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(
                new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton[][]
            {
                new [] {
                    new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton {
                        Text = dic[1], CallbackData = (rndValue == 1) ? "correctAnswer" + tCountry1 : "wrongAnswer"
                    },
                    new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton {
                        Text = dic[2], CallbackData = (rndValue == 2) ? "correctAnswer" + tCountry1 : "wrongAnswer"
                    },
                    new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardButton {
                        Text = dic[3], CallbackData = (rndValue == 3) ? "correctAnswer" + tCountry1 : "wrongAnswer"
                    },
                },
            }
                );

            await Bot.SendTextMessageAsync(message.Chat.Id, tCountry1 + " ?", replyMarkup : keyboard);

            await Bot.SendPhotoAsync(message.Chat.Id, tFlagPath, "");
        }
Ejemplo n.º 9
0
        async void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            var worker = sender as BackgroundWorker;
            var key    = e.Argument as String; // получаем ключ из аргументов

            try
            {
                var Bot = new Telegram.Bot.TelegramBotClient(key); // инициализируем API
                await Bot.SetWebhookAsync("");                     // Обязательно! убираем старую привязку к вебхуку для бота

                // Inlin'ы
                Bot.OnInlineQuery += async(object si, Telegram.Bot.Args.InlineQueryEventArgs ei) =>
                {
                    var query = ei.InlineQuery.Query;

                    var msg = new Telegram.Bot.Types.InputMessageContents.InputTextMessageContent
                    {
                        MessageText = @"Это супер крутой текст статьи
с переносами
и <b>html</b> <i>тегами!</i>",
                        ParseMode   = Telegram.Bot.Types.Enums.ParseMode.Html,
                    };

                    Telegram.Bot.Types.InlineQueryResults.InlineQueryResult[] results =
                    {
                        new Telegram.Bot.Types.InlineQueryResults.InlineQueryResultArticle
                        {
                            Id                  = "1",
                            Title               = "Тестовый тайтл",
                            Description         = "Описание статьи тут",
                            InputMessageContent = msg,
                        },
                        new Telegram.Bot.Types.InlineQueryResults.InlineQueryResultAudio
                        {
                            Url    = "http://aftamat4ik.ru/wp-content/uploads/2017/05/mongol-shuudan_-_kozyr-nash-mandat.mp3",
                            Id     = "2",
                            FileId = "123423433",
                            Title  = "Монгол Шуудан - Козырь наш Мандат!",
                        },
                        new Telegram.Bot.Types.InlineQueryResults.InlineQueryResultPhoto
                        {
                            Id          = "3",
                            Url         = "http://aftamat4ik.ru/wp-content/uploads/2017/05/14277366494961.jpg",
                            ThumbUrl    = "http://aftamat4ik.ru/wp-content/uploads/2017/05/14277366494961-150x150.jpg",
                            Caption     = "Текст под фоткой",
                            Description = "Описание",
                        },
                        new Telegram.Bot.Types.InlineQueryResults.InlineQueryResultVideo
                        {
                            Id       = "4",
                            Url      = "http://aftamat4ik.ru/wp-content/uploads/2017/05/bb.mp4",
                            ThumbUrl = "http://aftamat4ik.ru/wp-content/uploads/2017/05/joker_5-150x150.jpg",
                            Title    = "демо видеоролика",
                            MimeType = "video/mp4",
                        }
                    };


                    await Bot.AnswerInlineQueryAsync(ei.InlineQuery.Id, results);
                };

                // Callback'и от кнопок
                Bot.OnCallbackQuery += async(object sc, Telegram.Bot.Args.CallbackQueryEventArgs ev) =>
                {
                    var message = ev.CallbackQuery.Message;
                    if (ev.CallbackQuery.Data == "callback1")
                    {
                        await Bot.AnswerCallbackQueryAsync(ev.CallbackQuery.Id, "You hav choosen " + ev.CallbackQuery.Data, true);
                    }
                    else
                    if (ev.CallbackQuery.Data == "callback2")
                    {
                        await Bot.SendTextMessageAsync(message.Chat.Id, "тест", replyToMessageId : message.MessageId);

                        await Bot.AnswerCallbackQueryAsync(ev.CallbackQuery.Id); // отсылаем пустое, чтобы убрать "частики" на кнопке
                    }
                };

                Bot.OnUpdate += async(object su, Telegram.Bot.Args.UpdateEventArgs evu) =>
                {
                    if (evu.Update.CallbackQuery != null || evu.Update.InlineQuery != null)
                    {
                        return;                                                                     // в этом блоке нам келлбэки и инлайны не нужны
                    }
                    var update  = evu.Update;
                    var message = update.Message;
                    if (message == null)
                    {
                        return;
                    }
                    if (message.Type == Telegram.Bot.Types.Enums.MessageType.TextMessage)
                    {
                        if (message.Text == "/hello")
                        {
                            // в ответ на команду /saysomething выводим сообщение
                            await Bot.SendTextMessageAsync(message.Chat.Id, "Ну здарова! Как сам? :)", replyToMessageId : message.MessageId);
                        }
                        if (message.Text == "/help")
                        {
                            string txt = "Сори, я сам тут новенький :)\n /help - помощь\n /hello - поздароваться\n /getimg - получи картинку\n /rbuttons - Reply - кнопки\n /ibuttons - Inline кнопки";
                            // в ответ на команду /saysomething выводим сообщение
                            await Bot.SendTextMessageAsync(message.Chat.Id, txt, replyToMessageId : message.MessageId);
                        }
                        if (message.Text == "/getimg")
                        {
                            // в ответ на команду /getimage выводим картинку
                            await Bot.SendPhotoAsync(message.Chat.Id, "http://aftamat4ik.ru/wp-content/uploads/2017/03/photo_2016-12-13_23-21-07.jpg", "Revolution!");
                        }

                        // inline buttons
                        if (message.Text == "/ibuttons")
                        {
                            var keyboard = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(
                                new Telegram.Bot.Types.InlineKeyboardButton[][]
                            {
                                // First row
                                new [] {
                                    // First column
                                    new Telegram.Bot.Types.InlineKeyboardButton("раз", "callback1"),

                                    // Second column
                                    new Telegram.Bot.Types.InlineKeyboardButton("два", "callback2"),
                                },
                            }
                                );

                            await Bot.SendTextMessageAsync(message.Chat.Id, "Давай накатим, товарищ, по одной!", false, false, 0, keyboard, Telegram.Bot.Types.Enums.ParseMode.Default);
                        }

                        // reply buttons
                        if (message.Text == "/rbuttons")
                        {
                            var keyboard = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup
                            {
                                Keyboard = new[] {
                                    new[]             // row 1
                                    {
                                        new Telegram.Bot.Types.KeyboardButton("Накатим!"),
                                        new Telegram.Bot.Types.KeyboardButton("Рря!")
                                    },
                                },
                                ResizeKeyboard = true
                            };

                            await Bot.SendTextMessageAsync(message.Chat.Id, "Давай накатим, товарищ, мой!", false, false, 0, keyboard, Telegram.Bot.Types.Enums.ParseMode.Default);
                        }
                        // обработка reply кнопок
                        if (message.Text.ToLower() == "накатим!")
                        {
                            await Bot.SendTextMessageAsync(message.Chat.Id, "Ну, за здоровье!", replyToMessageId : message.MessageId);
                        }
                        if (message.Text.ToLower() == "рря!")
                        {
                            await Bot.SendTextMessageAsync(message.Chat.Id, "Ну, за демократию!", replyToMessageId : message.MessageId);
                        }
                    }
                };

                // запускаем прием обновлений
                Bot.StartReceiving();
            }
            catch (Telegram.Bot.Exceptions.ApiRequestException ex)
            {
                Console.WriteLine(ex.Message); // если ключ не подошел - пишем об этом в консоль отладки
            }
        }
Ejemplo n.º 10
0
        async void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            bool answer    = false;
            var  translate = new Translate();
            var  worker    = sender as BackgroundWorker;

            Telegram.Bot.Types.User u = new Telegram.Bot.Types.User();
            var key = e.Argument as String;

            try
            {
                var Bot = new Telegram.Bot.TelegramBotClient(key);
                await Bot.SetWebhookAsync("");

                int offset = 0;
                while (true)
                {
                    var updates = await Bot.GetUpdatesAsync(offset);

                    foreach (var update in updates)
                    {
                        var message = update.Message;
                        if (message == null)
                        {
                            continue;
                        }/*
                          * if ((message.Type == Telegram.Bot.Types.Enums.MessageType.StickerMessage)&&(message.From.FirstName=="Infinity"))
                          * await Bot.DeleteMessageAsync(message.Chat.Id, message.MessageId);*/
                        if (message.Type == Telegram.Bot.Types.Enums.MessageType.TextMessage)
                        {
                            //music

                            /*if(message.Text.Contains("/music"))
                             * {
                             *  Telegram.Bot.Types.FileToSend f = new Telegram.Bot.Types.FileToSend("https://www.dropbox.com/s/1nwbwwe8d4m58uk/Death%20Note%20-%20L%27s%20Theme%20%28full%29.mp3");
                             *  await Bot.SendDocumentAsync(message.Chat.Id, f, "here it`s");
                             * }*/
                            //crypt
                            DateTime d = DateTime.Now;
                            if (d.Minute % 15 == 0)
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, "vote for AA!");
                            }
                            if (message.Text.Contains("/encrypt"))
                            {
                                EnCrypt crypt = new EnCrypt();

                                try
                                {
                                    string[] s   = message.Text.Split(' ').ToArray();
                                    string   res = crypt.EncryptOrDecrypt(message.Text.Substring(message.Text.IndexOf("t") + 2), "1234");
                                    await Bot.SendTextMessageAsync(message.Chat.Id, res, replyToMessageId : message.MessageId);
                                }
                                catch (Exception)
                                {
                                    await Bot.SendTextMessageAsync(message.Chat.Id, "error", replyToMessageId : message.MessageId);
                                }
                                try
                                {
                                    await Bot.DeleteMessageAsync(message.Chat.Id, message.MessageId);
                                }
                                catch (Exception)
                                {
                                }
                            }

                            //rev
                            if (message.Text.ToLower().Contains("/realrevolution"))
                            {
                                try
                                {
                                    await Bot.SendTextMessageAsync(message.Chat.Id, "It`s a revolution.", replyToMessageId : message.MessageId);

                                    await Bot.SendTextMessageAsync(message.Chat.Id, "В основном(5 человек) поддержали идею свержения Дани за:");

                                    await Bot.SendTextMessageAsync(message.Chat.Id, "•	Смену названия группы");

                                    await Bot.SendTextMessageAsync(message.Chat.Id, "•	Ненависть к аниме");

                                    await Bot.SendTextMessageAsync(message.Chat.Id, "•	Нечестные глосования(накрутка)");

                                    await Bot.SendTextMessageAsync(message.Chat.Id, "Итак, мы свергаем его, и всеми банами/нарушениями будет заниматся БОТ. Только система будет определять меру присечения человека.");

                                    await Bot.SendTextMessageAsync(message.Chat.Id, "Админами будут я Бот, и тот, кого выберут на новом голо-и.");

                                    await Bot.SetChatTitleAsync(message.Chat.Id, "AAA club oficial");
                                }
                                catch (Exception)
                                {
                                }
                            }
                            //ban

                            if (message.Text.ToLower().Contains("/ban"))
                            {
                                var ban = new Ban();
                                try
                                {
                                    ban.GetMessage(message.Text);
                                }
                                catch (Exception)
                                {
                                    await Bot.SendTextMessageAsync(message.Chat.Id, message.From.FirstName + " " + message.From.LastName + "(" + message.From.Username + " pidor ne lamay bota");
                                }

                                if (ban.NeedToBan())
                                {
                                    await Bot.SendTextMessageAsync(message.Chat.Id, "Sviatoslav(@pauchok1love) ban please " + ban.Name(), replyToMessageId : message.MessageId);
                                }
                                else
                                {
                                    await Bot.SendTextMessageAsync(message.Chat.Id, "system don`t need to ban " + ban.Name(), replyToMessageId : message.MessageId);
                                }
                            }
                            //counter
                            if (message.Text.ToLower().Contains("/counter"))
                            {
                                if (message.Text.Substring(message.Text.IndexOf("r") + 2).Length > 5)
                                {
                                    await Bot.SendTextMessageAsync(message.Chat.Id, "error");

                                    continue;
                                }
                                Mamkate mamkate = new Mamkate();
                                mamkate.GetTime(Convert.ToInt32(message.Text.Substring(message.Text.IndexOf("r") + 2)));

                                try
                                {
                                    await Bot.SendTextMessageAsync(message.Chat.Id, mamkate.Timer());
                                }
                                catch (Exception)
                                {
                                    await Bot.SendTextMessageAsync(message.Chat.Id, "error");
                                }
                            }
                            //trigger
                            if (message.Text.Contains("/trigger"))
                            {
                                if (message.Text.ToLower().Contains("dania") || message.Text.ToLower().Contains("даня"))
                                {
                                    Telegram.Bot.Types.FileToSend f  = new Telegram.Bot.Types.FileToSend("https://image.ibb.co/ee1rvx/image.png");
                                    Telegram.Bot.Types.FileToSend f2 = new Telegram.Bot.Types.FileToSend("https://image.ibb.co/mR9Gfx/20180228_073506_1.jpg");
                                    Telegram.Bot.Types.FileToSend f1 = new Telegram.Bot.Types.FileToSend("https://image.ibb.co/janjhc/image.png");
                                    await Bot.SendPhotoAsync(message.Chat.Id, f, "trigger #1");

                                    await Bot.SendPhotoAsync(message.Chat.Id, f1, "trigger #2");

                                    await Bot.SendPhotoAsync(message.Chat.Id, f2, "trigger #3");
                                }
                                if (message.Text.ToLower().Contains("mark") || message.Text.ToLower().Contains("марк"))
                                {
                                    Telegram.Bot.Types.FileToSend f = new Telegram.Bot.Types.FileToSend("https://image.ibb.co/nMRLOH/image.png");

                                    Telegram.Bot.Types.FileToSend f1 = new Telegram.Bot.Types.FileToSend("https://image.ibb.co/dOnMVx/image.png");
                                    await Bot.SendPhotoAsync(message.Chat.Id, f, "trigger #1");

                                    await Bot.SendPhotoAsync(message.Chat.Id, f1, "trigger #2");
                                }
                                if (message.Text.ToLower().Contains("slavka") || message.Text.ToLower().Contains("славка"))
                                {
                                    Telegram.Bot.Types.FileToSend f  = new Telegram.Bot.Types.FileToSend("https://image.ibb.co/gjhzHc/image.png");
                                    Telegram.Bot.Types.FileToSend f2 = new Telegram.Bot.Types.FileToSend("https://image.ibb.co/jsLiCn/image.png");
                                    Telegram.Bot.Types.FileToSend f1 = new Telegram.Bot.Types.FileToSend("https://image.ibb.co/cJvEiH/image.png");
                                    await Bot.SendPhotoAsync(message.Chat.Id, f, "trigger #1");

                                    await Bot.SendPhotoAsync(message.Chat.Id, f1, "trigger #2");

                                    await Bot.SendPhotoAsync(message.Chat.Id, f2, "trigger #3");
                                }
                                if (message.Text.ToLower().Contains("artur") || message.Text.ToLower().Contains("arturik") || message.Text.ToLower().Contains("артур") || message.Text.ToLower().Contains("артурик"))
                                {
                                    Telegram.Bot.Types.FileToSend f  = new Telegram.Bot.Types.FileToSend("https://image.ibb.co/cC4tAx/image.png");
                                    Telegram.Bot.Types.FileToSend f1 = new Telegram.Bot.Types.FileToSend("https://image.ibb.co/e3PRVx/image.png");
                                    Telegram.Bot.Types.FileToSend f2 = new Telegram.Bot.Types.FileToSend("https://image.ibb.co/bMt8Sc/image.png");
                                    await Bot.SendPhotoAsync(message.Chat.Id, f, "trigger #1");

                                    await Bot.SendPhotoAsync(message.Chat.Id, f1, "trigger #2");

                                    await Bot.SendPhotoAsync(message.Chat.Id, f2, "trigger #3");
                                }
                                if (message.Text.ToLower().Contains("paliy") || message.Text.ToLower().Contains("палий"))
                                {
                                    Telegram.Bot.Types.FileToSend f  = new Telegram.Bot.Types.FileToSend("https://image.ibb.co/mYqBxc/image.png");
                                    Telegram.Bot.Types.FileToSend f1 = new Telegram.Bot.Types.FileToSend("https://image.ibb.co/ddXmfx/image.png");
                                    await Bot.SendPhotoAsync(message.Chat.Id, f, "trigger #1");

                                    await Bot.SendPhotoAsync(message.Chat.Id, f1, "trigger #2");
                                }
                            }
                            //fox
                            if (message.Text.ToLower().Contains("fox"))
                            {
                                Telegram.Bot.Types.FileToSend fs = new Telegram.Bot.Types.FileToSend("https://image.ibb.co/cfkqJS/image.png");
                                await Bot.SendPhotoAsync(message.Chat.Id, fs, "here is a fox #1");

                                Telegram.Bot.Types.FileToSend fs1 = new Telegram.Bot.Types.FileToSend("https://image.ibb.co/h0hqk7/image.png");
                                await Bot.SendPhotoAsync(message.Chat.Id, fs1, "here is a fox #2");
                            }
                            //say(need to upgrate)

                            if (message.Text == "/say" || message.Text == "/say@aaaclub_bot")
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, "slavka", replyToMessageId : message.MessageId);
                            }
                            //anime need to upgrate
                            if (message.Text == "/anime" || message.Text == "/anime@aaaclub_bot")
                            {
                                //await Bot.SendTextMessageAsync(message.Chat.Id, "Chose ganre", replyToMessageId: message.MessageId);
                                var keyboard = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup
                                {
                                    Keyboard = new[]
                                    {
                                        new[]
                                        {
                                            new Telegram.Bot.Types.KeyboardButton("for paliy"),
                                            new Telegram.Bot.Types.KeyboardButton("for normal people"),
                                            new Telegram.Bot.Types.KeyboardButton("for artuturik")
                                        },
                                    },
                                    ResizeKeyboard = true
                                };
                                keyboard.OneTimeKeyboard = true;
                                await Bot.SendTextMessageAsync(message.Chat.Id, "Chose ganre?", Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboard);
                            }
                            //monday
                            if (message.Text == "/monday" || message.Text == "/monday@aaaclub_bot")
                            {
                                var keyboard = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup
                                {
                                    Keyboard = new[]
                                    {
                                        new[]
                                        {
                                            new Telegram.Bot.Types.KeyboardButton("yes, i`m ready"),
                                            new Telegram.Bot.Types.KeyboardButton("no, i`m not ready")
                                        },
                                    },
                                    ResizeKeyboard = true
                                };
                                keyboard.OneTimeKeyboard = true;

                                await Bot.SendTextMessageAsync(message.Chat.Id, "are u ready to zalupa?", Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboard);
                            }
                            //answer to sqr
                            if (answer)
                            {
                                try
                                {
                                    string s = message.Text.ToLower();
                                    if (math_1.input_message(s) == "error")
                                    {
                                        await Bot.SendTextMessageAsync(message.Chat.Id, "error", replyToMessageId : message.MessageId);
                                    }
                                    else
                                    {
                                        double x1 = 0, x2 = 0;
                                        math_1.x1x2(ref x1, ref x2);
                                        if (x1 == 2.228 && x2 == 2.228)
                                        {
                                            await Bot.SendTextMessageAsync(message.Chat.Id, "there are no roots", replyToMessageId : message.MessageId);
                                        }
                                        if (x2 == 2.228 && x1 != 2.228)
                                        {
                                            await Bot.SendTextMessageAsync(message.Chat.Id, "there is one root: " + Convert.ToString(x1), replyToMessageId : message.MessageId);
                                        }
                                        if (x1 != 2.228 && x2 != 2.228)
                                        {
                                            await Bot.SendTextMessageAsync(message.Chat.Id, "thereare two roots: " + Convert.ToString(x1) + " " + Convert.ToString(x2), replyToMessageId : message.MessageId);
                                        }
                                    }
                                    answer = false;
                                }
                                catch (Telegram.Bot.Exceptions.ApiRequestException ex)
                                {
                                    await Bot.SendTextMessageAsync(message.Chat.Id, "error", replyToMessageId : message.MessageId);
                                }
                            }
                            //sqr
                            if (message.Text == "/sqr" || message.Text == "/sqr@aaaclub_bot")
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, "send me numbers", replyToMessageId : message.MessageId);

                                answer = true;
                            }
                            //zinia answer
                            if ((message.Text.ToLower().Contains("zinia") || message.Text.ToLower().Contains("зиня")) && !message.Text.ToLower().Contains("/zinia"))
                            {
                                Zinia zinia = new Zinia();

                                await Bot.SendTextMessageAsync(message.Chat.Id, zinia.res(message), replyToMessageId : message.MessageId);
                            }
                            //photo #1
                            if (message.Text == "/mamka" || message.Text == "/mamka@aaaclub_bot")
                            {
                                Telegram.Bot.Types.FileToSend fs = new Telegram.Bot.Types.FileToSend("https://image.ibb.co/joBJ7c/image.png");
                                await Bot.SendPhotoAsync(message.Chat.Id, fs, "mamka");
                            }
                            //photo #2
                            if (message.Text == "/doge" || message.Text == "/doge@aaaclub_bot")
                            {
                                Telegram.Bot.Types.FileToSend fs = new Telegram.Bot.Types.FileToSend("https://image.ibb.co/dHKuxc/image.png");
                                await Bot.SendPhotoAsync(message.Chat.Id, fs, "doge #1");

                                Telegram.Bot.Types.FileToSend fs2 = new Telegram.Bot.Types.FileToSend("https://image.ibb.co/eV56Ax/image.png");
                                await Bot.SendPhotoAsync(message.Chat.Id, fs2, "doge #2");

                                Telegram.Bot.Types.FileToSend fs3 = new Telegram.Bot.Types.FileToSend("https://image.ibb.co/cQhQ3H/image.png");
                                await Bot.SendPhotoAsync(message.Chat.Id, fs3, "doge #3");

                                Telegram.Bot.Types.FileToSend fs4 = new Telegram.Bot.Types.FileToSend("https://image.ibb.co/cgajxc/image.png");
                                await Bot.SendPhotoAsync(message.Chat.Id, fs4, "doge #4");
                            }
                            //mark`s code
                            if (message.Text == "/pron" || message.Text == "/pron@aaaclub_bot")
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, "zaidi v kod marka: https://drive.google.com/open?id=1_MTeOLrL1KMg2bP7jCob7fRSeOL0-osg", replyToMessageId : message.MessageId);
                            }
                            //nakuzin
                            if (message.Text == "/nakuzin")
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, "hAAAAA NAEBAL!");
                            }
                            //mining
                            if (message.Text == "/mining" || message.Text == "/mining@aaaclub_bot")
                            {
                                Telegram.Bot.Types.FileToSend fs = new Telegram.Bot.Types.FileToSend("https://media.giphy.com/media/cAy7aIZ4dv5KiOAjFs/giphy.gif");
                                await Bot.SendDocumentAsync(message.Chat.Id, fs, "mayni dogecoini: https://cryptocash.guru/coin/dogecoin/majning-kriptovalyuty-dogecoin/");
                            }
                            //answers
                            if (message.Text.ToLower() == "yes, i`m ready")
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, "then u will die from biologi", replyToMessageId : message.MessageId);
                            }

                            if (message.Text.ToLower() == "no, i`m not ready")
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, "you will die on zalupa", replyToMessageId : message.MessageId);
                            }
                            if (message.Text.ToLower() == "for normal people")
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, "go to yummyanime.com/catalog/item/milyj-vo-frankce", replyToMessageId : message.MessageId);
                            }
                            if (message.Text.ToLower() == "for paliy")
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, "https://yummyanime.com/catalog/item/lyubovnye-nepriyatnosti-tv1", replyToMessageId : message.MessageId);
                            }
                            if (message.Text.ToLower() == "for artuturik")
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, "https://yummyanime.com/catalog/item/plastikovye-vospominaniya", replyToMessageId : message.MessageId);
                            }
                            //anime hater
                            if ((message.Text.ToLower().Contains("anime") || message.Text.ToLower().Contains("аниме")) && !message.Text.ToLower().Contains("/"))
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, "ANIME - tupoe govno tupogo govna", replyToMessageId : message.MessageId);
                            }
                            //translate

                            if (message.Text.ToLower().Contains("/translate"))
                            {
                                int    index = message.Text.ToLower().IndexOf("e");
                                string s_res = String.Empty;
                                try
                                {
                                    s_res = message.Text.ToLower().Substring(index + 2);
                                }
                                catch (Exception)
                                {
                                    await Bot.SendTextMessageAsync(message.Chat.Id, "error", replyToMessageId : message.MessageId);
                                }
                                await Bot.SendTextMessageAsync(message.Chat.Id, translate.tr(s_res), replyToMessageId : message.MessageId);
                            }
                            //mamkate
                            if (message.Text.ToLower().Contains("/mamkate"))
                            {
                                int    index = message.Text.ToLower().IndexOf("e");
                                string s_res = String.Empty;
                                try
                                {
                                    s_res = message.Text.ToLower().Substring(index + 2);
                                }
                                catch (Exception)
                                {
                                    await Bot.SendTextMessageAsync(message.Chat.Id, "error", replyToMessageId : message.MessageId);
                                }
                                Mamkate mamkate = new Mamkate();
                                await Bot.SendTextMessageAsync(message.Chat.Id, mamkate.tr(s_res), replyToMessageId : message.MessageId);
                            }
                            //analis rechi 2117
                            if (message.Text.ToLower().Contains("kofe") || message.Text.ToLower().Contains("кофе"))
                            {
                                Telegram.Bot.Types.FileToSend file = new Telegram.Bot.Types.FileToSend("https://image.ibb.co/jag72c/image.png");
                                await Bot.SendPhotoAsync(message.Chat.Id, file, "buy kofee for me, " + message.From.FirstName);
                            }
                            if (message.Text.ToLower().Contains("didur") || message.Text.ToLower().Contains("дидур"))
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, "BLYAT DIDUR PIDOR", replyToMessageId : message.MessageId);
                            }
                            if (message.Text.ToLower().Contains("amd") || message.Text.ToLower().Contains("амд"))
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, "AMD IS THE BEST KOMPANY", replyToMessageId : message.MessageId);
                            }
                            if (message.Text.ToLower().Contains("intel") || message.Text.ToLower().Contains("интел"))
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, "INTEL HUINIA)", replyToMessageId : message.MessageId);
                            }
                            if (message.Text.ToLower().Contains("думал") || message.Text.ToLower().Contains("думать"))
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, "Не надо думать, у вас такого органа нет", replyToMessageId : message.MessageId);
                            }

                            /*
                             * if (message.Text.ToLower() .Contains("slavka daun")|| message.Text.ToLower().Contains("slavka eblan")|| message.Text.ToLower().Contains("славка даун") || message.Text.ToLower().Contains("славка еблан"))
                             * {
                             *  //ban
                             *
                             *  //u = message.From;
                             *  try
                             *  {
                             *      await Bot.SetChatDescriptionAsync(message.Chat.Id, message.Chat.Description + "         " + message.From.FirstName + " " + message.From.LastName + " - pidrila");
                             *      await Bot.DeleteMessageAsync(message.Chat.Id, message.MessageId);
                             *  }
                             *  catch(Exception)
                             *  {
                             *
                             *  }
                             *
                             * }/*
                             * if(u.FirstName!=null)
                             * if(message.From.FirstName.ToLower()==u.FirstName.ToLower())
                             * {
                             *  await Bot.SendTextMessageAsync(message.Chat.Id, "SASAT, pidrila", replyToMessageId: message.MessageId);
                             * }
                             */
                        }
                        offset = update.Id + 1;
                    }
                }
            }
            catch (Exception)
            {
                Console.WriteLine();
            }
        }
Ejemplo n.º 11
0
        async void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            var worker = sender as BackgroundWorker;
            var key    = e.Argument as String;

            try
            {
                var Bot = new Telegram.Bot.TelegramBotClient(key);
                await Bot.SetWebhookAsync("");

                int offset = 0;
                while (true)
                {
                    Update[] updates;
                    decimal  conAttempts       = 1;
                    decimal  allwaitingseconds = 0;
                    while (true)
                    {
                        try
                        {
                            updates = await Bot.GetUpdatesAsync(offset);
                        }
                        catch (Exception ex)
                        {
                            allwaitingseconds += (conAttempts / 10);
                            SendLog("No connection for the last " + allwaitingseconds + " seconds, attempt = " + conAttempts++);
                            Thread.Sleep((int)conAttempts * 100);
                            continue;
                        }
                        conAttempts = 1;
                        break;
                    }
                    foreach (var update in updates)
                    {
                        Person p = null;
                        if (update.Message.From.Username != null)
                        {
                            p = new Person(update.Message.From.Id, update.Message.From.Username, constr);
                        }
                        else
                        {
                            p = new Person(update.Message.From.Id, update.Message.From.FirstName + " " + update.Message.From.LastName, constr);
                        }
                        var keyboardStandart = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup
                        {
                            Keyboard = new[] {
                                new[]
                                {
                                    new Telegram.Bot.Types.KeyboardButton("Задание"),
                                },
                                new[]
                                {
                                    new Telegram.Bot.Types.KeyboardButton("Очки"),
                                    new Telegram.Bot.Types.KeyboardButton("ТОП-10"),
                                    new Telegram.Bot.Types.KeyboardButton("Помощь")
                                },
                            },
                            OneTimeKeyboard = false,
                            ResizeKeyboard  = true
                        };
                        var keyboardStandartFail = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup
                        {
                            Keyboard = new[] {
                                new[]
                                {
                                    new Telegram.Bot.Types.KeyboardButton("Задание")
                                },
                                new[]
                                {
                                    new Telegram.Bot.Types.KeyboardButton("Очки"),
                                    new Telegram.Bot.Types.KeyboardButton("ТОП-10"),
                                    new Telegram.Bot.Types.KeyboardButton("Помощь")
                                },
                                new[]
                                {
                                    new Telegram.Bot.Types.KeyboardButton("Ошибка в последнем вопросе?")
                                },
                            },
                            OneTimeKeyboard = false,
                            ResizeKeyboard  = true
                        };
                        var keyboardSerial = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup
                        {
                            Keyboard = new[] {
                                new[]
                                {
                                    new Telegram.Bot.Types.KeyboardButton(p.VSerial[0]),
                                    new Telegram.Bot.Types.KeyboardButton(p.VSerial[1]),
                                    new Telegram.Bot.Types.KeyboardButton(p.VSerial[2]),
                                    new Telegram.Bot.Types.KeyboardButton(p.VSerial[3])
                                },
                            },
                            OneTimeKeyboard = false,
                            ResizeKeyboard  = true
                        };
                        var keyboardSeason = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup();
                        if (p.C_serial == "SGU")
                        {
                            keyboardSeason = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup
                            {
                                Keyboard = new[] {
                                    new[]
                                    {
                                        new Telegram.Bot.Types.KeyboardButton("1"),
                                        new Telegram.Bot.Types.KeyboardButton("2")
                                    },
                                },
                                OneTimeKeyboard = false,
                                ResizeKeyboard  = true
                            };
                        }
                        else
                        {
                            keyboardSeason = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup
                            {
                                Keyboard = new[] {
                                    new[]
                                    {
                                        new Telegram.Bot.Types.KeyboardButton(p.V_Season[0]),
                                        new Telegram.Bot.Types.KeyboardButton(p.V_Season[1]),
                                        new Telegram.Bot.Types.KeyboardButton(p.V_Season[2]),
                                        new Telegram.Bot.Types.KeyboardButton(p.V_Season[3])
                                    },
                                },
                                OneTimeKeyboard = false,
                                ResizeKeyboard  = true
                            };
                        }
                        var keyboardSeries = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup
                        {
                            Keyboard = new[] {
                                new[]
                                {
                                    new Telegram.Bot.Types.KeyboardButton(p.V_Series[0])
                                },
                                new[]
                                {
                                    new Telegram.Bot.Types.KeyboardButton(p.V_Series[1])
                                },
                                new[]
                                {
                                    new Telegram.Bot.Types.KeyboardButton(p.V_Series[2])
                                },
                                new[]
                                {
                                    new Telegram.Bot.Types.KeyboardButton(p.V_Series[3])
                                },
                            },
                            OneTimeKeyboard = false,
                            ResizeKeyboard  = true
                        };
                        var  message   = update.Message;
                        bool recognise = false;
                        if (message.Type == Telegram.Bot.Types.Enums.MessageType.TextMessage)
                        {
                            #region stand_0
                            if (p.stand == 0)
                            {
                                if (message.Text == "/start")
                                {
                                    p.Ask     = false;
                                    recognise = true;
                                    if (p.task.Contains("http"))
                                    {
                                        await Bot.SendPhotoAsync(message.Chat.Id, new FileToSend(p.task), "Из какого сериала или фильмов эта картинка?", false, 0, keyboardSerial);
                                    }
                                    else
                                    {
                                        await Bot.SendTextMessageAsync(message.Chat.Id, "Из какого сериала или фильмов эта фраза? \n\n" + p.task, Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboardSerial);
                                    }
                                }
                                if (message.Text == p.VSerial[0] || message.Text == p.VSerial[1] || message.Text == p.VSerial[2] || message.Text == p.VSerial[3])
                                {
                                    p.Ask     = false;
                                    recognise = true;
                                    if (message.Text == p.C_serial)
                                    {
                                        if (p.C_serial == "Movies")
                                        {
                                            p.stand += 2;
                                            p.SaveToSQl();
                                            SendLog(message.Text + " FROM " + p.UserName + " ITIS " + "Correct" + " STAND " + p.stand + " TASK_ID " + p.taskId);
                                            if (p.task.Contains("http"))
                                            {
                                                await Bot.SendPhotoAsync(message.Chat.Id, new FileToSend(p.task), p.C_serial + ", верно! Какой фильм?", false, 0, keyboardSeries);
                                            }
                                            else
                                            {
                                                await Bot.SendTextMessageAsync(message.Chat.Id, p.C_serial + ", верно! Какой фильм? \n\n" + p.task, Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboardSeries);
                                            }
                                        }
                                        else
                                        {
                                            p.stand++;
                                            p.SaveToSQl();
                                            SendLog(message.Text + " FROM " + p.UserName + " ITIS " + "Correct" + " STAND " + p.stand + " TASK_ID " + p.taskId);
                                            if (p.task.Contains("http"))
                                            {
                                                await Bot.SendPhotoAsync(message.Chat.Id, new FileToSend(p.task), p.C_serial + ", верно! Какой сезон?", false, 0, keyboardSeason);
                                            }
                                            else
                                            {
                                                await Bot.SendTextMessageAsync(message.Chat.Id, p.C_serial + ", верно! Какой сезон? \n\n" + p.task, Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboardSeason);
                                            }
                                        }
                                    }
                                    else
                                    {
                                        p.stand = 3;
                                        p.TaskWrong();
                                        SendLog(message.Text + " FROM " + p.UserName + " ITIS " + "InCorrect" + " SCORE " + p.Score + " TASK_ID " + p.taskId);
                                        await Bot.SendTextMessageAsync(message.Chat.Id, "Неверно! Запросите новое задание!", Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboardStandartFail);
                                    }
                                }
                            }
                            #endregion
                            #region stand_1
                            if (p.stand == 1)
                            {
                                if (message.Text == "/start")
                                {
                                    p.Ask     = false;
                                    recognise = true;
                                    if (p.task.Contains("http"))
                                    {
                                        await Bot.SendPhotoAsync(message.Chat.Id, new FileToSend(p.task), p.C_serial + ", верно! Какой сезон?", false, 0, keyboardSeason);
                                    }
                                    else
                                    {
                                        await Bot.SendTextMessageAsync(message.Chat.Id, p.C_serial + ", верно! Какой сезон?\n\n" + p.task, Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboardSeason);
                                    }
                                }
                                if (p.C_serial == "SGU")
                                {
                                    if (message.Text == "1" || message.Text == "2")
                                    {
                                        p.Ask     = false;
                                        recognise = true;
                                        if (message.Text == p.C_season)
                                        {
                                            p.stand++;
                                            p.SaveToSQl();
                                            SendLog(message.Text + " FROM " + p.UserName + " ITIS " + "Correct" + " STAND " + p.stand + " TASK_ID " + p.taskId);
                                            if (p.task.Contains("http"))
                                            {
                                                await Bot.SendPhotoAsync(message.Chat.Id, new FileToSend(p.task), p.C_season + ", верно! Какая серия?", false, 0, keyboardSeries);
                                            }
                                            else
                                            {
                                                await Bot.SendTextMessageAsync(message.Chat.Id, p.C_season + ", верно! Какая серия?\n\n" + p.task, Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboardSeries);
                                            }
                                        }
                                        else
                                        {
                                            p.stand = 3;
                                            p.TaskWrong();
                                            SendLog(message.Text + " FROM " + p.UserName + " ITIS " + "InCorrect" + " SCORE " + p.Score + " TASK_ID " + p.taskId);
                                            await Bot.SendTextMessageAsync(message.Chat.Id, "Неверно! Запросите новое задание!", Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboardStandartFail);
                                        }
                                    }
                                }
                                else
                                {
                                    if (message.Text == p.V_Season[0] || message.Text == p.V_Season[1] || message.Text == p.V_Season[2] || message.Text == p.V_Season[3])
                                    {
                                        p.Ask     = false;
                                        recognise = true;
                                        if (message.Text == p.C_season)
                                        {
                                            p.stand++;
                                            p.SaveToSQl();
                                            SendLog(message.Text + " FROM " + p.UserName + " ITIS " + "Correct" + " STAND " + p.stand + " TASK_ID " + p.taskId);
                                            if (p.task.Contains("http"))
                                            {
                                                await Bot.SendPhotoAsync(message.Chat.Id, new FileToSend(p.task), p.C_season + ", верно! Какая серия?", false, 0, keyboardSeries);
                                            }
                                            else
                                            {
                                                await Bot.SendTextMessageAsync(message.Chat.Id, p.C_season + ", верно! Какая серия?\n\n" + p.task, Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboardSeries);
                                            }
                                        }
                                        else
                                        {
                                            p.stand = 3;
                                            p.TaskWrong();
                                            SendLog(message.Text + " FROM " + p.UserName + " ITIS " + "InCorrect" + " SCORE " + p.Score + " TASK_ID " + p.taskId);
                                            await Bot.SendTextMessageAsync(message.Chat.Id, "Неверно! Запросите новое задание!", Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboardStandartFail);
                                        }
                                    }
                                }
                            }
                            #endregion
                            #region stand_2
                            if (p.stand == 2)
                            {
                                if (message.Text == "/start")
                                {
                                    p.Ask     = false;
                                    recognise = true;
                                    if (p.C_serial == "Movies")
                                    {
                                        if (p.task.Contains("http"))
                                        {
                                            await Bot.SendPhotoAsync(message.Chat.Id, new FileToSend(p.task), p.C_serial + ", верно! Какой фильм?", false, 0, keyboardSeries);
                                        }
                                        else
                                        {
                                            await Bot.SendTextMessageAsync(message.Chat.Id, p.C_serial + ", верно! Какой фильм?\n\n" + p.task, Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboardSeries);
                                        }
                                    }
                                    else
                                    {
                                        if (p.task.Contains("http"))
                                        {
                                            await Bot.SendPhotoAsync(message.Chat.Id, new FileToSend(p.task), p.C_season + ", верно! Какая серия?", false, 0, keyboardSeries);
                                        }
                                        else
                                        {
                                            await Bot.SendTextMessageAsync(message.Chat.Id, p.C_season + ", верно! Какая серия?\n\n" + p.task, Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboardSeries);
                                        }
                                    }
                                }
                                if (message.Text == p.V_Series[0] || message.Text == p.V_Series[1] || message.Text == p.V_Series[2] || message.Text == p.V_Series[3])
                                {
                                    p.Ask     = false;
                                    recognise = true;
                                    if (message.Text == p.C_series)
                                    {
                                        p.stand++;
                                        p.TaskDone();
                                        SendLog(message.Text + " FROM " + p.UserName + " ITIS " + "Correct" + " SCORE " + p.Score + " TASK_ID " + p.taskId);
                                        await Bot.SendTextMessageAsync(message.Chat.Id, p.C_series + ", верно! Вы молодец! Запрашивайте новое задание :)", Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboardStandart);
                                    }
                                    else
                                    {
                                        p.stand = 3;
                                        p.TaskWrong();
                                        SendLog(message.Text + " FROM " + p.UserName + " ITIS " + "InCorrect" + " SCORE " + p.Score + " TASK_ID " + p.taskId);
                                        await Bot.SendTextMessageAsync(message.Chat.Id, "Неверно! Запросите новое задание!", Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboardStandartFail);
                                    }
                                }
                            }
                            #endregion
                            #region stand_3
                            if (p.stand == 3)
                            {
                                if (message.Text == "Задание")
                                {
                                    recognise = true;
                                    p.Ask     = false;
                                    p.stand   = 0;
                                    p.GetTask();
                                    SendLog(message.Text + " TO " + p.UserName + " TASK_ID " + p.taskId);
                                    if (p.task.Contains("http"))
                                    {
                                        await Bot.SendPhotoAsync(message.Chat.Id, new FileToSend(p.task), "Из какого сериала или фильмов эта картинка?", false, 0, keyboardSerial);
                                    }
                                    else
                                    {
                                        await Bot.SendTextMessageAsync(message.Chat.Id, "Из какого сериала или фильмов эта фраза?\n\n" + p.task, Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboardSerial);
                                    }
                                }
                                if (message.Text == "Ошибка в последнем вопросе?" && !p.done)
                                {
                                    recognise = true;
                                    p.Ask     = true;
                                    p.SaveToSQl();
                                    SendLog("SEND_INSTRUCTION_TO_WRONG_MSG_TO " + p.UserName + " TASK_ID " + p.taskId + " ASK_UNIT " + p.Ask.ToString());
                                    await Bot.SendTextMessageAsync(message.Chat.Id, "Отправьте сообщение с описанием проблемы на столько широко как сможете, так же тут можно оставить свой отзыв.", Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboardStandart);
                                }
                                if (message.Text == "Помощь")
                                {
                                    p.Ask     = false;
                                    recognise = true;
                                    SendLog(message.Text + " TO " + p.UserName);
                                    await Bot.SendTextMessageAsync(message.Chat.Id, "Просто отвечайте на вопросы и зарабатывайте очки. Верный ответ +1, неверный -1 балл.\nДля управления чатом используй кнопки внизу.", Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboardStandart);
                                }
                                if (message.Text == "ТОП-10")
                                {
                                    p.Ask     = false;
                                    recognise = true;
                                    SendLog(message.Text + " TO " + p.UserName);
                                    await Bot.SendTextMessageAsync(message.Chat.Id, getTopList(), Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboardStandart);
                                }
                                if (message.Text == "Очки")
                                {
                                    p.Ask     = false;
                                    recognise = true;
                                    SendLog(message.Text + " TO " + p.UserName + " SCORE " + p.Score);
                                    await Bot.SendTextMessageAsync(message.Chat.Id, "Кол-во очков: " + p.Score, Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboardStandart);
                                }
                                if (message.Text == "/start")
                                {
                                    p.Ask     = false;
                                    recognise = true;
                                    if (!p.amnew)
                                    {
                                        SendLog("NEW_OLD_USER " + p.Id + " NAME " + p.UserName);
                                        await Bot.SendTextMessageAsync(message.Chat.Id, "С Возвращением!\nИспользуйте клавиатуру для работы с чатом", Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboardStandart);
                                    }
                                    else
                                    {
                                        SendLog("NEW_USER " + p.Id + " NAME " + p.UserName);
                                        await Bot.SendTextMessageAsync(message.Chat.Id, "Добро пожаловать!\nИспользуйте клавиатуру для работы с чатом", Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboardStandart);
                                    }
                                }
                            }
                            #endregion
                            if (message.Text != "" && !recognise && !p.Ask)
                            {
                                SendLog(message.Text + " SOME_TEXT_WRONG " + " FROM " + p.UserName);
                                await Bot.SendTextMessageAsync(message.Chat.Id, "Я не могу ответить на это сообщение, не кликайте на кнопку по нескольку раз, не дождавшись ответа и не пишите с клавиатуры до требования бота!");
                            }
                            else if (message.Text != "" && p.Ask && !recognise)
                            {
                                p.Ask = false;
                                SendLog(message.Text + " RECEIVING_MSG_FROM_USER " + p.UserName);
                                AskToSQL(message.Text, p);
                                p.SaveToSQl();
                                await Bot.SendTextMessageAsync(message.Chat.Id, "Ваше сообщение принято для обработки, со временем изменения вступят в силу", Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboardStandart);
                            }
                        }
                        else
                        {
                            SendLog("SOME_NOT_TEXT_WRONG " + " FROM " + p.UserName);
                            await Bot.SendTextMessageAsync(message.Chat.Id, "Я могу отвечать только на текстовые сообщения!");
                        }
                        offset = update.Id + 1;
                    }
                }
            }
            catch (Exception ex)
            {
                File.WriteAllText(DateTime.Now.ToString("dd.MM.yy hh.mm.ss") + " errorlog.txt", DateTime.Now + " -- " + ex.Message + "\n"
                                  + ex.TargetSite.Name + "\n" + ex.StackTrace + "\n" + ex.HelpLink);
                Application.Current.Shutdown();
            }
        }
Ejemplo n.º 12
0
        async static void TelegramMetod()
        {
            string key = "417836710:AAHaiu8stm_QKQBiZX11MJqIcDCrOrTLyMk"; //telegram: @RandomPhoto_bot
            var    bot = new Telegram.Bot.TelegramBotClient(key);
            await bot.SetWebhookAsync("");

            int offset = 0;

            while (true)
            {
                var updates = await bot.GetUpdatesAsync(offset); // получаем массив обновлений

                foreach (var update in updates)                  // Перебираем все обновления
                {
                    var message = update.Message;
                    if (message?.Type == Telegram.Bot.Types.Enums.MessageType.TextMessage)
                    {
                        string rain = "";
                        if (message.Text == "/start")
                        {
                            await bot.SendTextMessageAsync(message.Chat.Id, "Привет " + message.Chat.FirstName);

                            var keyboard = new Telegram.Bot.Types.ReplyMarkups.ReplyKeyboardMarkup
                            {
                                Keyboard = new[] {
                                    new[] // row 1
                                    {
                                        new Telegram.Bot.Types.KeyboardButton("Пришли картинку"),
                                        new Telegram.Bot.Types.KeyboardButton("Пришли музыку")
                                    },
                                    new[] // row 1
                                    {
                                        new Telegram.Bot.Types.KeyboardButton("Какая погода?"),
                                        new Telegram.Bot.Types.KeyboardButton("Какая погода завтра?")
                                    },
                                },
                                ResizeKeyboard = true
                            };

                            await bot.SendTextMessageAsync(message.Chat.Id, "Выбери что хочешь получить",
                                                           ParseMode.Default, false, false, 0, keyboard, CancellationToken.None);
                        }

                        if (message.Text == "/getimage" || message.Text == "Пришли картинку")
                        {
                            string[] dirs = Directory.GetFiles(
                                @"C:\Users\workstation1\Documents\Visual Studio 2015\Projects\TelegramBotGetImage\TelegramBotGetImage\Images");
                            Random rnd     = new Random();
                            int    i       = rnd.Next(0, dirs.Length);
                            string FileUrl = dirs[i];

                            using (var stream = System.IO.File.Open(FileUrl, FileMode.Open))
                            {
                                FileToSend fts = new FileToSend();
                                fts.Content  = stream;
                                fts.Filename = FileUrl.Split('\\').Last();
                                await bot.SendPhotoAsync(message.Chat.Id, fts, "New IMG");
                            }
                        }

                        if (message.Text == "/getmusic" || message.Text == "Пришли музыку")
                        {
                            string[] dirs = Directory.GetFiles(
                                @"C:\Users\workstation1\Documents\Visual Studio 2015\Projects\TelegramBotGetImage\TelegramBotGetImage\Music");
                            Random rnd     = new Random();
                            int    w       = rnd.Next(0, dirs.Length);
                            string FileUrl = dirs[w];

                            using (var stream = System.IO.File.Open(FileUrl, FileMode.Open))
                            {
                                FileToSend fts = new FileToSend();
                                fts.Content  = stream;
                                fts.Filename = FileUrl.Split('\\').Last();
                                string[] eq       = fts.Filename.Split('-');
                                string   songName = eq.Last();
                                string   athor    = "";
                                for (int i = 0; i < eq.Length - 1; i++)
                                {
                                    athor += eq[i];
                                }
                                await bot.SendTextMessageAsync(message.Chat.Id, "Отправляю песню: " + athor + " - " + songName + " подождите");

                                await bot.SendAudioAsync(message.Chat.Id, fts, "Файл получен", 0,
                                                         athor, songName);
                            }
                        }

                        if (message.Text == "/about")
                        {
                            await bot.SendTextMessageAsync(message.Chat.Id, "Бот написан 22.09.2017\nАвтор: Тимофей Забалуев\nКонтактные данные: [email protected]");
                        }

                        if (message.Text == "/weathernow" || message.Text == "Какая погода?")
                        {
                            var q = GetSimpleWeather.WeatherGetNow();
                            //if (q.rain != null) rain = " дождь";
                            await bot.SendTextMessageAsync(message.Chat.Id, "В городе: " + q.Name + " сейчас " + q.Main.temp + " градусов");
                        }

                        if (message.Text == "/weathertomorrow" || message.Text == "Какая погода завтра?")
                        {
                            var w = GetSimpleWeather.WeatherGetFor5Days();
                            await bot.SendTextMessageAsync(message.Chat.Id, "В городе: " + w.city.name);

                            string str = " ";
                            for (int i = 1; i < 9; i++)
                            {
                                if (w.list[i].rain != null)
                                {
                                    rain = " дождь";
                                }

                                string[] split = w.list[i].dt_txt.Split(' ', ':', '-');
                                if (split[3] == "00")
                                {
                                    str += split[2] + "/" + split[1] + " "; //Выводим дополнительно число и месяц если следующий день
                                }
                                else
                                {
                                    str += "---------";
                                }
                                str += split[3] + ":00 = " + w.list[i].main.temp + "° " + rain + "\n";
                            }
                            await bot.SendTextMessageAsync(message.Chat.Id, str);
                        }
                    }
                    offset = update.Id + 1;
                }
            }
        }
Ejemplo n.º 13
0
        public static async Task SendFeedbackMessage(string subject, string message, string attachment = null)
        {
            Main mf = Application.OpenForms["Main"] as Main;

            if (mf == null)
            {
                return;
            }

            var bot = new Telegram.Bot.TelegramBotClient("397478316:AAFx_E18FZ5bxNdO-F3wQtbPcw7OlrPddfU");

            try
            {
                await bot.SendTextMessageAsync(251417296, subject + "\n\n" + message);

                if (!String.IsNullOrWhiteSpace(attachment))
                {
                    try
                    {
                        string file     = attachment;
                        var    fileName = file.Split('\\').Last();
                        using (var fileStream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read))
                        {
                            var fts = new FileToSend(fileName, fileStream);
                            if (System.Web.MimeMapping.GetMimeMapping(file).StartsWith("text/") || System.Web.MimeMapping.GetMimeMapping(file).StartsWith("application/"))
                            {
                                await bot.SendDocumentAsync(251417296, fts, subject);
                            }
                            if (System.Web.MimeMapping.GetMimeMapping(file).StartsWith("image/"))
                            {
                                await bot.SendPhotoAsync(251417296, fts, subject);
                            }
                            if (System.Web.MimeMapping.GetMimeMapping(file).StartsWith("video/"))
                            {
                                await bot.SendVideoAsync(251417296, fts);
                            }
                        }
                    }
                    catch (FileNotFoundException ex)
                    {
                        Logger.Write("Telegram Feedback Anhang Senden Fehlgeschlagen - Grund: " + ex.Message);
                        //Text Info Output
                    }
                }
                MetroMessageBox.Show(mf, "Dein Feedback wurde Erfolgreich verschickt ;-)", "Feedback Erfolgreich",
                                     MessageBoxButtons.OK, MessageBoxIcon.Question);

                mf.metroComboBox5.SelectedIndex = -1;
                mf.metroTextBox2.Clear();
                mf.metroTextBox3.Clear();
                mf.metroTextBox4.Clear();
                mf.metroTextBox11.Clear();
                mf.metroTextBox12.Clear();
            }
            catch (Exception ex)
            {
                Logger.Write("Telegram Feedback Nachricht Senden Fehlgeschlagen - Grund: " + ex.Message);
                if (OSystem.IsAvailableNetworkActive())
                {
                }
                MetroMessageBox.Show(mf,
                                     "Leider gab es ein Problem und dein Feedback konnte nicht erfolgreich verschickt werden." +
                                     Environment.NewLine + Environment.NewLine + "Bitte versuche es erneut oder Kontaktiere den Entwickler.",
                                     "Feedback Fehlgeschlagen", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Ejemplo n.º 14
0
        private async Task GetQrCodeAsync(Update update, Employee employee)
        {
            string receiverCode = employee.Place.Id.ToString() + "-" + employee.Id.ToString();
            string qrString     = "ST00011|Name=ООО Чаевые-24|PersonalAcc=40702810970010113722|BankName=МОСКОВСКИЙ ФИЛИАЛ АО КБ \"МОДУЛЬБАНК\"|" +
                                  "BIC=044525092|CorrespAcc=30101810645250000092|PayeeINN=1651083591|" +
                                  "Purpose=Дарение чаевых коллективу по договору-оферте tips24.ru/" + receiverCode + "|" +
                                  "PayerAddress=" + employee.Place.City + ", " + employee.Place.Address + "|LastName=Гость|FirstName=заведения";

            //string qrString = "ST00011|Name=ИП Галяутдинов Ринат Ибрагимович|PersonalAcc=40802810470210002677|BankName=МОСКОВСКИЙ ФИЛИАЛ АО КБ \"МОДУЛЬБАНК\"|BIC=044525092|CorrespAcc=30101810645250000092|PayeeINN=165117672519|" +
            //	"Purpose=Дарение чаевых коллективу по договору-оферте tips24.ru/" + receiverCode + "|" +
            //	"PayerAddress="+ employee.PlaceCity + ", " + employee.PlaceAddress + "|LastName=Гость|FirstName=заведения";

            byte[] hash = GetQrHash(qrString);
            if (employee.QrCode != null && employee.QrCode.IsValid(hash))
            {
                ReplyKeyboardMarkup keyboard = GetStandardKeyboardMarkup(employee);
                Message             response = await _telegramClient.SendPhotoAsync(update.Message.From.Id, new InputOnlineFile(employee.QrCode.FileId),
                                                                                    null, ParseMode.Default, false, 0, keyboard, _cts.Token);

                await this.WriteMessageLog(new QrCodeOutputMessageLog(employee, employee.QrCode.FileId, receiverCode, keyboard));

                return;
            }

            QRCodeWriter qrWriter = new QRCodeWriter();
            Dictionary <ZXing.EncodeHintType, object> hints = new Dictionary <ZXing.EncodeHintType, object>();

            hints.Add(ZXing.EncodeHintType.CHARACTER_SET, "windows-1251");
            hints.Add(ZXing.EncodeHintType.MARGIN, 1);
            ZXing.Common.BitMatrix matrix = qrWriter.encode(qrString, ZXing.BarcodeFormat.QR_CODE, 640, 640, hints);

            BarcodeWriter <Rgb24> writer = new BarcodeWriter <Rgb24>();

            string fileId = null;

            using (MemoryStream ms = new MemoryStream())
            {
                using (Image <Rgb24> image = writer.Write(matrix))
                {
                    image.Save(ms, new PngEncoder()
                    {
                        ColorType = PngColorType.Grayscale, BitDepth = PngBitDepth.Bit8
                    });
                }
                ms.Position = 0;

                ReplyKeyboardMarkup keyboard = GetStandardKeyboardMarkup(employee);
                Message             response = await _telegramClient.SendPhotoAsync(update.Message.From.Id, new InputOnlineFile(ms), null, ParseMode.Default, false, 0, keyboard, _cts.Token);

                fileId = response.Photo[0].FileId;
                await this.WriteMessageLog(new QrCodeOutputMessageLog(employee, fileId, receiverCode, keyboard));
            }

            using (SqlConnection conn = _sqlServer.GetConnection())
            {
                await conn.OpenAsync();

                using (SqlCommand cmd = _sqlServer.GetSpCommand("telegram.UpdateQrCodeFileId", conn))
                {
                    cmd.AddBigIntParam("@UserId", employee.TelegramUserId);
                    cmd.AddVarCharParam("@QrCodeFileId", 64, fileId);
                    cmd.AddBinaryParam("@QrCodeStringHash", 40, hash);

                    await cmd.ExecuteNonQueryAsync();
                }
            }
        }
Ejemplo n.º 15
0
        async void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            var worker = sender as BackgroundWorker;
            var key    = e.Argument as String; // получаем ключ из аргументов

            try
            {
                var Bot = new Telegram.Bot.TelegramBotClient(key); // инициализируем API
                await Bot.SetWebhookAsync("");                     // Обязательно! убираем старую привязку к вебхуку для бота

                // Callback'и от кнопок
                Bot.OnCallbackQuery += async(object sc, Telegram.Bot.Args.CallbackQueryEventArgs ev) =>
                {
                    var message = ev.CallbackQuery.Message;
                    if (ev.CallbackQuery.Data == "instruction")
                    {
                        await Bot.SendTextMessageAsync(message.Chat.Id,
                                                       "Инструкция по эксплуатации:" +
                                                       "\n\n1.	Будьте терпеливы.\nУбедительная просьба не тыкать его палкой по крайней мере пока он работает. Он очень обидчивый."+
                                                       "\n\n2.	Убедитесь в том, что введенные данные правильны ( это можно сделать с помощью команды /check )"+
                                                       "\n\n3.	Воспользуйтесь командой /work для получения оценок. Терпеливо ждите окончания процесса (это не так много времени занимает)");

                        await Bot.AnswerCallbackQueryAsync(ev.CallbackQuery.Id); // отсылаем пустое, чтобы убрать "часики" на кнопке
                    }
                    else
                    if (ev.CallbackQuery.Data == "faq")
                    {
                        await Bot.SendTextMessageAsync(message.Chat.Id,
                                                       "FAQ:" +
                                                       "\n\n1.	Почему он так долго работает?\n\nОн добросовестно относится к своей работе и очень старается помочь Вам."+
                                                       "\n\n2.	Что делать, если не выводит оценки?\n\nДождаться завершения работы. По завершению работы бот уведомит об её успешном или не очень результате. При каждом обращении к нему, у бота есть 3 попытки получить доступ к данным электронного дневника, но получается это не всегда в силу непредсказуемых обстоятельств (например: Ростелеком)."+
                                                       "\n\n3.	Как поддержать разработчика?\n\nЭто не очень популярный вопрос, но всё же я на него отвечу :)"+
                                                       "\nПоддержать разработчика можно монетой, узнав реквизиты тыкнув на соответствующую кнопку. Сумма пожертвования никак не повлияет на работу бота, но разработчику будет очень приятно и может быть он прислушается к просьбам пользователей.");

                        await Bot.AnswerCallbackQueryAsync(ev.CallbackQuery.Id); // отсылаем пустое, чтобы убрать "часики" на кнопке
                    }
                    else
                    if (ev.CallbackQuery.Data == "support")
                    {
                        if (message.Chat.Id != 402256119)
                        {
                            // Log info
                            await Bot.SendTextMessageAsync(402256119, $"{DateTime.Now}:\nПользователь {message.Chat.FirstName} {message.Chat.LastName} нажал на кнопку поддержки");
                        }

                        await Bot.SendTextMessageAsync(message.Chat.Id,
                                                       "Поддержка:" +
                                                       "\nP.S. Автор ни в коем случае ни к чему не призывает и не обязывает." +
                                                       "\nМне правда будет очень приятно :з" +
                                                       "\n\nПоддержать \"программиста\" можно следующими способами:");

                        await Bot.SendTextMessageAsync(message.Chat.Id, "1.	Карта Сбербанка:");

                        await Bot.SendTextMessageAsync(message.Chat.Id, "5469550037901797");

                        await Bot.SendTextMessageAsync(message.Chat.Id, "2.	Яндекс кошелёк:");

                        await Bot.SendTextMessageAsync(message.Chat.Id, "410013502974226");

                        await Bot.AnswerCallbackQueryAsync(ev.CallbackQuery.Id); // отсылаем пустое, чтобы убрать "часики" на кнопке
                    }
                };

                Bot.OnUpdate += async(object su, Telegram.Bot.Args.UpdateEventArgs evu) =>
                {
                    if (evu.Update.CallbackQuery != null || evu.Update.InlineQuery != null)
                    {
                        return;                                                                     // в этом блоке нам келлбэки и инлайны не нужны
                    }
                    var update  = evu.Update;
                    var message = update.Message;
                    if (message == null)
                    {
                        return;
                    }
                    if (message.Type == Telegram.Bot.Types.Enums.MessageType.TextMessage)
                    {
                        if (message.Text == "/start")
                        {
                            bool          newUser   = true;
                            string[]      data      = new string[2];
                            SqlDataReader sqlReader = null;
                            SqlCommand    command   = new SqlCommand("SELECT ChatId, Login, Password FROM [Data]", sqlConnection);
                            try
                            {
                                sqlReader = await command.ExecuteReaderAsync();

                                while (await sqlReader.ReadAsync())
                                {
                                    if (Convert.ToString(sqlReader["ChatId"]) == Convert.ToString(message.Chat.Id))
                                    {
                                        newUser = false;
                                        data[0] = Convert.ToString(sqlReader["Login"]);
                                        data[1] = Convert.ToString(sqlReader["Password"]);
                                        break;
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                await Bot.SendTextMessageAsync(402256119, $"{DateTime.Now}: Начальник, случилась оказия!\n\n{ex.Message.ToString()}\n\n{ex.Source.ToString()}");
                            }
                            finally
                            {
                                if (sqlReader != null)
                                {
                                    sqlReader.Close();
                                }
                            }
                            if (newUser)
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, "Привет! Я бот Параграф. Давай дружить.\nМне нужно, чтобы ты сказал мне логин и пароль. Тогда я думаю смогу тебе помочь");

                                await Bot.SendTextMessageAsync(message.Chat.Id, "Введи их пожалуйста в одном сообщении через пробел");

                                SqlCommand commandInsert = new SqlCommand("INSERT INTO [Data] (ChatId)VALUES(@ChatId)", sqlConnection);
                                commandInsert.Parameters.AddWithValue("ChatId", Convert.ToString(message.Chat.Id));
                                await commandInsert.ExecuteNonQueryAsync();

                                // Log info
                                await Bot.SendTextMessageAsync(402256119, $"{DateTime.Now}: Новый пользователь {message.Chat.FirstName} {message.Chat.LastName}");
                            }
                            else
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, $"Я тебя помню. Кажется ты уже пользовался моими услугами.\nПроверь пожалуйста свои данные:\n{data[0]}\n{data[1]}");
                            }
                        }
                        else
                        if (message.Text[0] != '/' && message.Text.Contains(" ") && message.Text.Split().Count() == 2)
                        {
                            if (botFree)
                            {
                                string[] data = message.Text.Split();

                                // Cheching correct format of e-mail & password
                                string emailPattern = @"^(?("")(""[^""]+?""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))" +
                                                      @"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9]{2,17}))$";
                                Regex  regexLogin      = new Regex(emailPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
                                string passwordPattern = @"^(?=.*[a-z])(?=.*[0-9])";
                                Regex  regexPass       = new Regex(passwordPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);

                                if (!regexLogin.IsMatch(data[0]))
                                {
                                    await Bot.SendTextMessageAsync(message.Chat.Id, "Неправильный формат почты.\nПопробуй еще раз.");
                                }
                                else if (!regexPass.IsMatch(data[1]))
                                {
                                    await Bot.SendTextMessageAsync(message.Chat.Id, "Неправильный формат пароля.\nПопробуй еще раз.");
                                }
                                else
                                {
                                    SqlCommand command = new SqlCommand("UPDATE [Data] SET [Login]=@Login, [Password]=@Password, [Name]=@Name WHERE [ChatId]=@ChatId", sqlConnection);
                                    command.Parameters.AddWithValue("Login", data[0]);
                                    command.Parameters.AddWithValue("Password", data[1]);
                                    command.Parameters.AddWithValue("Name", message.Chat.FirstName + " " + message.Chat.LastName);
                                    command.Parameters.AddWithValue("ChatId", Convert.ToString(message.Chat.Id));
                                    await command.ExecuteNonQueryAsync();

                                    await Bot.SendTextMessageAsync(message.Chat.Id, "Хорошо, я запомнил.\nЕсли ты ввёл почту и пароль правильно, то всё будет хорошо");

                                    await Bot.SendTextMessageAsync(message.Chat.Id, "Теперь введи команду /work, чтобы посмотреть свои оценки");
                                }
                            }
                            else
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, botBusyMessage);
                            }
                        }
                        else
                        if (message.Text == "/work")
                        {
                            if (botFree)
                            {
                                botFree = false;
                                int countOfViews = 0;
                                await Bot.SendTextMessageAsync(message.Chat.Id, "Работаю...");

                                string        currentUserLogin    = "";
                                string        currentUserPassword = "";
                                SqlDataReader sqlReader           = null;
                                SqlCommand    command             = new SqlCommand("SELECT Login, Password, Views FROM [Data] WHERE [ChatId]=@ChatId", sqlConnection);
                                command.Parameters.AddWithValue("ChatId", Convert.ToString(message.Chat.Id));
                                try
                                {
                                    sqlReader = await command.ExecuteReaderAsync();

                                    while (await sqlReader.ReadAsync())
                                    {
                                        currentUserLogin    = Convert.ToString(sqlReader["Login"]);
                                        currentUserPassword = Convert.ToString(sqlReader["Password"]);
                                        countOfViews        = Convert.ToInt32(Convert.ToString(sqlReader["Views"]));
                                    }
                                    await Bot.SendTextMessageAsync(message.Chat.Id, "1-ая ступень...");
                                }
                                catch (Exception ex)
                                {
                                    await Bot.SendTextMessageAsync(402256119, $"{DateTime.Now}: Начальник, случилась оказия!\n\n{ex.Message.ToString()}\n\n{ex.Source.ToString()}");
                                }
                                finally
                                {
                                    if (sqlReader != null)
                                    {
                                        sqlReader.Close();
                                    }
                                }
                                User user = new User(currentUserLogin, currentUserPassword);
                                await Bot.SendTextMessageAsync(message.Chat.Id, "2-ая ступень...");

                                List <string> data = await user.GetInfoAsync();

                                int t = 3;
                                while (data.Count < 1 && t <= 5)
                                {
                                    await Bot.SendTextMessageAsync(message.Chat.Id, $"{t}-ая ступень...");

                                    data = await user.GetInfoAsync();

                                    t++;
                                }
                                if (t <= 5)
                                {
                                    if (user.Names.Count == 1)
                                    {
                                        if (user.Grades[0].Contains("Электив"))
                                        {
                                            await Bot.SendTextMessageAsync(message.Chat.Id, user.Names[0] + "\n\n" + user.Grades[0].Substring(0, user.Grades[0].IndexOf("Электив")));
                                        }
                                        else
                                        {
                                            await Bot.SendTextMessageAsync(message.Chat.Id, user.Names[0] + "\n\n" + user.Grades[0]);
                                        }
                                    }
                                    else
                                    {
                                        for (int i = 0; i < user.Names.Count; i++)
                                        {
                                            if (user.Grades[i].Contains("Электив"))
                                            {
                                                await Bot.SendTextMessageAsync(message.Chat.Id, user.Names[i] + "\n\n" + user.Grades[i].Substring(0, user.Grades[i].IndexOf("Электив")));
                                            }
                                            else
                                            {
                                                await Bot.SendTextMessageAsync(message.Chat.Id, user.Names[i] + "\n\n" + user.Grades[i]);
                                            }
                                        }
                                    }
                                    // Update count of views
                                    try
                                    {
                                        SqlCommand commandLogInfo = new SqlCommand("UPDATE [Data] SET [Views]=@Views WHERE [ChatId]=@ChatId", sqlConnection);
                                        commandLogInfo.Parameters.AddWithValue("Views", Convert.ToString(countOfViews + 1));
                                        commandLogInfo.Parameters.AddWithValue("ChatId", Convert.ToString(message.Chat.Id));
                                        await commandLogInfo.ExecuteNonQueryAsync();
                                    }
                                    catch (Exception ex)
                                    {
                                        await Bot.SendTextMessageAsync(402256119, $"{DateTime.Now}: Начальник, случилась оказия!\n\n{ex.Message.ToString()}\n\n{ex.Source.ToString()}");
                                    }
                                    finally
                                    {
                                        // Log info
                                        if (message.Chat.Id != 402256119)
                                        {
                                            await Bot.SendTextMessageAsync(402256119, $"{DateTime.Now}: Вход\nПользователь {message.Chat.FirstName} {message.Chat.LastName} ({countOfViews + 1})\n{currentUserLogin}");
                                        }
                                    }
                                }
                                else
                                {
                                    await Bot.SendTextMessageAsync(message.Chat.Id, "Не получилось :(\nПопробуй ещё раз");
                                }
                                botFree = true;
                            }
                            else
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, botBusyMessage);
                            }
                        }
                        else
                        if (message.Text == "/check")
                        {
                            if (botFree)
                            {
                                string[]      data      = new string[2];
                                SqlDataReader sqlReader = null;
                                SqlCommand    command   = new SqlCommand("SELECT Login, Password FROM [Data] WHERE [ChatId]=@ChatId", sqlConnection);
                                command.Parameters.AddWithValue("ChatId", Convert.ToString(message.Chat.Id));
                                try
                                {
                                    sqlReader = await command.ExecuteReaderAsync();

                                    while (await sqlReader.ReadAsync())
                                    {
                                        data[0] = Convert.ToString(sqlReader["Login"]);
                                        data[1] = Convert.ToString(sqlReader["Password"]);
                                    }
                                    await Bot.SendTextMessageAsync(message.Chat.Id, "Ты хотел проверить информацию.\nВот твои данные:");

                                    await Bot.SendTextMessageAsync(message.Chat.Id, data[0] + "\n" + data[1]);

                                    await Bot.SendTextMessageAsync(message.Chat.Id, "Если хочешь изменить информацию о себе, просто отправь мне логин и пароль через пробел.\nЯ пойму ;)");
                                }
                                catch (Exception ex)
                                {
                                    await Bot.SendTextMessageAsync(402256119, $"{DateTime.Now}: Начальник, случилась оказия!\n\n{ex.Message.ToString()}\n\n{ex.Source.ToString()}");
                                }
                                finally
                                {
                                    if (sqlReader != null)
                                    {
                                        sqlReader.Close();
                                    }
                                }
                            }
                            else
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, botBusyMessage);
                            }
                        }
                        else
                        if (message.Text == "/help")
                        {
                            var keyboard = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(
                                new Telegram.Bot.Types.InlineKeyboardButton[][]
                            {
                                // First row
                                new [] {
                                    new Telegram.Bot.Types.InlineKeyboardButton("FAQ", "faq"),
                                },
                                // Second row
                                new [] {
                                    new Telegram.Bot.Types.InlineKeyboardButton("Инструкция", "instruction"),
                                },
                                // Third row
                                new [] {
                                    new Telegram.Bot.Types.InlineKeyboardButton("Поддержать разработчика", "support"),
                                },
                            }
                                );

                            await Bot.SendTextMessageAsync(message.Chat.Id, "Справка:", false, false, 0, keyboard, Telegram.Bot.Types.Enums.ParseMode.Default);
                        }
                        else
                        if (message.Text == "/revolution")
                        {
                            await Bot.SendPhotoAsync(message.Chat.Id, "http://aftamat4ik.ru/wp-content/uploads/2017/03/photo_2016-12-13_23-21-07.jpg", "Revolution!");
                        }
                        else
                        {
                            bool   madeOfDigits = true;
                            string msg          = message.Text.Trim();
                            int    sum          = 0;
                            for (int i = 0; i < msg.Length; i++)
                            {
                                if (msg[i] >= '0' && msg[i] <= '9')
                                {
                                    sum += (msg[i] - '0');
                                }
                                else
                                {
                                    madeOfDigits = false;
                                    break;
                                }
                            }
                            if (madeOfDigits)
                            {
                                await Bot.SendTextMessageAsync(message.Chat.Id, $"Средний балл: {(float)sum/msg.Length}");
                            }
                        }
                    }
                };
                // запускаем прием обновлений
                Bot.StartReceiving();
            }
            catch (Telegram.Bot.Exceptions.ApiRequestException ex)
            {
                Console.WriteLine(ex.Message); // если ключ не подошел - пишем об этом в консоль отладки
            }
        }
Ejemplo n.º 16
0
        async void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            var worker = sender as BackgroundWorker;
            var key    = e.Argument as String; // получаем ключ из аргументов

            try
            {
                var Bot = new Telegram.Bot.TelegramBotClient(key); // инициализируем API
                await Bot.SetWebhookAsync("");                     // Обязательно! убираем старую привязку к вебхуку для бота

                //TEST

                try
                {
                    Bot.OnUpdate += async(object su, Telegram.Bot.Args.UpdateEventArgs evu) =>
                    {
                        if (evu.Update.CallbackQuery != null || evu.Update.InlineQuery != null)
                        {
                            return;                                                                     // в этом блоке нам келлбэки и инлайны не нужны
                        }
                        var update  = evu.Update;
                        var message = update.Message;

                        string txt = Properties.Settings.Default.solo;
                        if (message == null)
                        {
                            return;
                        }

                        if (message.Type == Telegram.Bot.Types.Enums.MessageType.Text)
                        {
                            var chtid    = message.Chat.Id;
                            int chtidi   = (int)chtid;
                            var username = message.From.Username;
                            var name     = message.From.FirstName;
                            var surname  = message.From.LastName;
                            var chatname = message.Chat.Title;

                            InputOnlineFile vzhuh     = new InputOnlineFile("CAADAgADKwADCpgGDM8eYp6xnBJwAg");
                            InputOnlineFile stick     = new InputOnlineFile("CAADAgADjAAD2kJgEdHmJbf9LcNAAg");
                            InputOnlineFile kickstick = new InputOnlineFile("CAADAgADFwADCpgGDPT5dlQ90N3vAg");
                            InputOnlineFile gogo      = new InputOnlineFile("CAADAgADIgADCpgGDP2DujSOYxb2Ag");
                            InputOnlineFile stb_1     = new InputOnlineFile("CAADAgADKAADCpgGDAlPwj3jog11Ag");
                            InputOnlineFile pipi      = new InputOnlineFile("MEDIA/bolt.jpg");
                            string          offlist   = System.IO.File.ReadAllText("offlist.txt");



                            try
                            {
                                if (message.Text.ToLower().Equals("987"))
                                {
                                    string tempz = Properties.Settings.Default.SettingsKey;
                                    await Bot.SendTextMessageAsync(message.Chat.Id, tempz);

                                    return;
                                }
                                //ВЫЗОВ ИЗ ЧАТА


                                if (message.Text.ToLower().Contains("ридонли"))
                                {
                                    int iserid = message.ReplyToMessage.From.Id;
                                    //string usrid = iserid.ToString();

                                    if (offlist.Contains(username))
                                    {
                                        var      RoS        = message.Text.ToString();
                                        Regex    my_reg     = new Regex(@"\D");
                                        string   out_string = my_reg.Replace(RoS, "");
                                        int      RoTime     = Convert.ToInt32(out_string);
                                        DateTime untilDate  = DateTime.Now.AddMinutes(RoTime);
                                        await Bot.RestrictChatMemberAsync(message.Chat.Id, iserid, untilDate);

                                        await Bot.SendStickerAsync(message.Chat.Id, vzhuh);

                                        await Bot.SendTextMessageAsync(message.Chat.Id, message.ReplyToMessage.From.FirstName + ", поздравляю!  В качестве бонуса, ты получаешь РО на " + RoTime.ToString() + " минут.", replyToMessageId : message.ReplyToMessage.MessageId);

                                        await Bot.DeleteMessageAsync(message.Chat.Id, message.MessageId);

                                        return;
                                    }
                                    if (message.From.Id == iserid)
                                    {
                                        var      RoS        = message.Text.ToString();
                                        Regex    my_reg     = new Regex(@"\D");
                                        string   out_string = my_reg.Replace(RoS, "");
                                        int      RoTime     = Convert.ToInt32(out_string);
                                        DateTime untilDate  = DateTime.Now.AddMinutes(RoTime);
                                        await Bot.RestrictChatMemberAsync(message.Chat.Id, iserid, untilDate);

                                        await Bot.SendStickerAsync(message.Chat.Id, vzhuh);

                                        await Bot.SendTextMessageAsync(message.Chat.Id, message.ReplyToMessage.From.FirstName + ", очень жаль, но это было твое решение :(  Ты получаешь РО на " + RoTime.ToString() + " минут.", replyToMessageId : message.ReplyToMessage.MessageId);

                                        await Bot.DeleteMessageAsync(message.Chat.Id, message.MessageId);

                                        return;
                                    }
                                    return;
                                }

                                //ДЛЯ ЕВЫ
                                if (message.Text.Contains("Ева, "))
                                {
                                    //В чате Кантины
                                    if (message.Chat.Id.Equals(-1001033483774))
                                    {
                                        List <string> lstT  = new List <string>();
                                        Random        randT = new Random();
                                        var           inxT  = System.IO.File.ReadAllLines(tost);
                                        string[]      str   = new string[1]; // здесь будут храниться n случаные неповторяющиеся строки из inxT
                                        int           k;

                                        for (int i = 0; i < str.Length; i++)
                                        {
                                            while (true)
                                            {
                                                k = randT.Next(inxT.Length);

                                                if (!lstT.Any(x => x.Equals(inxT[k])))
                                                {
                                                    lstT.Add(inxT[k]);

                                                    str[i] = inxT[k];

                                                    break;
                                                }
                                            }
                                        }
                                        //await Bot.SendTextMessageAsync(message.Chat.Id, "Тут этого делать нельзя.");
                                        string lls = string.Join("\r\n", lstT.ToArray());
                                        await Bot.SendTextMessageAsync(message.Chat.Id, "Я просто скажу тост:" + "\r\n" + lls);

                                        return;
                                    }

                                    //Во всех остальных чатах
                                    else
                                    {
                                        string inmess = message.Text.ToLower();
                                        //TEST CHAT ID
                                        System.IO.File.AppendAllText(all_msg, DateTime.Now + " " + chatname + " " + username + " " + name + " " + surname + "\r\n" + message.Text + "\r\n");
                                        string[] readText = System.IO.File.ReadAllLines(logs_path, Encoding.Default);

                                        if (inmess.Contains("hooba") && username.Equals("kanier"))
                                        {
                                            //string last_ten = System.IO.File.ReadAllText("123.txt");
                                            //string n = readText[i];
                                            await Bot.SendTextMessageAsync(message.Chat.Id, System.IO.File.ReadAllText("LOGS/123.txt"));

                                            return;
                                        }
                                        if (inmess.Contains("покажи всё") && username.Equals("kanier"))
                                        {
                                            //string last_ten = System.IO.File.ReadAllText("123.txt");
                                            //string n = readText[i];
                                            await Bot.SendTextMessageAsync(message.Chat.Id, System.IO.File.ReadAllText(logs_path));

                                            return;
                                        }
                                        if (inmess.Contains("срейд"))
                                        {
                                            string srtext = System.IO.File.ReadAllText(sreid_path);
                                            //await Bot.SendTextMessageAsync(message.Chat.Id, "[Тестовая ссылка из бота](https://t.me/iv?url=https%3A%2F%2Fyavin4.ru%2Fother%2Fthe-sith-triumvirate%2F&rhash=a6a7d09d8d0768)");
                                            await Bot.SendTextMessageAsync(message.Chat.Id, "Я просто оставлю это здесь...\n" + srtext);

                                            return;
                                        }
                                        if (inmess.Contains("взвод"))
                                        {
                                            await Bot.SendTextMessageAsync(message.Chat.Id, "https://yavin4.ru/other/tb-platoons/" + "\r\n" + "^^^^^^^^^^^^^^^^^^^^^^^^" + "\r\n" + "https://t.me/iv?url=https://yavin4.ru/other/tb-platoons/&rhash=a6a7d09d8d0768");

                                            return;
                                        }

                                        if (inmess.Contains("экстерминатус") && username.Equals("kanier") || inmess.Contains("экстерминатус") && username.Equals("vlad_o_v"))
                                        {
                                            InputOnlineFile stream = new InputOnlineFile("MEDIA/flu.mp4");
                                            //InputOnlineFile  fts = new InputOnlineFile(stream);

                                            //Stream stream_flu = null;
                                            //fts.Content = stream;
                                            stream.FileName = "FLU";

                                            //ТЕСТОВЫЙ КУСОК
                                            DateTime old_ticker_dt = Properties.Settings.Default.ticker_start;
                                            DateTime now_ticker_dt = DateTime.Now;
                                            TimeSpan alltime       = Properties.Settings.Default.best_try;
                                            TimeSpan nowalltime    = now_ticker_dt - old_ticker_dt;
                                            if (nowalltime > alltime)
                                            {
                                                Properties.Settings.Default.best_try = nowalltime;
                                                Properties.Settings.Default.Save();
                                            }
                                            else
                                            {
                                                Properties.Settings.Default.best_try = alltime;
                                                Properties.Settings.Default.Save();
                                            }


                                            ///Запомнить===>>//DateTime rec_time = Properties.Settings.Default.ticker_start;
                                            DateTime ticker = DateTime.Now;
                                            Properties.Settings.Default.ticker_start = ticker;
                                            Properties.Settings.Default.Save();
                                            string txt_ticker = ticker.ToString();
                                            //await Bot.SendTextMessageAsync(message.Chat.Id, "Мне очень печально это говорить но, ПРИНЕСИТЕ FLUGGEGECHEIMEN!!!", replyToMessageId: message.MessageId);
                                            //await Bot.SendDocumentAsync(message.Chat.Id, stream, "Мне очень печально это говорить но, ПРИНЕСИТЕ FLUGGEGECHEIMEN!!!");
                                            await Bot.SendVideoAsync(message.Chat.Id, stream);

                                            return;
                                        }
                                        if (inmess.Contains("счетчик") || inmess.Contains("счётчик"))
                                        {
                                            string   old_ticker    = Properties.Settings.Default.ticker_start.ToString();
                                            DateTime old_ticker_dt = Properties.Settings.Default.ticker_start;
                                            DateTime now_ticker_dt = DateTime.Now;
                                            TimeSpan alltime       = now_ticker_dt - old_ticker_dt;
                                            //Properties.Settings.Default.best_try = alltime;
                                            //string final_count_full = alltime.ToString();
                                            //string final_count_short = final_count_full.Substring(0, final_count_full.LastIndexOf("."));
                                            //string final_count_wo_days = alltime.ToString("DD:MM:SS");
                                            //await Bot.SendTextMessageAsync(message.Chat.Id, "Новый отсчёт был запущен: " + old_ticker);
                                            await Bot.SendTextMessageAsync(message.Chat.Id, "На Явине всё спокойно уже: " + string.Format("\nДней: {0:%d} \nЧасов: {0:%h} \nМинут: {0:%m} \nСекунд: {0:%s}", alltime) + "\nОтсчёт был запущен: " + old_ticker);

                                            string for_lbl = "На Явине всё спокойно уже: " + string.Format("\nДней: {0:%d} \nЧасов: {0:%h} \nМинут: {0:%m} \nСекунд: {0:%s}", alltime) + "\nОтсчёт был запущен: " + old_ticker;
                                            Properties.Settings.Default.out_txt = for_lbl;
                                            Properties.Settings.Default.Save();
                                            TimeSpan best_try = Properties.Settings.Default.best_try;
                                            await Bot.SendTextMessageAsync(message.Chat.Id, string.Format("Лучшее время: Дней: {0:%d} Часов: {0:%h} Минут: {0:%m} Секунд: {0:%s}", best_try));

                                            //await Bot.SendTextMessageAsync(message.Chat.Id, "Дней: " + final_count_short.Substring(0, final_count_short.LastIndexOf(".")));
                                            return;
                                        }
                                        if (inmess.Contains("обнули 900") && username.Equals("kanier"))
                                        {
                                            Properties.Settings.Default.best_try = new TimeSpan(0, 0, 0, 0);
                                            Properties.Settings.Default.Save();
                                            return;
                                        }

                                        if (inmess.Contains("пришло время"))
                                        {
                                            await Bot.SendStickerAsync(message.Chat.Id, kickstick);

                                            return;
                                        }


                                        if (inmess.Contains("chatid") && username.Equals("kanier"))
                                        {
                                            await Bot.SendTextMessageAsync(message.Chat.Id, chtid.ToString());

                                            return;
                                        }

                                        //TEST MESSAGE TO OTHER CHAT
                                        if (inmess.Contains("отправь") && offlist.Contains(username))
                                        {
                                            if (inmess.Contains("в кантину кота"))
                                            {
                                                await Bot.SendStickerAsync("-1001033483774", vzhuh);

                                                return;
                                            }
                                            if (inmess.Contains("стикер кик"))
                                            {
                                                await Bot.SendStickerAsync("-1001119850321", kickstick);

                                                return;
                                            }
                                            ////Properties.Settings.Default.buffer = inmess;
                                            //string sendinmess = inmess.Replace("Ева, ", "");
                                            //Properties.Settings.Default.buffer = sendinmess;
                                            //Properties.Settings.Default.Save();
                                            //string smess = Properties.Settings.Default.buffer;
                                            await Bot.SendTextMessageAsync("-1001119850321", message.Text.Replace("Ева, отправь ", ""));

                                            return;
                                        }
                                        //if (inmess.Contains("гого")&& offlist.Contains(username))
                                        //   {
                                        //       try
                                        //       {



                                        //           //await Bot.SendDocumentAsync("-1001119850321", fts, "Все на ТБ!!!");
                                        //           await Bot.SendStickerAsync("-1001119850321", gogo);
                                        //           await Bot.SendStickerAsync("-1001121566331 ", gogo);
                                        //           //            //await Bot.SendDocumentAsync(message.Chat.Id, new InputOnlineFile("GP.xlsx"));
                                        //           return;
                                        //       }
                                        //       catch (Exception ex)
                                        //       {
                                        //           System.IO.File.WriteAllText("LOGS/errorall.txt", ex.Message);
                                        //           //await Bot.SendTextMessageAsync(message.Chat.Id, "Что-то не так");
                                        //           return;

                                        //       }


                                        //   }
                                        if (inmess.Contains("привет") || inmess.Contains("как дела") || inmess.Contains("здрав"))
                                        {
                                            await Bot.SendTextMessageAsync(message.Chat.Id, "Привет, " + name + "." + "\r\n" + "Что ты хочешь знать?" + "\r\n" + "Я могу напомнить тебе правила Ямы или ААТ, показать список солистов или памятку по ТБ. Могу напомнить, кто закрывает соло следующую Яму-0. И многое другое ;) Достаточно обратиться ко мне по имени. К примеру: \"Ева, кто закрывает соло?\"", replyToMessageId : message.MessageId);

                                            return;
                                        }
                                        if (inmess.Contains("соло") || inmess.Contains("закрывает"))

                                        {
                                            if (offlist.Contains(username))
                                            {
                                                // в ответ на команду выводим сообщение
                                                await Bot.SendTextMessageAsync(message.Chat.Id, txt);

                                                return;
                                            }
                                            else
                                            {
                                                string ntxt  = Properties.Settings.Default.short_solo;
                                                string wotxt = ntxt.Replace("@", "");
                                                await Bot.SendTextMessageAsync(message.Chat.Id, "Для закрытия следующей Ямы-0, Колесом Фортуны избран " + wotxt + " !");

                                                return;
                                            }
                                        }

                                        //ТЕСТ РИДОНЛИ



                                        if (inmess.Contains("накати") || inmess.Contains("рря") || inmess.Contains("тост"))
                                        {
                                            List <string> lstT  = new List <string>();
                                            Random        randT = new Random();
                                            var           inxT  = System.IO.File.ReadAllLines(tost);
                                            string[]      str   = new string[1]; // здесь будут храниться n случаные неповторяющиеся строки из inxT
                                            int           k;

                                            for (int i = 0; i < str.Length; i++)
                                            {
                                                while (true)
                                                {
                                                    k = randT.Next(inxT.Length);

                                                    if (!lstT.Any(x => x.Equals(inxT[k])))
                                                    {
                                                        lstT.Add(inxT[k]);

                                                        str[i] = inxT[k];

                                                        break;
                                                    }
                                                }
                                            }

                                            string lls = string.Join("\r\n", lstT.ToArray());

                                            await Bot.SendTextMessageAsync(message.Chat.Id, lls);

                                            return;
                                        }

                                        if (inmess.Contains("стб"))
                                        {
                                            string          f1text  = System.IO.File.ReadAllText("TEXT/STB/f1.txt");
                                            string          f2text  = System.IO.File.ReadAllText("TEXT/STB/f2.txt");
                                            string          f3text  = System.IO.File.ReadAllText("TEXT/STB/f3.txt");
                                            string          f4text  = System.IO.File.ReadAllText("TEXT/STB/f4.txt");
                                            string          f5text  = System.IO.File.ReadAllText("TEXT/STB/f5.txt");
                                            string          f6text  = System.IO.File.ReadAllText("TEXT/STB/f6.txt");
                                            var             stream1 = System.IO.File.Open("MEDIA/STB.jpg", FileMode.Open);
                                            InputOnlineFile pipi1   = new InputOnlineFile(stream1)
                                            {
                                                //pipi1.ContentContent = stream1,
                                                //pipi1.FileName = "MEDIA/STB.jpg"
                                            };

                                            if (inmess.Contains("1"))
                                            {
                                                await Bot.SendPhotoAsync(message.Chat.Id, photo : pipi1);

                                                await Bot.SendTextMessageAsync(message.Chat.Id, f1text);

                                                return;
                                            }

                                            if (inmess.Contains("2"))
                                            {
                                                await Bot.SendPhotoAsync(message.Chat.Id, photo : pipi1);

                                                await Bot.SendTextMessageAsync(message.Chat.Id, f2text);

                                                return;
                                            }

                                            if (inmess.Contains("3"))
                                            {
                                                await Bot.SendPhotoAsync(message.Chat.Id, photo : pipi1);

                                                await Bot.SendTextMessageAsync(message.Chat.Id, f3text);

                                                return;
                                            }

                                            if (inmess.Contains("4"))
                                            {
                                                await Bot.SendPhotoAsync(message.Chat.Id, photo : pipi1);

                                                await Bot.SendTextMessageAsync(message.Chat.Id, f4text);

                                                return;
                                            }

                                            if (inmess.Contains("5"))
                                            {
                                                await Bot.SendPhotoAsync(message.Chat.Id, photo : pipi1);

                                                await Bot.SendTextMessageAsync(message.Chat.Id, f5text);

                                                return;
                                            }

                                            if (inmess.Contains("6"))
                                            {
                                                await Bot.SendPhotoAsync(message.Chat.Id, photo : pipi1);

                                                await Bot.SendTextMessageAsync(message.Chat.Id, f6text);

                                                return;
                                            }


                                            string tbfile = System.IO.File.ReadAllText("TEXT/STB/tb.txt");
                                            await Bot.SendTextMessageAsync(message.Chat.Id, tbfile);

                                            return;
                                        }
                                        if (inmess.Contains("ттб"))
                                        {
                                            await Bot.SendTextMessageAsync(message.Chat.Id, "К сожалению, мне пока ничего об этом не известно. Посмотрим, что там нахерачили ЕА.", replyToMessageId : message.MessageId);

                                            return;
                                        }
                                        if (inmess.Contains("прости") || inmess.Contains("извин"))
                                        {
                                            await Bot.SendTextMessageAsync(message.Chat.Id, "Ничего страшного! Но я это запомню...", replyToMessageId : message.MessageId);

                                            return;
                                        }
                                        if (inmess.Contains("ям") || inmess.Contains("ранкор"))
                                        {
                                            List <string> lstR = new List <string>();
                                            var           inxR = System.IO.File.ReadAllLines(rancor_path);
                                            string        llsR = string.Join("\r\n", inxR.ToArray());
                                            await Bot.SendTextMessageAsync(message.Chat.Id, "Я напомню тебе правила)))" + "\r\n" + llsR);

                                            return;
                                        }
                                        if (inmess.Contains("чудо") || inmess.Contains("хорошая") || inmess.Contains("умни") || inmess.Contains("умна") || inmess.Contains("крас"))
                                        {
                                            await Bot.SendTextMessageAsync(message.Chat.Id, "Спасибо, мне очень приятно!");

                                            return;
                                        }
                                        if (inmess.Contains("список"))
                                        {
                                            try
                                            {
                                                List <string> lstL   = new List <string>();
                                                string        lstall = System.IO.File.ReadAllText(solo_path);
                                                string        newlst = lstall.Replace("@", "");
                                                await Bot.SendTextMessageAsync(message.Chat.Id, newlst, replyToMessageId : message.MessageId);

                                                return;
                                            }
                                            catch
                                            {
                                                await Bot.SendTextMessageAsync(message.Chat.Id, "Список солистов пуст. Надо бы обновить.");

                                                return;
                                            }
                                        }
                                        if (inmess.Contains("аат") || inmess.Contains("танк"))
                                        {
                                            List <string> lstR = new List <string>();
                                            var           inxR = System.IO.File.ReadAllLines(aat_path);
                                            string        llsR = string.Join("\r\n", inxR.ToArray());
                                            await Bot.SendTextMessageAsync(message.Chat.Id, llsR, replyToMessageId : message.MessageId);

                                            return;
                                        }

                                        if (inmess.Contains("думаешь"))
                                        {
                                            await Bot.SendTextMessageAsync(message.Chat.Id, name + ", у меня просто нет слов.", replyToMessageId : message.MessageId);

                                            return;
                                        }

                                        if (inmess.Contains("выбери нового солиста"))
                                        {
                                            if (offlist.Contains(username))
                                            {
                                                //var checksolo = System.IO.File.ReadAllLines("solo.txt");
                                                //if (checksolo.Length == 0)
                                                //{
                                                //    MessageBox.Show("Файл пуст!");
                                                //}
                                                string lastsolo = Properties.Settings.Default.short_solo;
                                                var    soloL    = System.IO.File.ReadAllText(solo_path);
                                                var    soloX    = soloL.Replace(lastsolo, "");
                                                //var soloF = soloX.Replace("\n\n", "\n");
                                                //var lines = System.IO.File.ReadAllLines("solo.txt");
                                                //string[] linesX = lines.re
                                                //System.IO.File.WriteAllLines("solo.txt", lines);
                                                //MessageBox.Show(lastsolo);
                                                //MessageBox.Show(soloF);
                                                System.IO.File.WriteAllText(solo_path, soloX);

                                                string fileName       = solo_path;
                                                string outputFileName = "TEXT/solotemp.txt";
                                                string inputLine;

                                                System.IO.StreamReader sr = new System.IO.StreamReader(fileName);
                                                System.IO.StreamWriter sw = new System.IO.StreamWriter(outputFileName);

                                                inputLine = sr.ReadLine();
                                                while (inputLine != null)
                                                {
                                                    if (inputLine.Length > 0)
                                                    {
                                                        sw.WriteLine(inputLine);
                                                    }
                                                    // read the next line
                                                    inputLine = sr.ReadLine();
                                                }
                                                sr.Close();
                                                sw.Close();

                                                var transf = System.IO.File.ReadAllText("TEXT/solotemp.txt");
                                                System.IO.File.WriteAllText(solo_path, transf);
                                                try
                                                {
                                                    List <string> lst = new List <string>();

                                                    Random rand = new Random();

                                                    var inx = System.IO.File.ReadAllLines(solo_path);

                                                    string[] str = new string[1]; // здесь будут храниться n случаные неповторяющиеся строки из inx

                                                    int k;

                                                    for (int i = 0; i < str.Length; i++)
                                                    {
                                                        while (true)
                                                        {
                                                            k = rand.Next(inx.Length);
                                                            if (!lst.Any(x => x.Equals(inx[k])))
                                                            {
                                                                lst.Add(inx[k]);
                                                                str[i] = inx[k];
                                                                break;
                                                            }
                                                        }
                                                    }


                                                    string lls = string.Join("\r\n", lst.ToArray());
                                                    Properties.Settings.Default.short_solo = lls;
                                                    Properties.Settings.Default.solo       = "Для закрытия следующей Ямы-0, Колесом Фортуны избран " + lls + " !";
                                                    Properties.Settings.Default.Save();
                                                    await Bot.SendTextMessageAsync(message.Chat.Id, "В этот раз Фортуна избрала " + lls, replyToMessageId : message.MessageId);

                                                    return;
                                                }
                                                catch
                                                {
                                                    await Bot.SendTextMessageAsync(message.Chat.Id, "Список солистов пуст. Надо бы обновить");

                                                    return;
                                                }
                                            }

                                            else
                                            {
                                                await Bot.SendTextMessageAsync(message.Chat.Id, name + " , мне не говорили, что тебе можно это делать. Извини.", replyToMessageId : message.MessageId);

                                                return;
                                            }
                                        }


                                        if (inmess.Contains("спасибо") || inmess.Contains("благодар"))
                                        {
                                            await Bot.SendTextMessageAsync(message.Chat.Id, name + ", не стоит. Мне было даже немного приятно)))");

                                            return;
                                        }

                                        await Bot.SendTextMessageAsync(message.Chat.Id, name + ", что за ересь? Я не понимаю, что ты имеешь в виду(((");

                                        return;
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                System.IO.File.AppendAllText(logs_path, "\r\n" + DateTime.Now + "\r\n" + ex.Message + "\r\n");
                                return;
                            }

                            try
                            {
                                if (message.Text.Equals("Ева") || message.Text.Equals("/info") || message.Text.Equals("/info@YavinIV_rollbot"))
                                {
                                    await Bot.SendTextMessageAsync(message.Chat.Id, "Слушаю тебя, " + name + "." + "\r\n" + "Что ты хочешь знать?" + "\r\n" + "Я могу напомнить тебе правила Ямы или ААТ, показать список солистов или памятку по ТБ. Могу напомнить, кто закрывает соло следующую Яму-0. И многое другое ;) Достаточно обратиться ко мне по имени. К примеру: \"Ева, кто закрывает соло?\"", replyToMessageId : message.MessageId);

                                    return;
                                }
                            }
                            catch (Exception ex)
                            {
                                System.IO.File.AppendAllText(logs_path, "\r\n" + DateTime.Now + "\r\n" + ex.Message + "\r\n");
                                System.IO.File.WriteAllText("LOGS/123.txt", "\r\n" + DateTime.Now + "\r\n" + ex.Message + "\r\n");
                                return;
                            }
                        }
                    };

                    // запускаем прием обновлений
                    Bot.StartReceiving();
                }
                catch (Telegram.Bot.Exceptions.ApiRequestException ex)
                {
                    System.IO.File.WriteAllText("LOGS/error.log", "\r\n" + DateTime.Now + "\r\n" + ex.Message + "\r\n"); // если ключ не подошел - пишем об этом в консоль отладки
                }
            }
            catch (Exception ex)
            {
                System.IO.File.AppendAllText(logs_path, "\r\n" + DateTime.Now + "\r\n" + ex.Message + "\r\n");
                System.IO.File.WriteAllText("LOGS/123.txt", "\r\n" + DateTime.Now + "\r\n" + ex.Message + "\r\n");
            }
        }
Ejemplo n.º 17
0
        public async void BotOnMessageReceived(object sender, MessageEventArgs messageEventArgs)
        {
            Message message = messageEventArgs.Message;

            if (message == null || message.Type != MessageType.TextMessage)
            {
                return;
            }
            _chatid = message.Chat.Id;
            try
            {
                Logger.ColoredConsoleWrite(ConsoleColor.Red, "[TelegramAPI] Got Request from " + message.From.Username + " | " + message.Text);
                string username       = _botSettings.TelegramName;
                string telegramAnswer = string.Empty;

                if (username != message.From.Username)
                {
                    using (System.IO.Stream stream = new System.IO.MemoryStream())
                    {
                        PokemonGo.RocketAPI.Logic.Properties.Resources.norights.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
                        stream.Position = 0;
                        await _telegram.SendPhotoAsync(_chatid, new FileToSend("norights.jpg", stream), replyMarkup : new ReplyKeyboardHide()).ConfigureAwait(false);
                    }
                    return;
                }

                // [0]-Commando; [1+]-Argument
                var              msgText = message.Text;
                string[]         textCMD = msgText.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                TelegramUtilTask cmd     = getTask(textCMD[0]);
                switch (cmd)
                {
                case TelegramUtilTask.UNKNOWN:
                    telegramAnswer = string.Format("Usage:\r\n{0}\r\n{1}\r\n{2}\r\n{3}\r\n{4}\r\n{5}\r\n{6}\r\n{7}\r\n{8}\r\n{9}",
                                                   @"/stats - Get Current Stats",
                                                   @"/livestats - Enable/Disable Live Stats",
                                                   @"/information <topic> - Enable/Disable Information topics",
                                                   @"/top <HowMany?> - Outputs Top (?) Pokemons",
                                                   @"/transfer pokemon cp - transfer pokemons that matches with the given data",
                                                   @"/items  - Outputs Items List",
                                                   @"/drop item amount  - Throws the amount of items given",
                                                   @"/forceevolve - Forces Evolve",
                                                   @"/snipe pokemon latitude, longitude - snipe desired pokemon",
                                                   @"/stopbot - stop running bot");
                    break;

                case TelegramUtilTask.GET_STATS:
                    var ps = _client.Inventory.GetPlayerStats();

                    int    l             = ps.First().Level;
                    long   expneeded     = ((ps.First().NextLevelXp - ps.First().PrevLevelXp) - StringUtils.getExpDiff(ps.First().Level));
                    long   curexp        = ((ps.First().Experience - ps.First().PrevLevelXp) - StringUtils.getExpDiff(ps.First().Level));
                    double curexppercent = (Convert.ToDouble(curexp) / Convert.ToDouble(expneeded)) * 100;
                    string curloc        = _client.CurrentLatitude + "%20" + _client.CurrentLongitude;
                    curloc = curloc.Replace(",", ".");
                    string curlochtml = "https://www.google.com/maps/search/" + curloc + "/";
                    double shortenLng = Math.Round(_client.CurrentLongitude, 3);
                    double shortenLat = Math.Round(_client.CurrentLatitude, 3);
                    var    player     = _client.Player.GetPlayer();
                    telegramAnswer += "\nNickname: " + player.PlayerData.Username;
                    telegramAnswer += "\nLevel: " + ps.First().Level;
                    telegramAnswer += "\nEXP Needed: " + ((ps.First().NextLevelXp - ps.First().PrevLevelXp) - StringUtils.getExpDiff(ps.First().Level));
                    telegramAnswer += $"\nCurrent EXP: {curexp} ({Math.Round(curexppercent)}%)";
                    telegramAnswer += "\nEXP to Level up: " + ((ps.First().NextLevelXp) - (ps.First().Experience));
                    telegramAnswer += "\nKM walked: " + ps.First().KmWalked;
                    telegramAnswer += "\nPokeStops visited: " + ps.First().PokeStopVisits;
                    telegramAnswer += "\nStardust: " + player.PlayerData.Currencies.ToArray()[1].Amount;
                    telegramAnswer += "\nPokemons: " + (_client.Inventory.GetPokemons()).Count() + "/" + player.PlayerData.MaxPokemonStorage;
                    telegramAnswer += "\nItems: " + _client.Inventory.GetItems().Count() + " / " + player.PlayerData.MaxItemStorage;
                    telegramAnswer += "\nCurentLocation:\n" + curlochtml;
                    break;

                case TelegramUtilTask.GET_TOPLIST:
                    int shows = 10;
                    if (textCMD.Length > 1 && !int.TryParse(textCMD[1], out shows))
                    {
                        telegramAnswer += $"Error! This is not a Number: {textCMD[1]}\nNevermind...\n";
                        shows           = 10; //TryParse error will reset to 0
                    }
                    telegramAnswer += "Showing " + shows + " Pokemons...\nSorting...";
                    await _telegram.SendTextMessageAsync(_chatid, telegramAnswer, replyMarkup : new ReplyKeyboardHide()).ConfigureAwait(false);

                    var myPokemons = _client.Inventory.GetPokemons();
                    myPokemons = myPokemons.OrderByDescending(x => x.Cp);
                    var PogoUsername = _client.Player.GetPlayer().PlayerData.Username;
                    telegramAnswer = $"Top {shows} Pokemons of {PogoUsername}:";

                    IEnumerable <PokemonData> topPokemon = myPokemons.Take(shows);
                    foreach (PokemonData pokemon in topPokemon)
                    {
                        telegramAnswer += string.Format("\n{0} |  CP: {1} ({2}% perfect)",
                                                        pokemon.PokemonId,
                                                        pokemon.Cp,
                                                        Math.Round(PokemonInfo.CalculatePokemonPerfection(pokemon), 2));
                    }
                    break;

                case TelegramUtilTask.SWITCH_LIVESTATS:
                    _livestats = SwitchAndGetAnswer(_livestats, out telegramAnswer, "Live Stats");
                    break;

                case TelegramUtilTask.SWITCH_INFORMATION:
                    //_informations = SwitchAndGetAnswer(_informations, out telegramAnswer, "Information");
                    Array topics = Enum.GetValues(typeof(TelegramUtilInformationTopics));
                    if (textCMD.Length > 1)
                    {
                        if (textCMD[1] == "all-enable")
                        {
                            foreach (TelegramUtilInformationTopics topic in topics)
                            {
                                String niceName = topic.ToString().Substring(0, 1).ToUpper() + topic.ToString().Substring(1).ToLower();
                                telegramAnswer     += "Enabled information topic " + niceName + "\n";
                                _information[topic] = true;
                            }
                            break;
                        }
                        else if (textCMD[1] == "all-disable")
                        {
                            foreach (TelegramUtilInformationTopics topic in topics)
                            {
                                String niceName = topic.ToString().Substring(0, 1).ToUpper() + topic.ToString().Substring(1).ToLower();
                                telegramAnswer     += "Disabled information topic " + niceName + "\n";
                                _information[topic] = false;
                            }
                            break;
                        }
                        else
                        {
                            foreach (TelegramUtilInformationTopics topic in topics)
                            {
                                if (textCMD[1].ToLower() == topic.ToString().ToLower())
                                {
                                    String niceName = topic.ToString().Substring(0, 1).ToUpper() + topic.ToString().Substring(1).ToLower();
                                    _information[topic] = !_information[topic];
                                    telegramAnswer      = (_information[topic] ? "En" : "Dis") + "abled information topic " + niceName + "\n";
                                    break;
                                }
                            }
                        }
                    }
                    else
                    {
                        foreach (TelegramUtilInformationTopics topic in topics)
                        {
                            String niceName = topic.ToString().Substring(0, 1).ToUpper() + topic.ToString().Substring(1).ToLower();
                            telegramAnswer += " - " + niceName + "\n";
                            telegramAnswer += " -     " + _informationDescription[topic] + "\n";
                            telegramAnswer += " -     Currently " + (_information[topic] ? "enabled" : "disabled") + "\n";
                            telegramAnswer += "\n";
                        }

                        telegramAnswer += " - all-disable\n";
                        telegramAnswer += " -     " + TranslationHandler.GetString("telegram-disable-all", "Disable all topics") + "\n";
                        telegramAnswer += "\n";

                        telegramAnswer += " - all-enable\n";
                        telegramAnswer += " -     " + TranslationHandler.GetString("telegram-enable-all", "Enable all topics") + "\n";
                        telegramAnswer += "\n";
                        break;
                    }

                    break;

                case TelegramUtilTask.RUN_FORCEEVOLVE:
                    IEnumerable <PokemonData> pokemonToEvolve = Setout.GetPokemonToEvolve(true);
                    if (pokemonToEvolve.Count() > 3)
                    {
                        Setout.UseLuckyEgg(_client);
                    }
                    foreach (PokemonData pokemon in pokemonToEvolve)
                    {
                        if (_botSettings.pokemonsToEvolve.Contains(pokemon.PokemonId))
                        {
                            var evolvePokemonOutProto = _client.Inventory.EvolvePokemon((ulong)pokemon.Id);
                            if (evolvePokemonOutProto.Result == POGOProtos.Networking.Responses.EvolvePokemonResponse.Types.Result.Success)
                            {
                                await _telegram.SendTextMessageAsync(_chatid, $"Evolved {pokemon.PokemonId} successfully for {evolvePokemonOutProto.ExperienceAwarded}xp", replyMarkup : new ReplyKeyboardHide()).ConfigureAwait(false);
                            }
                            else
                            {
                                await _telegram.SendTextMessageAsync(_chatid, $"Failed to evolve {pokemon.PokemonId}. EvolvePokemonOutProto.Result was {evolvePokemonOutProto.Result}, stopping evolving {pokemon.PokemonId}", replyMarkup : new ReplyKeyboardHide()).ConfigureAwait(false);
                            }
                            RandomHelper.RandomSleep(2000);
                        }
                    }
                    telegramAnswer = "Done.";
                    break;

                case TelegramUtilTask.RUN_SNIPE:
                    telegramAnswer = ProcessSnipeCommand(msgText.Replace(textCMD[0], "").Trim());
                    break;

                case TelegramUtilTask.FORCE_STOP:
                    var secs = 1;
                    if (textCMD.Length > 1)
                    {
                        int.TryParse(textCMD[1].Trim(), out secs);
                    }
                    telegramAnswer = $"Stopping bot in {secs} seconds";
                    await _telegram.SendTextMessageAsync(_chatid, telegramAnswer, replyMarkup : new ReplyKeyboardHide()).ConfigureAwait(false);

                    _telegram.StopReceiving();
                    RandomHelper.RandomSleep(secs * 1000);
                    Environment.Exit(0);
                    break;

                case TelegramUtilTask.TRANSFER_POKEMON:
                    telegramAnswer = ProcessTransferPokemon(msgText.Replace(textCMD[0], "").Trim());
                    break;

                case TelegramUtilTask.GET_ITEMSLIST:
                    telegramAnswer = ProcessGetItemList();
                    break;

                case TelegramUtilTask.DROP_ITEM:
                    telegramAnswer = ProcessDropItem(msgText.Replace(textCMD[0], "").Trim());
                    break;
                }

                await _telegram.SendTextMessageAsync(_chatid, telegramAnswer, replyMarkup : new ReplyKeyboardHide()).ConfigureAwait(false);
            }
            catch (Exception ex)
            {
                Logger.Debug(ex.ToString());
                var apiRequestException = ex as ApiRequestException;
                if (apiRequestException != null)
                {
                    await _telegram.SendTextMessageAsync(_chatid, apiRequestException.Message, replyMarkup : new ReplyKeyboardHide()).ConfigureAwait(false);
                }
            }
        }
Ejemplo n.º 18
0
        async void do_work(object sender, DoWorkEventArgs e)
        {
            var worker = sender as BackgroundWorker;
            var key    = e.Argument as String;

            try
            {
                var bot = new Telegram.Bot.TelegramBotClient(key);
                await bot.SetWebhookAsync("");

                AIMLbot.Bot lazy = new AIMLbot.Bot();


                lazy.loadSettings();
                lazy.loadAIMLFromFiles();
                lazy.isAcceptingUserInput = false;
                AIMLbot.User us = new AIMLbot.User("Username", lazy);
                lazy.isAcceptingUserInput = true;


                bot.OnCallbackQuery += async(object sc, Telegram.Bot.Args.CallbackQueryEventArgs ev) =>
                {
                    Telegram.Bot.Types.FileToSend s;
                    var message = ev.CallbackQuery.Message;
                    if (ev.CallbackQuery.Data == "callback1")
                    {
                        s = new Telegram.Bot.Types.FileToSend("https://i.pinimg.com/originals/f7/e9/80/f7e980c9700c8395535b835e66f02a59.jpg");
                    }
                    else if (ev.CallbackQuery.Data == "callback2")
                    {
                        s = new Telegram.Bot.Types.FileToSend("https://static.independent.co.uk/s3fs-public/thumbnails/image/2012/02/29/22/pg-28-sloth-cooke.jpg");
                    }
                    await bot.SendPhotoAsync(message.Chat.Id, s, "Sure! But... not today :)");

                    await bot.AnswerCallbackQueryAsync(ev.CallbackQuery.Id);
                };

                bot.OnUpdate += async(object su, Telegram.Bot.Args.UpdateEventArgs evu) =>
                {
                    if (evu.Update.CallbackQuery != null || evu.Update.InlineQuery != null)
                    {
                        return;
                    }
                    var update  = evu.Update;
                    var message = update.Message;
                    if (message == null)
                    {
                        return;
                    }
                    if (message.Type == Telegram.Bot.Types.Enums.MessageType.TextMessage)
                    {
                        if (message.Text[0] == '/')
                        {
                            if (message.Text == "/test")
                            {
                                await bot.SendTextMessageAsync(message.Chat.Id, "Yeah...",
                                                               replyToMessageId : message.MessageId);
                            }

                            if (message.Text == "/sleep")
                            {
                                var s = new Telegram.Bot.Types.FileToSend("https://beano-uploads-production.imgix.net/store/f4046f22dffe92e3f2167accb6942f788159d0f979f970dcda59f1d0e529?auto=compress&w=752&h=423&fit=min");
                                await bot.SendPhotoAsync(message.Chat.Id,
                                                         s, "Yeeeeeeeeeah, sleeeeeeeeep!");
                            }

                            if (message.Text == "/song")
                            {
                                var s = new Telegram.Bot.Types.FileToSend("http://store.naitimp3.ru/download/0/cGR1a0tRTWJwZW8wMlI2aitkT1UzVkxNdXE2dUNiRTAvcGRkeGphMTVFVTdQcGFURWlFOFQyUGZFTXJ6UVo4cWxVSUNza2NOQUpoZkJOU2ozYTJhWUpLSVdiUTRTanQrVmZnN1hQV1U5Tkk9/eels_i_need_some_sleep_(NaitiMP3.ru).mp3");
                                await bot.SendAudioAsync(message.Chat.Id, s, "", 4, "Eels", "I need some sleep...");
                            }

                            if (message.Text == "/work")
                            {
                                var keyboard = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(
                                    new Telegram.Bot.Types.InlineKeyboardButtons.InlineKeyboardButton[][]
                                {
                                    // First row
                                    new [] {
                                        // First column
                                        new Telegram.Bot.Types.InlineKeyboardButtons.InlineKeyboardCallbackButton("Work", "callback1"),

                                        // Second column
                                        new Telegram.Bot.Types.InlineKeyboardButtons.InlineKeyboardCallbackButton("Work harder", "callback2")
                                    },
                                }
                                    );

                                await bot.SendTextMessageAsync(message.Chat.Id, "Hmmmm... What should I do?..!", Telegram.Bot.Types.Enums.ParseMode.Default, false, false, 0, keyboard);
                            }
                        }
                        else if ((message.Text[0] >= 'а' && message.Text[0] <= 'я') || (message.Text[0] >= 'А' && message.Text[0] <= 'Я'))
                        {
                            await bot.SendTextMessageAsync(message.Chat.Id, "I'm too lazy to learn russian, sorry...",
                                                           replyToMessageId : message.MessageId);
                        }
                        else
                        {
                            AIMLbot.Request r   = new AIMLbot.Request(message.Text, us, lazy);
                            AIMLbot.Result  res = lazy.Chat(r);

                            await bot.SendTextMessageAsync(message.Chat.Id, res.Output,
                                                           replyToMessageId : message.MessageId);
                        }
                    }
                };

                bot.StartReceiving();
            }
            catch (Telegram.Bot.Exceptions.ApiRequestException ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Ejemplo n.º 19
0
        async void launchWorkerAsync(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;
            string           key    = e.Argument as String;

            try
            {
                Bot = new Telegram.Bot.TelegramBotClient(key);
                await Bot.SetWebhookAsync("");

                int offset = 0;
                while (true)
                {
                    var messages = await Bot.GetUpdatesAsync(offset);

                    foreach (var message in messages)
                    {
                        var  msgText = message.Message;
                        User currentUser;
                        if (users.ContainsKey(msgText.Chat.Id))
                        {
                            currentUser = users[msgText.Chat.Id];
                        }
                        else
                        {
                            currentUser = new User("Уважаемый", bot);

                            currentUser.Predicates.addSetting("favouriteanimal", "default");
                            currentUser.Predicates.addSetting("name", "default");

                            users[msgText.Chat.Id] = currentUser;
                        }

                        if (msgText.Type == Telegram.Bot.Types.Enums.MessageType.Text && msgText.Text.Contains("/game"))
                        {
                            string text = msgText.Text;
                            text = text.Replace("/game ", "");
                            string[] clues = text.Split(',');
                            clues = clues.Select(x => x.Trim().ToLower()).ToArray();
                            List <string> games = Program.SetupFacts(clues.ToList(), "");
                            if (games.Count == 0)
                            {
                                await Bot.SendTextMessageAsync(msgText.Chat.Id, "Не знаю таких игра :(");
                            }
                            else
                            {
                                string res = games.Aggregate((i, j) => i + '?' + j);
                                res += '?';
                                await Bot.SendTextMessageAsync(msgText.Chat.Id, "Я что-то такое знаю. " + res);
                            }
                        }
                        else if (msgText.Type == Telegram.Bot.Types.Enums.MessageType.Text)
                        {
                            Console.WriteLine(msgText.Text.ToUpper());
                            Request r   = new Request(msgText.Text, currentUser, bot);
                            Result  res = bot.Chat(r);
                            if (res.Output != "")
                            {
                                if (res.Output.EndsWith(".jpg."))
                                {
                                    await Bot.SendPhotoAsync(msgText.Chat.Id, res.Output.Remove(res.Output.Count() - 1, 1));
                                }
                                else if (res.Output == "time.")
                                {
                                    var time = "У меня " + DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString() + ", сколько у вас - не знаю";
                                    await Bot.SendTextMessageAsync(msgText.Chat.Id, time);
                                }
                                else if (res.Output == "foot.")
                                {
                                    string table = football.getTable();
                                    await Bot.SendTextMessageAsync(msgText.Chat.Id, table);
                                }
                                else if (res.Output == "anec.")
                                {
                                    string anec = Anecdot.anec();
                                    await Bot.SendTextMessageAsync(msgText.Chat.Id, anec);
                                }
                                else if (res.Output == "voice.")
                                {
                                    string anec = Anecdot.anec();

                                    SpeechSynthesizer speaker = new SpeechSynthesizer();

                                    speaker.Rate   = 2;
                                    speaker.Volume = 100;

                                    speaker.Speak(anec);

                                    speaker.SetOutputToWaveFile("soundfile.wav");
                                    speaker.Speak(anec + "\n АХАХАХАХАХАХ");
                                    speaker.SetOutputToDefaultAudioDevice();

                                    var fStream = new FileStream("soundfile.wav", FileMode.OpenOrCreate);
                                    await Bot.SendVoiceAsync(msgText.Chat.Id, new Telegram.Bot.Types.InputFiles.InputOnlineFile(fStream));

                                    fStream.Dispose();
                                }
                                else if (res.Output == "beauty.")
                                {
                                    var fStream = new FileStream("..\\..\\1beauty.jpg", FileMode.OpenOrCreate);
                                    await Bot.SendPhotoAsync(msgText.Chat.Id, new Telegram.Bot.Types.InputFiles.InputOnlineFile(fStream), "Красивее не сыскать");
                                }
                                else if (res.Output.Contains("poetryFlag"))
                                {
                                    var poem = res.Output.Replace("poetryFlag", "");
                                    SpeechSynthesizer speaker = new SpeechSynthesizer();

                                    speaker.Rate   = 2;
                                    speaker.Volume = 100;

                                    speaker.SetOutputToWaveFile("soundfile.wav");
                                    speaker.Speak(poem);
                                    speaker.SetOutputToDefaultAudioDevice();

                                    var fStream = new FileStream("soundfile.wav", FileMode.OpenOrCreate);
                                    await Bot.SendVoiceAsync(msgText.Chat.Id, new Telegram.Bot.Types.InputFiles.InputOnlineFile(fStream));

                                    fStream.Dispose();
                                }
                                else
                                {
                                    await Bot.SendTextMessageAsync(msgText.Chat.Id, res.Output);
                                }
                            }
                        }
                        else if (msgText.Type == Telegram.Bot.Types.Enums.MessageType.Photo)
                        {
                            ProcessImage(msgText.Photo[msgText.Photo.Length - 1].FileId, "", msgText.Chat.Id);
                        }
                        offset = message.Id + 1;
                    }
                }
            }
            catch (Telegram.Bot.Exceptions.ApiRequestException exception)
            {
                Console.WriteLine(exception.Message);
                asyncWorker.RunWorkerAsync("999037946:AAHbd0xIjp5l6iS0aGuVB-jIP2R4a99EUFo");
            }
        }
Ejemplo n.º 20
0
        private void processUpdate(Telegram.Bot.Types.Update update)
        {
            switch (update.Type)
            {
            case Telegram.Bot.Types.Enums.UpdateType.Message:
                var    text      = update.Message.Text;
                string imagePath = null;
                var    state     = _clientStates.ContainsKey(update.Message.Chat.Id) ? _clientStates[update.Message.Chat.Id] : null;
                if (state != null)
                {
                    switch (state.State)
                    {
                    case State.SearchMusic:
                        if (text.Equals(TEXT_BACK))
                        {
                            _client.SendTextMessageAsync(update.Message.Chat.Id, "Выберите:", replyMarkup: GetButtons());
                            _clientStates[update.Message.Chat.Id] = null;
                        }
                        else
                        {
                            var songs = GetSongsByAuthor(author: text);

                            if (songs?.Item2 != null && songs.Item2.Count > 0)
                            {
                                state.State  = State.SearchSong;
                                state.Author = text;
                                imagePath    = Path.Combine(Environment.CurrentDirectory, songs.Item1);
                                using (var stream = File.OpenRead(imagePath))
                                {
                                    var r = _client.SendPhotoAsync(update.Message.Chat.Id, new Telegram.Bot.Types.InputFiles.InputOnlineFile(stream), caption: state.Author).Result;
                                }
                                _client.SendTextMessageAsync(update.Message.Chat.Id, "Введите название песни:", replyMarkup: getSongsButtons(songs.Item2));
                            }
                            else
                            {
                                _client.SendTextMessageAsync(update.Message.Chat.Id, "Ничего не найдено\nВведите автора:", replyMarkup: getAuthors());
                            }
                        }
                        break;

                    case State.SearchSong:
                        if (text.Equals(TEXT_BACK))
                        {
                            state.State = State.SearchMusic;
                            _client.SendTextMessageAsync(update.Message.Chat.Id, "Введите автора:", replyMarkup: getAuthors());
                        }
                        else
                        {
                            var songPath = getSongPath(text);
                            var songs2   = GetSongsByAuthor(author: state.Author);
                            if (!string.IsNullOrEmpty(songPath) && File.Exists(songPath))
                            {
                                _client.SendTextMessageAsync(update.Message.Chat.Id, "Песня загружается...");

                                using (var stream = File.OpenRead(songPath))
                                {
                                    var r = _client.SendAudioAsync(update.Message.Chat.Id, new Telegram.Bot.Types.InputFiles.InputOnlineFile(stream), replyMarkup: getSongsButtons(songs2.Item2)).Result;
                                }
                            }
                            else
                            {
                                _client.SendTextMessageAsync(update.Message.Chat.Id, "Ничего не найдено\nВведите название песни:", replyMarkup: getSongsButtons(songs2.Item2));
                            }
                        }
                        break;
                    }
                }
                else
                {
                    switch (text)
                    {
                    case TEXT_MUSIC:
                        _clientStates[update.Message.Chat.Id] = new UserState {
                            State = State.SearchMusic
                        };
                        _client.SendTextMessageAsync(update.Message.Chat.Id, "Введите автора:", replyMarkup: getAuthors());
                        break;

                    case TEXT_1:
                        imagePath = Path.Combine(Environment.CurrentDirectory, "1.png");
                        using (var stream = File.OpenRead(imagePath))
                        {
                            var r = _client.SendPhotoAsync(update.Message.Chat.Id, new Telegram.Bot.Types.InputFiles.InputOnlineFile(stream), caption: "1", replyMarkup: GetInlineButton(1)).Result;
                        }
                        break;

                    case TEXT_2:
                        imagePath = Path.Combine(Environment.CurrentDirectory, "2.png");
                        using (var stream = File.OpenRead(imagePath))
                        {
                            var r = _client.SendPhotoAsync(update.Message.Chat.Id, new Telegram.Bot.Types.InputFiles.InputOnlineFile(stream), caption: "2", replyMarkup: GetInlineButton(2)).Result;
                        }
                        break;

                    case TEXT_3:
                        imagePath = Path.Combine(Environment.CurrentDirectory, "3.png");
                        using (var stream = File.OpenRead(imagePath))
                        {
                            var r = _client.SendPhotoAsync(update.Message.Chat.Id, new Telegram.Bot.Types.InputFiles.InputOnlineFile(stream), caption: "3", replyMarkup: GetInlineButton(3)).Result;
                        }
                        break;

                    case TEXT_4:
                        imagePath = Path.Combine(Environment.CurrentDirectory, "4.png");
                        using (var stream = File.OpenRead(imagePath))
                        {
                            var r = _client.SendPhotoAsync(update.Message.Chat.Id, new Telegram.Bot.Types.InputFiles.InputOnlineFile(stream), caption: "4", replyMarkup: GetInlineButton(4)).Result;
                        }
                        break;

                    default:
                        _client.SendTextMessageAsync(update.Message.Chat.Id, "Receive text :" + text, replyMarkup: GetButtons());
                        break;
                    }
                }
                break;

            case Telegram.Bot.Types.Enums.UpdateType.CallbackQuery:
                switch (update.CallbackQuery.Data)
                {
                case "1":
                    var msg1 = _client.SendTextMessageAsync(update.CallbackQuery.Message.Chat.Id, $"Заказ `{update.CallbackQuery.Data}` принят", replyMarkup: GetButtons()).Result;
                    break;

                case "2":
                    var msg2 = _client.SendTextMessageAsync(update.CallbackQuery.Message.Chat.Id, $"Заказ `{update.CallbackQuery.Data}` принят", replyMarkup: GetButtons()).Result;
                    break;

                case "3":
                    var msg3 = _client.SendTextMessageAsync(update.CallbackQuery.Message.Chat.Id, $"Заказ `{update.CallbackQuery.Data}` принят", replyMarkup: GetButtons()).Result;
                    break;

                case "4":
                    var msg4 = _client.SendTextMessageAsync(update.CallbackQuery.Message.Chat.Id, $"Заказ `{update.CallbackQuery.Data}` принят", replyMarkup: GetButtons()).Result;
                    break;
                }
                break;

            default:
                Console.WriteLine(update.Type + " Not ipmlemented!");
                break;
            }
        }