private async void BotClientOnOnCallbackQuery(object sender, CallbackQueryEventArgs e)
        {
            try
            {
                await _botClient.AnswerCallbackQueryAsync(e.CallbackQuery.Id);

                lock (_answerredQueries)
                {
                    _answerredQueries.Where(a => DateTime.UtcNow.AddMinutes(-5) > a.Value)
                    .ToList()
                    .ForEach(a => _answerredQueries.Remove(a.Key));

                    if (e.CallbackQuery.Message.Date < DateTime.UtcNow.AddMinutes(-5))
                    {
                        return;
                    }

                    if (_answerredQueries.ContainsKey(e.CallbackQuery.Message.MessageId))
                    {
                        return;
                    }

                    _answerredQueries.Add(e.CallbackQuery.Message.MessageId, DateTime.UtcNow);
                }

                await _conversationManager[e.CallbackQuery.From.Id].OnCallbackQueryAsync(e);
            }
            catch (Exception ex)
            {
                _logger.LogError("BotClientOnOnCallbackQuery failed: {Message} {StackTrace}",
                                 ex.Message, ex.StackTrace);
            }
        }
示例#2
0
        private void BotClient_OnCallbackQueryBomb(object sender, CallbackQueryEventArgs e)
        {
            var bot = (TelegramBotClient)sender;

            bot.OnCallbackQuery -= BotClient_OnCallbackQueryBomb;
            switch (e.CallbackQuery.Data)
            {
            case "1":
                BComm(e.CallbackQuery.From.Id, Direction.North);
                break;

            case "2":
                BComm(e.CallbackQuery.From.Id, Direction.West);
                break;

            case "3":
                BComm(e.CallbackQuery.From.Id, Direction.East);
                break;

            case "4":
                BComm(e.CallbackQuery.From.Id, Direction.South);
                break;

            default:
                bot.SendTextMessageAsync(e.CallbackQuery.Message.Chat.Id,
                                         "Выбирайте направление а не пустые кнопки");
                break;
            }
        }
        public async Task ShowOffersCallBack(CallbackQueryEventArgs callback)
        {
            long chatid = callback.CallbackQuery.Message.Chat.Id;

            ShowOrdersDTO order = await provider.showOrderService.CurrentProduct(chatid);

            int currProductId = order.CurrentProductId;

            BuisnessTaskDTO task = await provider.buisnessTaskService.FindTaskByTaskId(currProductId);

            if (task == null)
            {
                throw new System.Exception("task cannot be null");
            }

            List <UserDTO> offers = await provider.offerService.GetUsersOffer(currProductId);

            if (offers.Count == 0)
            {
                await client.SendTextMessageAsync(chatid, "Вам не поступало заявлений");

                return;
            }

            offers.ForEach(async(item) =>
            {
                string message = $"ChatId пользователя: {item.ChatId}\n " +
                                 $"Телефон:{item.FIO}";
                await client.SendTextMessageAsync(chatid, message, 0, false, false, 0, KeyBoardHandler.InviteUserToDialog());
            });
        }
示例#4
0
        private async void BotOnCallbackQueryReceived(object sender, CallbackQueryEventArgs e)
        {
            await _bot.AnswerCallbackQueryAsync(e.CallbackQuery.Id,
                                                "Received" + e.CallbackQuery.Data);

            await CheckMessage(e.CallbackQuery.Data);
        }
示例#5
0
        private static async void BotOnCallbackQuerryReceived(object sender, CallbackQueryEventArgs e)
        {
            var callbackQuery = e.CallbackQuery;

            string[] data = callbackQuery.Data.Split(',');

            switch (data[0])
            {
            case "newInit":
                if (data[1] == "true")
                {
                    InitChat(callbackQuery.Message);
                }
                else if (data[1] == "false")
                {
                    await botClient.SendTextMessageAsync(
                        chatId : callbackQuery.Message.Chat,
                        text : "Ok, your configuration will remain as it is."
                        );
                }
                break;

            case "firstInit":
                if (data[1] == "ready")
                {
                    InitChat(callbackQuery.Message);
                }
                break;

            default:
                break;
            }
        }
