Mat*_*tia 2 node.js telegraf telegraf.js telegram-api
我有bot.telegram.sendPhoto()这个代码:
bot.telegram.sendPhoto(
channel_id,
{source: filepath},
{
caption: description.join("\n"),
parse_mode: 'MarkdownV2'
}
)
Run Code Online (Sandbox Code Playgroud)
(描述是一个带有一些文本的数组。
所以我想添加一些按钮,然后执行一个操作,但我该怎么办?我已经尝试过这样的方式:
const buttons = Markup.keyboard([
["Test", "Test2"]
]).oneTime().resize().extra()
Run Code Online (Sandbox Code Playgroud)
然后将其添加到 parse_mode 之后的 {...} 中:
{
caption: description.join("\n"),
parse_mode: 'MarkdownV2',
buttons
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用。我也在 {...} 之后尝试过
{
caption: description.join("\n"),
parse_mode: 'MarkdownV2'
},
buttons
Run Code Online (Sandbox Code Playgroud)
但它仍然不起作用。那我该怎么办呢?谢谢
Markup.keyboard代表用于回复文本的自定义键盘(请参阅此处) - 它不可能在频道中使用(因为成员无法在频道中发送消息)。
您可能正在寻找内联键盘(附加在消息底部的按钮,成员可以与之交互)。
以下是如何在 telegraf 中发送内联键盘(带有callback_data按钮的示例):
const buttons = Telegraf.Extra.markup((m) =>
m.inlineKeyboard([
[ m.callbackButton('Test', 'test') ],
[ m.callbackButton('Test 2', 'test2') ]
])
)
bot.action('test', async (ctx) => {
console.log(ctx)
try {
await ctx.answerCbQuery();
} catch (error) {
}
})
bot.telegram.sendPhoto(
channel_id,
{source: filepath},
{
caption: description.join("\n"),
parse_mode: 'MarkdownV2',
reply_markup: buttons.reply_markup
}
)
bot.launch()
Run Code Online (Sandbox Code Playgroud)
如果您想改用该telegraf/markup模块,请按如下方式更新代码:
const Markup = require('telegraf/markup')
const buttons = Markup.inlineKeyboard([
[Markup.callbackButton('Test', 'test')],
[Markup.callbackButton('Test 2', 'test2')]
])
bot.telegram.sendPhoto(
channel_id, {
source: filepath
}, {
caption: description.join("\n"),
parse_mode: 'MarkdownV2',
reply_markup: buttons
}
)
Run Code Online (Sandbox Code Playgroud)
示例输出:
更多资源:
| 归档时间: |
|
| 查看次数: |
14974 次 |
| 最近记录: |