Нет события OnCallbackQuery у бота
Всем привет! Пишу бота для Telegram на C#. Мне необходимо, чтобы при нажатии на кнопку писалось сообщение. Загуглив, я нашел, что необходимо подписаться на событие OnCallbackQuery, однако, такого события у бота почему-то нет. Вот весь код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Telegram.Bot.Types;
using Telegram.Bot;
using Telegram.Bot.Extensions.Polling;
using Telegram.Bot.Types.ReplyMarkups;
using Telegram.Bot.Requests;
using Telegram.Bot.Args;
namespace TelegramBot
{
public class BotWorker
{
public ITelegramBotClient Bot { get; set; }
public BotWorker(string token)
{
Bot = new TelegramBotClient(token);
}
private async Task HandleUpdateAsync(ITelegramBotClient client, Update update, CancellationToken cancellationToken)
{
Console.WriteLine(JsonConvert.SerializeObject(update));
switch (update.Type)
{
case Telegram.Bot.Types.Enums.UpdateType.Message:
Message message = update.Message;
switch (update.Message.Text.ToLower())
{
case "/start":
await client.SendTextMessageAsync(message.Chat, "Добро пожаловать на борт!",
replyMarkup: GetStartMenuButtons(),
cancellationToken: cancellationToken);
return;
default:
break;
}
break;
case Telegram.Bot.Types.Enums.UpdateType.CallbackQuery:
CallbackQuery query = update.CallbackQuery;
Bot.OnCallbackQuery += async (object sc, Telegram.Bot.Args.CallbackQueryEventArgs ev) =>
{
var message = ev.CallbackQuery.Message;
if (ev.CallbackQuery.Data == "callback1")
{
// сюда то что тебе нужно сделать при нажатии на первую кнопку
}
else
if (ev.CallbackQuery.Data == "callback2")
{
// сюда то что нужно сделать при нажатии на вторую кнопку
}
};
if (query.Data == "ask_question")
{
await client.SendTextMessageAsync(update.Message.Chat, "Напишите свой вопрос",
cancellationToken: cancellationToken);
}
break;
default:
break;
}
}
private async Task HandleErrorAsync(ITelegramBotClient client, Exception exception, CancellationToken cancellationToken)
{
Console.WriteLine(JsonConvert.SerializeObject(exception));
}
private InlineKeyboardMarkup GetStartMenuButtons()
{
return new InlineKeyboardMarkup(new List<InlineKeyboardButton[]>
{
new[]
{
InlineKeyboardButton.WithCallbackData("Задать вопрос", "ask_question"),
},
new[]
{
InlineKeyboardButton.WithCallbackData("Сообщить о проблеме", "report_problem"),
},
});
}
public void StartBot(BotWorker botWorker)
{
Console.WriteLine("Запущен бот " + botWorker.Bot.GetMeAsync().Result.FirstName);
var cts = new CancellationTokenSource();
var cancellationToken = cts.Token;
var receiverOptions = new ReceiverOptions
{
AllowedUpdates = { }
};
botWorker.Bot.StartReceiving(
HandleUpdateAsync,
HandleErrorAsync,
receiverOptions,
cancellationToken
);
Console.ReadLine();
}
}
}