示例#6
0
 public static async void OnCallbackQuery(object sender, CallbackQueryEventArgs e)
 {
     foreach (var per in service.GetServices <IOnCallbackQuery>())
     {
         await per.ExecuteAsync(sender, e);
     }
 }
        public async void OnCallbackQueryAsync(object sender, CallbackQueryEventArgs e)
        {
            try
            {
                var callbackData = e.CallbackQuery.Data;
                if (string.IsNullOrEmpty(callbackData))
                {
                    return;
                }

                if (Callback.GetCallbackName(callbackData) == PlayerSetCallback.Name)
                {
                    await DetermineIfUserIsReadyToPlayAsync(e.CallbackQuery);
                }

                if (Callback.GetCallbackName(callbackData) == TeamPollCallback.Name)
                {
                    await DetermineIfUserLikesTeamAsync(e.CallbackQuery);
                }

                _logger.Information($"Processed callback: {e.CallbackQuery.Data}");
            }
            catch (Exception ex)
            {
                await ProcessCallbackError(e.CallbackQuery, ex);
            }
        }
示例#8
0
        public async void SendMessageCalories(CallbackQueryEventArgs e, TelegramBotClient client, long id, string goal)
        {
            var user = DB.Users.Find(id);

            if (user.Language == "Russian")
            {
                await client.SendTextMessageAsync(e.CallbackQuery.From.Id, $"Для {goal}:\n" +
                                                  $"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{user.Calories} калорий каждый день\n" +
                                                  $"из которых:\n" +
                                                  $"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{user.Proteins} грамм белка\n" +
                                                  $"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{user.Fats} грамм жиров\n" +
                                                  $"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{user.Carbohydrates} грамм углеводов\n" +
                                                  $"напиши\n/addfood [название] [вес] - чтобы добавить еду");
            }
            else
            {
                await client.SendTextMessageAsync(e.CallbackQuery.From.Id, $"For {goal}:\n" +
                                                  $"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{user.Calories} calories per day\n" +
                                                  $"of which:\n" +
                                                  $"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{user.Proteins} grams proteins\n" +
                                                  $"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{user.Fats} grams fats\n" +
                                                  $"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{user.Carbohydrates} grams carbohydrates\n" +
                                                  $"write\n/addfood [name] [weight] - to add food");
            }
        }
示例#9
0
        public static void CallbackQuery(CallbackQueryEventArgs e, ITelegramBotClient bot)
        {
            string message = e.CallbackQuery.Data;
            var    chatId  = e.CallbackQuery.From.Id;

            int id = 0;

            int.TryParse(message.Substring(6), out id);

            AdminBot.adminLog(message);

            Participant participant;

            using (MobileContext db = new MobileContext())
            {
                try
                {
                    var booking      = db.Bookings.Single(c => c.Id == id);
                    var bookingsWeek = db.Bookings.Remove(booking);
                    db.SaveChanges();
                } catch (InvalidOperationException ex)
                {
                    _ = bot.SendTextMessageAsync(chatId, "Бронь уже удалена").Result;
                    return;
                }

                participant = db.Participants.Single(c => c.Alias == e.CallbackQuery.From.Username);
            }

            using (FileStream fs = FormSchedule.FormScheduleImage(participant))
            {
                Message mes = bot.SendPhotoAsync(chatId: chatId, photo: new InputOnlineFile(fs, "schedule.png"), caption: "Бронь отменена.").Result;
            }
        }
示例#10
0
        //Refresh weather
        public async Task Info(CallbackQueryEventArgs callbackQueryEventArgs)
        {
            //Simulate work
            await Task.Delay(1000);

            var weather = "The weather now is: " + "⛈🌧❄️☀️☁️"[new Random().Next(4)].ToString();

            //weather = "The weather now is: ";
            weather += $"\n`{DateTime.Now}`";
            weather += "\n@nameYourBot_bot";

            //Buttons menu
            var inlineKeyboard = new InlineKeyboardMarkup(new[]
            {
                new []
                {
                    InlineKeyboardButton.WithCallbackData("Refresh", $"{Commands.RefreshWeather}?{Commands.IsEdit}=true") //Thats is template how to pack commands with arguments
                }
            });

            //Check if clicked button "Refresh"
            var  args   = ArgParser.ParseCallbackData(callbackQueryEventArgs.CallbackQuery.Data);
            bool isEdit = args.ContainsKey(Commands.IsEdit);

            if (isEdit)
            {
                EditMessageTextAsync(ChatId, MessageId, weather, ParseMode.Markdown, replyMarkup: inlineKeyboard);
            }
            else
            {
                SendMessage(ChatId, weather, ParseMode.Markdown, replyMarkup: inlineKeyboard);
            }
        }
