Как получить CallbackData в текущем, когда InlineKeyboardCallbackButton нажал в Telegram Bot в C#
Как я могу получить InlineKeyboardCallbackButton в боте телеграммы?
Вот мой код: я редактировал код
public async System.Threading.Tasks.Task<ActionResult> GetMsgAsync()
{
var req = Request.InputStream;
var responsString = new StreamReader(req).ReadToEnd();
var update = JsonConvert.DeserializeObject<Update>(responsString);
var message = update.Message;
var chat = message.Chat;
InlineKeyboardMarkup categoryInlineMarkup = new
InlineKeyboardMarkup(
new InlineKeyboardButton[][]
{
new InlineKeyboardButton[]
{
new InlineKeyboardCallbackButton("button1","callbackData")
}
}
);
await api.SendTextMessageAsync(update.Message.Chat.Id, "Please click the button", replyMarkup: categoryInlineMarkup);
if (update.Type == Telegram.Bot.Types.Enums.UpdateType.MessageUpdate)
{
// all codes just run in this block
}
if (update.Type == Telegram.Bot.Types.Enums.UpdateType.CallbackQueryUpdate)
{
// I can't get clicked button here
if (update.CallbackQuery.Data.Contains("callbackData"))
{
await api.AnswerCallbackQueryAsync(update.CallbackQuery.Id, update.CallbackQuery.Data);
}
}
}
Как я могу получить эту кнопку также в методе webhook, а не в консольной программе?
1 ответ
Наконец, я узнаю ответ, проблема в этой строке кода:
var message = update.Message;
эта строка кода является основной проблемой, потому что эта строка не находится в блоке try catch, и я не могу понять, какая строка является проблемой.
После этой проблемы у меня есть предложение для вас
Вы можете отлаживать своего бота telegram на своем персональном компьютере, не загружая никакого кода на какой-либо хост, для этого вы можете запустить 3 следующих шага:
1- Доступ к сайту IIS Express с удаленного компьютера
3- после загрузки ngrok вы можете пересылать запросы telegram webhook на ваш персональный компьютер.