在 Telegraf.js 中显示仅限管理员使用的内联按钮

问题描述 投票:0回答:1

我有一个用 Telegraf.js 编写的电报商店机器人。

  • 当普通用户启动机器人时,我希望人们只看到 4 个按钮(产品、购物车、帐户和信息)
  • 当有人启动机器人并且其 ID 位于配置 json 文件中时,我希望机器人显示另一个按钮“管理面板”或类似按钮。

    我有这个代码:
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")
    ]),
}

但我知道逗号是预期的,无法实现我的目标。

node.js telegram telegram-bot telegraf.js
1个回答
0
投票

问题是这样解决的:

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")],
        ],
    })
}
© www.soinside.com 2019 - 2024. All rights reserved.