示例#11
0
        private static async void BotClient_OnCallbackQuery(object sender, CallbackQueryEventArgs e)
        {
            if (e.CallbackQuery.Message.Date < DateTime.Now.AddDays(-1))
            {
                return;
            }

            await Task.Run(() => CacheData.IncrementHandledMessages());

            if (CacheData.Groups[e.CallbackQuery.Message.Chat.Id].State !=
                Models.Group.TelegramGroup.Status.Active)
            {
                return;
            }

            Data.Utils.Logging.AddLog(new Models.SystemLog()
            {
                LoggerName = CacheData.LoggerName,
                Date       = DateTime.Now,
                Function   = "Unifiedban.Bot.Manager.BotClient_OnCallbackQuery",
                Level      = Models.SystemLog.Levels.Debug,
                Message    = "CallbackQuery received",
                UserId     = -1
            });

            if (!String.IsNullOrEmpty(e.CallbackQuery.Data))
            {
                if (e.CallbackQuery.Data.StartsWith('/'))
                {
                    await Task.Run(() => Command.Parser.Parse(e.CallbackQuery));
                }
            }

            return;
        }
示例#12
0
        async void BotOnCallbackQueryReceived(object sender, CallbackQueryEventArgs callbackQueryEventArgs)
        {
            using var db = new ApplicationContext();
            var callbackQuery = callbackQueryEventArgs.CallbackQuery;

            var exchangeRatedb = db.MyfinByExchangeRates.OrderByDescending(x => x.DateTimeRates).FirstOrDefault();

            var avUSD = Math.Round((exchangeRatedb.RateUSDbuy + exchangeRatedb.RateUSDsales) / 2, 4);
            var avEUR = Math.Round((exchangeRatedb.RateEURbuy + exchangeRatedb.RateEURsales) / 2, 4);
            var avRUS = Math.Round((exchangeRatedb.RateRUSbuy + exchangeRatedb.RateRUSsales) / 2, 4);

            var answer = (callbackQuery.Data.Split(" ")[0], double.Parse(callbackQuery.Data.Split(" ")[1])) switch
            {
                ("🇺🇸", var v) => $"{v} 🇺🇸 = \n" +
                $"{Math.Round(v * avUSD, 2)} 🇧🇾 \n" +
                $"{Math.Round(v * avUSD / avEUR, 2)} 🇪🇺 \n" +
                $"{Math.Round(v * avUSD / avRUS * 100, 2)} 🇷🇺",

                ("🇪🇺", var v) => $"{v} 🇪🇺 = \n" +
                $"{Math.Round(v * avEUR, 2)} 🇧🇾 \n" +
                $"{Math.Round(v * avEUR / avUSD, 2)} 🇺🇸 \n" +
                $"{Math.Round(v * avEUR / avRUS * 100, 2)} 🇷🇺",

                ("🇷🇺", var v) => $"{v} 🇷🇺 = \n" +
                $"{Math.Round(v * avRUS / 100, 2)} 🇧🇾 \n" +
                $"{Math.Round(v * avRUS / avUSD / 100, 2)} 🇺🇸 \n" +
                $"{Math.Round(v * avRUS / avEUR / 100, 2)} 🇪🇺",

                ("🇧🇾", var v) => $"{v} 🇧🇾 = \n" +
                $"{Math.Round(v / avUSD, 2)} 🇺🇸 \n" +
                $"{Math.Round(v / avEUR, 2)} 🇪🇺 \n" +
                $"{Math.Round(v / avRUS * 100, 2)} 🇷🇺",
                _ => throw new NotImplementedException(),
            };
示例#13
0
        private void OnCallbackQuery(object sender, CallbackQueryEventArgs e)
        {
            ITelegramBotClient telegramBotClient = ModulesManager.GetTelegramBotClient();

            if (string.IsNullOrEmpty(e.CallbackQuery.Data))
            {
                return;
            }

            string[] queryArray = e.CallbackQuery.Data.Split(":");
            if (queryArray.Length == 0)
            {
                return;
            }

            ICallbackQueryHandler callbackQueryHandler;

            switch (queryArray[0])
            {
            case "delete_message":
                callbackQueryHandler = new DeleteMessageHandler();
                break;

            default:
                return;
            }

            callbackQueryHandler.Handle(queryArray, e.CallbackQuery.Message.MessageId);
            telegramBotClient.AnswerCallbackQueryAsync(e.CallbackQuery.Id);
        }
        public async void Bot_CallBack(object sender, CallbackQueryEventArgs e)
        {
            var text = "";
            var id   = e.CallbackQuery.Message.Chat.Id;
            var chat = trainingChats[id];

            switch (e.CallbackQuery.Data)
            {
            case "rustoeng":
                training.Add(id, TrainingType.RusToEng);
                text = chat.GetTrainingWord(TrainingType.RusToEng);
                break;

            case "engtorus":
                training.Add(id, TrainingType.EngToRus);
                text = chat.GetTrainingWord(TrainingType.EngToRus);
                break;

            default:
                break;
            }
            chat.IsTraningInProcess = true;
            activeWord.Add(id, text);
            if (trainingChats.ContainsKey(id))
            {
                trainingChats.Remove(id);
            }

            await botClient.SendTextMessageAsync(id, text);

            await botClient.AnswerCallbackQueryAsync(e.CallbackQuery.Id);
        }
示例#15
0
        private async void OnCallbackQuery(object sender, CallbackQueryEventArgs e)
        {
            var message = e.CallbackQuery.Message;
            var chat    = message.Chat;

            var parts = e.CallbackQuery.Data.Split('_');

            if (parts.Length != 2)
            {
                return;
            }

            if (parts[0] == "Office")
            {
                var officeId = long.Parse(parts[1]);
                using (var scope = _serviceProvider.CreateScope())
                {
                    var persistence = scope.ServiceProvider.GetRequiredService <Persistence>();
                    var office      = await persistence.SetUserToOffice(chat.Id, officeId);

                    await _telegramClient.SendTextMessageAsync(chat.Id, "Вы добавлены в чат: " + office.Name);
                }
            }

            await _telegramClient.DeleteMessageAsync(chat.Id, message.MessageId);
        }
示例#16
0
        private static void BotOnCallbackQueryRecieved(object sender, CallbackQueryEventArgs e)
        {
            string buttonText = e.CallbackQuery.Data;
            string name       = $"{e.CallbackQuery.From.FirstName} {e.CallbackQuery.From.LastName}";

            Console.WriteLine($"{name} press a key {buttonText}");
        }
示例#17
0
        static async void BotOnCallbackQueryReceived(object sender, CallbackQueryEventArgs callbackQueryEventArgs)
        {
            var callbackQuery = callbackQueryEventArgs.CallbackQuery;
            await Bot.AnswerCallbackQueryAsync(
                callbackQueryId : callbackQuery.Id,
                text : $"ID {callbackQuery.Data}"
                );

            var resMovie = await Request.FindMovieById(callbackQuery.Data);

            var buttons = new List <InlineKeyboardButton>();

            for (int i = 0; i < resMovie.data.movie.torrents.Count; i++)
            {
                buttons.Add(new InlineKeyboardButton {
                    Text = $"{resMovie.data.movie.torrents[i].type} {resMovie.data.movie.torrents[i].quality}",
                    Url  = resMovie.data.movie.torrents[i].url
                });
            }

            await Bot.SendPhotoAsync(
                chatId : callbackQuery.Message.Chat.Id,
                photo : resMovie.data.movie.large_cover_image,
                caption : resMovie.data.movie.description_full,
                replyMarkup : new InlineKeyboardMarkup(buttons.ToArray())
                );
        }
示例#18
0
 public ListChannelsInstruction(ITelegramBotClient telegramBotClient, CallbackQueryEventArgs callbackQueryEventArgs, BotPlatform botPlatform)
 {
     _telegramBotClient      = telegramBotClient;
     _callbackQueryEventArgs = callbackQueryEventArgs;
     _queryChannelService    = botPlatform.Resolve <IQueryChannelService>();
     _queryRssChatService    = botPlatform.Resolve <IQueryRssChatRelationService>();
 }
示例#19
0
        private void bot_OnCallbackQuery(object sender, CallbackQueryEventArgs e)
        {
            if (e.CallbackQuery.Message.MessageId != freshBoard)
            {
                return;
            }
            if (!hp.ContainsKey(e.CallbackQuery.From.Username))
            {
                bot.AnswerCallbackQueryAsync(e.CallbackQuery.Id, "Ты не участвуешь");
                return;
            }
            var    choice = e.CallbackQuery.Message.ReplyMarkup;
            string c      = e.CallbackQuery.Data;

            Thread.Sleep(700);
            if (x == 0)
            {
                if (e.CallbackQuery.From.Username == p1)
                {
                    act1 = e.CallbackQuery.Data;
                }
                else if (e.CallbackQuery.From.Username == p2)
                {
                    act2 = e.CallbackQuery.Data;
                }
                bot.AnswerCallbackQueryAsync(e.CallbackQuery.Id, $"Вы выбрали {e.CallbackQuery.Data}");
                if (act1.Length > 0 && act2.Length > 0)
                {
                    bot.EditMessageTextAsync(e.CallbackQuery.Message.Chat.Id, e.CallbackQuery.Message.MessageId, "Защита", replyMarkup: KeyboatdToDeffend(choice));
                }
                Thread.Sleep(300);
            }
            else if (x == 1)
            {
                Thread.Sleep(300);
                if (e.CallbackQuery.From.Username == p1)
                {
                    def1 = e.CallbackQuery.Data;
                }
                else if (e.CallbackQuery.From.Username == p2)
                {
                    def2 = e.CallbackQuery.Data;
                }
                bot.AnswerCallbackQueryAsync(e.CallbackQuery.Id, $"Вы выбрали {e.CallbackQuery.Data}");
                if (def1.Length > 0 && def2.Length > 0)
                {
                    Thread.Sleep(600);
                    bot.DeleteMessageAsync(e.CallbackQuery.Message.Chat.Id, freshBoard);
                    BattleRes(act1, def2, p2);
                    BattleRes(act2, def1, p1);
                    act1 = "";
                    def1 = act1;
                    act2 = act1;
                    def2 = act1;
                    Thread.Sleep(800);
                    Start();
                }
            }
        }
示例#20
0
        public override void Execute(CallbackQueryEventArgs e, TelegramBotClient client, long id)
        {
            var user          = DB.Users.Find(id);
            var callbackQuery = e.CallbackQuery;

            if (callbackQuery.Data == "normaly")
            {
                user.Calories = (int)(user.Calories * 0.90);
                user.Goal     = "normaly";
            }
            else if (callbackQuery.Data == "quickly")
            {
                user.Calories = (int)(user.Calories * 0.75);
                user.Goal     = "quickly";
            }
            else if (callbackQuery.Data == "extremely")
            {
                user.Calories = (int)(user.Calories * 0.59);
                user.Goal     = "extremely";
            }
            user.Proteins      = (int)((user.Calories * 0.3) / 4 + 1);
            user.Fats          = (int)((user.Calories * 0.3) / 9 + 1);
            user.Carbohydrates = (int)((user.Calories * 0.4) / 4 + 1);
            user.Command       = " ";
            user.SetCalories();
            if (callbackQuery.Data == "normaly")
            {
                if (user.Language == "Russian")
                {
                    SendMessageCalories(e, client, id, "безопасной потери веса");
                }
                else
                {
                    SendMessageCalories(e, client, id, $"weight loss {user.Goal}");
                }
            }
            else if (callbackQuery.Data == "quickly")
            {
                if (user.Language == "Russian")
                {
                    SendMessageCalories(e, client, id, "быстрой потери веса");
                }
                else
                {
                    SendMessageCalories(e, client, id, $"weight loss {user.Goal}");
                }
            }
            else if (callbackQuery.Data == "extremely")
            {
                if (user.Language == "Russian")
                {
                    SendMessageCalories(e, client, id, "потери веса екстремально быстро");
                }
                else
                {
                    SendMessageCalories(e, client, id, $"weight loss {user.Goal}");
                }
            }
        }
示例#21
0
        private static async void Bot_OnCallbackQueryReceived(object sender, CallbackQueryEventArgs e)
        {
            string buttonText = e.CallbackQuery.Data;
            string name       = $"{e.CallbackQuery.From.FirstName}{e.CallbackQuery.From.LastName}";

            Console.WriteLine($"{name} нажал(а) кнопку {buttonText}");
            await Bot.AnswerCallbackQueryAsync(e.CallbackQuery.Id, $"Ты нажал(а) кнопку {buttonText}");
        }
示例#22
0
        private static async void BotOnCallbackQueryReceived(object sender, CallbackQueryEventArgs callbackQueryEventArgs)
        {
            var callbackQuery = callbackQueryEventArgs.CallbackQuery;

            await botClient.AnswerCallbackQueryAsync(callbackQuery.Id, $"Selecionado {callbackQuery.Data}");

            Versao = callbackQuery.Data.ToLower();
        }
示例#23
0
        private static async void BotOnCallbackQueryReceived(object sender, CallbackQueryEventArgs callbackQueryEventArgs)
        {
            var callbackQuery = callbackQueryEventArgs.CallbackQuery;

            await Bot.SendTextMessageAsync(
                callbackQuery.Message.Chat.Id,
                $"Received {callbackQuery.Data}");
        }
示例#24
0
        private static void _telegramBotClient_OnCallbackQuery(object sender, CallbackQueryEventArgs e)
        {
            IInstruction onCallBackQueryInstruction = new OnCallBackQueryNextInstruction(_telegramBotClient, e, _botplatform);

            onCallBackQueryInstruction.Execute();

            GC.Collect();
        }
示例#25
0
        Task ParseToContact(MessageEventArgs messageArgs, CallbackQueryEventArgs callbackArgs)
        {
            _toContact = messageArgs?.Message?.Contact;

            ValidateToContact();

            return(Task.CompletedTask);
        }
示例#26
0
        public Task OnCallbackQueryAsync(CallbackQueryEventArgs e)
        {
            _user = e.CallbackQuery.Message.From;

            return(BotClient.EditMessageReplyMarkupAsync(
                       e.CallbackQuery.Message.Chat.Id, e.CallbackQuery.Message.MessageId, null)
                   .ContinueWith(_ => ProcessMessageAsync(e.CallbackQuery.Data, e.CallbackQuery.Message)));
        }
示例#27
0
 public static async void Spiner(ITelegramBotClient botClient, CallbackQueryEventArgs eventArgs)
 {
     try
     {
         await botClient.AnswerCallbackQueryAsync(eventArgs.CallbackQuery.Id);
     }
     catch { }
 }
示例#28
0
        private static void OnCallbackQuery(object sender, CallbackQueryEventArgs callbackQueryEventArgs)
        {
            var callbackQuery = callbackQueryEventArgs.CallbackQuery;

            var callback = BotCallbackFactory.Get(callbackQuery.Data.ParseType(), bot);

            callback?.Execute(callbackQuery);
        }
示例#29
0
        private static void BotOnCallbackQueryReceived(object sender, CallbackQueryEventArgs callbackQueryEvent)
        {
            var callbackQuery = callbackQueryEvent.CallbackQuery;
            var message       = callbackQuery.Message;
            CommandsExecuter commandsExecuter = new CommandsExecuter(message, telegramBot, callbackQuery);

            commandsExecuter.Execute(callbackQuery.Data);
        }
 public Add_Group_Rss_Instruction(ITelegramBotClient telegramBotClient, CallbackQueryEventArgs callbackQueryEventArgs, BotPlatform botPlatform)
 {
     _telegramBotClient      = telegramBotClient;
     _callbackQueryEventArgs = callbackQueryEventArgs;
     _commandRssChatService  = botPlatform.Resolve <ICommandRssChatRelationService>();
     _queryChannelService    = botPlatform.Resolve <IQueryChannelService>();
     _queryRssService        = botPlatform.Resolve <IQueryRssService>();
 }