我有一个用 Telegraf.js 编写的电报商店机器人。
const Config = require("./config");
client.start(async (Context) => {
if (Config.bans.includes(Context.chat.id)) return;
var user = Config.users.find((usr => {
return usr.id === Context.from.id
}));
if (!user) Config.users.push({
id: Context.from.id,
balance: 0,
cart: []
});
writeFileSync("config/index.json", JSON.stringify(Config));
// Actual problem down here
Context.reply("Welcome user", {
parse_mode: 'HTML',
...Markup.inlineKeyboard([
Markup.button.callback("📚 Products", "products"),
Markup.button.callback("🛒 Cart", "products"),
]),
...Markup.inlineKeyboard([
Markup.button.callback("🪪 Account", "account"),
Markup.button.callback("ℹ️ Info", "info"),
]),
// BUTTON
})
})
在我写“BUTTON”的地方,我想添加一个按钮,仅显示用户 ID 是否在管理员列表中,所以我尝试了这种方式:
if (Config.administrators.includes(Context.from.id)) {
...Markup.inlineKeyboard([
Markup.button.callback("Admin Panel", "admin")
]),
}
但我知道逗号是预期的,无法实现我的目标。
问题是这样解决的:
if (Config.administrators.includes(Context.from.id)) {
await Context.editMessageReplyMarkup({
inline_keyboard: [
[Markup.button.callback("📚 Prodotti", "products")],
[Markup.button.callback("🪪 Account", "account"),
Markup.button.callback("ℹ️ Info", "info")],
[Markup.button.callback("🛠️ Pannello Amministratori", "panel")]
],
})
} else {
await Context.editMessageReplyMarkup({
inline_keyboard: [
[Markup.button.callback("📚 Prodotti", "products")],
[Markup.button.callback("🪪 Account", "account"),
Markup.button.callback("ℹ️ Info", "info")],
],
})
}