Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > .NET: Общие вопросы > Telegram.Bot. Не срабатывает .OnCallbackQuery


Автор: Aleksandr H. 22.02.18, 07:19
C#, Console, Telegram.Bot

После нажатия на inlineKeyboardButton в консоль должен вывестись текст "ИмяФамилия pressed ТекстКнопки", но не выводится.

Дебагер даже не заходит в BotOnCallbackQueryReceived после нажатия на inlineKeyboardButton

Что сделано неверно?

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    using System;
    using System.Linq;
    using Telegram.Bot.Args;
    using Telegram.Bot.Types.Enums;
    using Telegram.Bot.Types.InlineKeyboardButtons;
    using Telegram.Bot.Types.ReplyMarkups;
     
     
    namespace Telegram.Bot.Examples.Echo
    {
        public static class Program
        {
            private static readonly TelegramBotClient Bot = new TelegramBotClient("<TOKEN>");
     
            public static void Main(string[] args)
            {
                Bot.OnMessage += BotOnMessageReceived;
                Bot.OnCallbackQuery += BotOnCallbackQueryReceived;
     
                var me = Bot.GetMeAsync().Result;
                Console.Title = me.Username;
     
                Bot.StartReceiving();
                Console.WriteLine($"Start listening for @{me.Username}");
                Console.ReadLine();
                Bot.StopReceiving();
            }
     
            private static async void BotOnMessageReceived(object sender, MessageEventArgs messageEventArgs)
            {
                var message = messageEventArgs.Message;
                if (message == null || message.Type != MessageType.TextMessage) return;
     
                switch (message.Text.Split(' ').First())
                {
                    // send inline keyboard
                    case "/inline":
                        await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.Typing);
                        var keyboard = new InlineKeyboardMarkup(new[]
                        {
                            new [] // first row
                            {
                                InlineKeyboardButton.WithCallbackData("1.1""),
                                InlineKeyboardButton.WithCallbackData("1.2"),
                            },
                            new [] // second row
                            {
                                InlineKeyboardButton.WithCallbackData("2.1"),
                                InlineKeyboardButton.WithCallbackData("2.2"),
                            }
                        });
     
                        await Bot.SendTextMessageAsync(
                            message.Chat.Id,
                            "Choose",
                            replyMarkup: keyboard);
                        break;
                    default:
                        const string usage = @"Usage:
    /inline   - send inline keyboard
    ";
                        await Bot.SendTextMessageAsync(
                            message.Chat.Id,
                            usage);
                        break;
                }
            }
     
            private static async void BotOnCallbackQueryReceived(object sender, CallbackQueryEventArgs callbackQueryEventArgs)
            {
                string buttonText = callbackQueryEventArgs.CallbackQuery.Data;
                string name = $"{callbackQueryEventArgs.CallbackQuery.From.FirstName} {callbackQueryEventArgs.CallbackQuery.From.LastName}";
                Console.WriteLine($"{name} pressed {buttonText}");
                await Bot.AnswerCallbackQueryAsync(
                    callbackQueryEventArgs.CallbackQuery.Id,
                    $"Received {callbackQueryEventArgs.CallbackQuery.Data}");
            }
        }
    }

Автор: gmars 10.06.18, 12:50
Решил вопрос?
Та же ситуация.

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)