如果用户同时发送多张照片,如何让机器人响应一次?
How to make a bot responding once if an user sends more than one photo at the same time?
我正在用 nodejs 开发 Telegram 机器人。我创建了一个 node-telegram-bot-api 的实例,并且我正在使用 on('photo') 方法来管理用户是否向我的机器人发送照片。
问题是当用户通过从图库中多次选择照片来一起发送多张照片时,因为我的 bot 响应次数与发送的照片一样多。我认为发生这种情况是因为机器人执行 on('photo') 方法的次数与发送的照片一样多。
bot.on('photo', function (msg) {
var fileId = msg.photo[2].file_id;
bot.downloadFile(fileId, folder);
bot.sendMessage(chatId, "I got the photo", keyboard);
bot.sendMessage(chatId, "Do you want to go to the next step of the procedure?", keyboard);
//I would like that the bot sends the last message only once
我希望机器人只响应一次。
你有什么建议吗?
您可以检查第二次回复是否为照片。
您可以询问用户是否要使用最新照片或旧照片
// Init value to check is sent
var responded = False;
bot.on('photo', function (msg) {
var fileId = msg.photo[2].file_id;
bot.downloadFile(fileId, folder);
// If still false, send it!
if (!responded) {
bot.sendMessage(chatId, "I got the photo", keyboard);
// Message is sent, put responded on true
responded = True
}
else {
bot.sendMessage(chatId, "Do you want to go to the next step of the procedure?", keyboard);
}
}
我正在用 nodejs 开发 Telegram 机器人。我创建了一个 node-telegram-bot-api 的实例,并且我正在使用 on('photo') 方法来管理用户是否向我的机器人发送照片。
问题是当用户通过从图库中多次选择照片来一起发送多张照片时,因为我的 bot 响应次数与发送的照片一样多。我认为发生这种情况是因为机器人执行 on('photo') 方法的次数与发送的照片一样多。
bot.on('photo', function (msg) {
var fileId = msg.photo[2].file_id;
bot.downloadFile(fileId, folder);
bot.sendMessage(chatId, "I got the photo", keyboard);
bot.sendMessage(chatId, "Do you want to go to the next step of the procedure?", keyboard);
//I would like that the bot sends the last message only once
我希望机器人只响应一次。
你有什么建议吗?
您可以检查第二次回复是否为照片。 您可以询问用户是否要使用最新照片或旧照片
// Init value to check is sent
var responded = False;
bot.on('photo', function (msg) {
var fileId = msg.photo[2].file_id;
bot.downloadFile(fileId, folder);
// If still false, send it!
if (!responded) {
bot.sendMessage(chatId, "I got the photo", keyboard);
// Message is sent, put responded on true
responded = True
}
else {
bot.sendMessage(chatId, "Do you want to go to the next step of the procedure?", keyboard);
}
}