制作一个机器人来检查回复的消息是否是照片(node-telegram-bot-api 2024)

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

所以我正在制作一个简单的电报机器人,如果回复的消息是照片,它会回复一条消息,但“消息”对象的节点电报机器人库的属性reply_to_message未定义。

这是我在下面编写的示例代码:

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

const token = 'YOUR_TELEGRAM_BOT_TOKEN';

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

bot.on('message', (msg) => {
    const chatId = msg.chat.id;

    if (msg.text && msg.text.toLowerCase() === '/meme') {
        if (msg.reply_to_message && msg.reply_to_message.photo) {
            bot.sendMessage(chatId, 'You have an image');
        }
    }
});

机器人不会回复任何消息,如果我进入调试模式,对象属性“reply_to_message”始终未定义,即使使用“/meme”命令回复图像的消息被定义为消息对象。

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

对于我来说,代码似乎运行得很好。我已向机器人发送了一张照片,并发送消息

/meme
作为对照片的回复。然后机器人回复
You have an image

同时,如果您发送像

/meme This is a meme
这样的消息,它将不起作用。这是因为,您正在执行严格的相等检查以将消息文本匹配为“/meme”。在这种情况下,如果您想在 /meme 命令后接受文本,请替换以下代码:

if (msg.text && msg.text.toLowerCase() === '/meme')

有了这个:

if (msg.text && msg.text.startsWith('/meme '))

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.