频道消息的电报机器人内联键盘标记回调用法
Telegram bot inline keyboard markup callback usage for channel messages
我的 Telegram 机器人需要向频道发送消息并为每条消息提供内联键盘,它看起来像这样:inline message keyboard
我需要对此键盘按钮单击事件做出反应,但我找不到说明如何执行此操作的文档或示例。 Here in docs我只看到这样的按钮可以打开URL或切换聊天,但这不是我需要的功能。
目前我的消息发送代码如下所示(我使用 NodeJS Telegraf 框架):
const Telegraf = require('telegraf');
const { Markup, Telegram } = Telegraf;
const telegram = new Telegram(process.env.BOT_TOKEN);
const inlineMessageRatingKeyboard = [[
{ text: '', callback_data: 'like' },
{ text: '', callback_data: 'dislike' }
]];
telegram.sendMessage(
process.env.TELEGRAM_CHANNEL,
'test',
{ reply_markup: JSON.stringify({ inline_keyboard: inlineMessageRatingKeyboard }) }
)
);
所以,我需要知道如何让机器人对频道消息中的内联消息键盘交互做出反应。
您可以使用事件 action()
或在 TelegrafContext 中使用 callbackQuery()
和 answerCallbackQuery()
GitHubGist
上的上下文方法
成功了:
const Telegraf = require('telegraf')
const { Router, Markup } = Telegraf
const telegram = new Telegraf(process.env.BOT_TOKEN)
const inlineMessageRatingKeyboard = Markup.inlineKeyboard([
Markup.callbackButton('', 'like'),
Markup.callbackButton('', 'dislike')
]).extra()
telegram.on('message', (ctx) => ctx.telegram.sendMessage(
ctx.from.id,
'Like?',
inlineMessageRatingKeyboard)
)
telegram.action('like', (ctx) => ctx.editMessageText(' Awesome! '))
telegram.action('dislike', (ctx) => ctx.editMessageText('okey'))
telegram.startPolling()
完整示例here
我的 Telegram 机器人需要向频道发送消息并为每条消息提供内联键盘,它看起来像这样:inline message keyboard
我需要对此键盘按钮单击事件做出反应,但我找不到说明如何执行此操作的文档或示例。 Here in docs我只看到这样的按钮可以打开URL或切换聊天,但这不是我需要的功能。
目前我的消息发送代码如下所示(我使用 NodeJS Telegraf 框架):
const Telegraf = require('telegraf');
const { Markup, Telegram } = Telegraf;
const telegram = new Telegram(process.env.BOT_TOKEN);
const inlineMessageRatingKeyboard = [[
{ text: '', callback_data: 'like' },
{ text: '', callback_data: 'dislike' }
]];
telegram.sendMessage(
process.env.TELEGRAM_CHANNEL,
'test',
{ reply_markup: JSON.stringify({ inline_keyboard: inlineMessageRatingKeyboard }) }
)
);
所以,我需要知道如何让机器人对频道消息中的内联消息键盘交互做出反应。
您可以使用事件 action()
或在 TelegrafContext 中使用 callbackQuery()
和 answerCallbackQuery()
GitHubGist
成功了:
const Telegraf = require('telegraf')
const { Router, Markup } = Telegraf
const telegram = new Telegraf(process.env.BOT_TOKEN)
const inlineMessageRatingKeyboard = Markup.inlineKeyboard([
Markup.callbackButton('', 'like'),
Markup.callbackButton('', 'dislike')
]).extra()
telegram.on('message', (ctx) => ctx.telegram.sendMessage(
ctx.from.id,
'Like?',
inlineMessageRatingKeyboard)
)
telegram.action('like', (ctx) => ctx.editMessageText(' Awesome! '))
telegram.action('dislike', (ctx) => ctx.editMessageText('okey'))
telegram.startPolling()
完整示例here