所以我正在制作一个简单的电报机器人,如果回复的消息是照片,它会回复一条消息,但“消息”对象的节点电报机器人库的属性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”命令回复图像的消息被定义为消息对象。
对于我来说,代码似乎运行得很好。我已向机器人发送了一张照片,并发送消息
/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 '))
希望这有帮助!