Здравствуйте. Есть такой код:
async function startEarn(msg, randomChannel) {
await bot.sendMessage(
msg.chat.id,
`Подпишись на канал "${randomChannel.name}"!`,
options.inlineKeyboard(randomChannel)
);
bot.on('callback_query', (query) => {
workWithQuery(query, msg, randomChannel)
});
}
async function workWithQuery(query, msg, randomChannel) {
switch (query.data) {
case 'subscribe':
return;
case 'doSmth':
bot.deleteMessage(msg.chat.id, query.message.message_id);
bot.answerCallbackQuery(query.id);
return;
case 'cancel':
bot.deleteMessage(msg.chat.id, query.message.message_id);
bot.answerCallbackQuery(query.id);
earn(msg);
return;
case 'back':
await bot.answerCallbackQuery(query.id, {text: 'Выберите пункт меню: '});
await bot.sendMessage(msg.chat.id, 'Выберите пункт меню: ');
return 'to menu';
default:
return;
}
};
Сallback query срабатывает по нескольку раз. А если быть точнее, то она срабатывает столько раз, сколько раз были нажаты кнопки из этой inline_keyboard до этого. Как это можно исправить?