【问题标题】:Telegram Bot EditMessageReplayMarkup Error (Nodejs)电报机器人 EditMessageReplayMarkup 错误(Nodejs)
【发布时间】:2019-05-21 00:57:11
【问题描述】:

当我按下另一个按钮时,我想更改我的 InlineKeyboard 按钮,但我不断收到此错误。

    TypeError: Cannot create property 'reply_markup' on number '750548132'
2019-04-13T06:42:14.374318+00:00 app[web.1]: at TelegramBot.editMessageReplyMarkup (/app/node_modules/node-telegram-bot-api/src/telegram.js:1201:23)
2019-04-13T06:42:14.374320+00:00 app[web.1]: at TelegramBot.bot.on (/app/index.js:371:11)
2019-04-13T06:42:14.374321+00:00 app[web.1]: at TelegramBot.emit (/app/node_modules/eventemitter3/index.js:181:35)
2019-04-13T06:42:14.374323+00:00 app[web.1]: at TelegramBot.processUpdate (/app/node_modules/node-telegram-bot-api/src/telegram.js:657:12)
2019-04-13T06:42:14.374324+00:00 app[web.1]: at TelegramBotWebHook._parseBody (/app/node_modules/node-telegram-bot-api/src/telegramWebHook.js:121:21)

我的代码:


const messageID = callbackQuery.message.chat.id;
const callBackData = callbackQuery.data;

if (callBackData.substring(0,7) == 'intent_') {      
    keyboard = {
        reply_markup: {
            inline_keyboard: [[
            {
                text: 'Menu 1',
                callback_data: 'socialMediaConnect'
            },{
                text: 'Menu 2',
                callback_data: 'music'
            }
            ]]
        }
    }

    bot.editMessageReplyMarkup(messageID, callbackQuery.message.from.id, callbackQuery.inline_message_id, keyboard)    
}

【问题讨论】:

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


    【解决方案1】:

    问题是您需要将reply_markup 包装在 JSON.stringify() 中,否则它将不起作用。

    documentation 是这样说的:

    其他界面选项。用于内联键盘、自定义回复键盘、移除回复键盘或强制用户回复的说明的 JSON 序列化对象。

    我更新了你的代码...

    const messageID = callbackQuery.message.chat.id;
    const callBackData = callbackQuery.data;
    
    if (callBackData.substring(0,7) == 'intent_') {      
        keyboard = {
            reply_markup: JSON.stringify({ // Added JSON.stringify()
                inline_keyboard: [[
                {
                    text: 'Menu 1',
                    callback_data: 'socialMediaConnect'
                },{
                    text: 'Menu 2',
                    callback_data: 'music'
                }
                ]]
            })
        }
    
        bot.editMessageReplyMarkup(messageID, callbackQuery.message.from.id, callbackQuery.inline_message_id, keyboard)    
    }
    

    【讨论】:

      猜你喜欢
      • 2015-12-12
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-18
      • 1970-01-01
      • 2018-09-25
      • 1970-01-01
      相关资源
      最近更新 更多