在Telegram机器人中更新消息

时间:2019-07-09 17:01:09

标签: node.js telegram telegram-bot node-telegram-bot-api

我已经熟悉Telegram API,想知道在用户点击后是否有可能更新来自机器人的消息上的按钮标题?

这是我的代码示例:

const TelegramBot = require('node-telegram-bot-api');

// Insert token from Telegram BotFather
const token = '...';

// Enable server polling
const bot = new TelegramBot(token, {polling: true});

let categoryButtons = [
    [
        { text: 'A', callback_data: 'A' },
        { text: 'B', callback_data: 'B' }
    ],

    [
        { text: 'C', callback_data: 'C' },
        { text: 'D', callback_data: 'D' }
    ],

    [
        { text: 'E', callback_data: 'E' }
    ]
]

bot.onText(/start/, (msg, match) => {
    const fromId = msg.from.id;

    sendGreetingMessage(fromId);

    bot.on('callback_query', (data) => {
        switch(data.data) {
            case 'A':
                addCheckSignToTitle(fromId, data);
                break;
            case 'B':
                addCheckSignToTitle(fromId, data);
                break;
            case 'C':
                addCheckSignToTitle(fromId, data);
                break;
            case 'D':
                addCheckSignToTitle(fromId, data);
                break;
            case 'E':
                break;
        }
    });

    bot.on('polling_error', (msg) => {console.log(msg)})
});

sendGreetingMessage = (fromId) => {
    const mainTitle = '...';
    const options = {
        reply_markup: {
            inline_keyboard: categoryButtons
        }
    }

    bot.sendMessage(fromId, mainTitle, options);
}

addCheckSignToTitle = (fromId, data) => {
    const checkSign = '...';
    for(let i = 0, arrayLength = categoryButtons.length; i < arrayLength; i++) {
        for(let j = 0, itemLength = categoryButtons[i].length; j < itemLength; j++) {
            if(categoryButtons[i][j].callback_data === data.data) {
                categoryButtons[i][j].text = checkSign + ' ' + categoryButtons[i][j].text;

                let chat_id = data.message.chat.id;
                let message_id = data.message.message_id;
                // let reply_markup = InlineKeyboardMarkup(util.build_menu(categoryButtons))

                // bot.editMessageReplyMarkup(chat_id, message_id, reply_markup);
            }
        }
    }
}

如何正确使用InlineKeyboardMarkup

我收到一个错误,指出reply_markup的定义不正确。我知道我必须从某个地方导入InlineKeyboardMarkup,但无法从哪里导入。

有经验的人可以请我在单击按钮后建议我如何更新按钮标题吗?

0 个答案:

没有答案