Как заставить бота ждать сообщение и потом реагировать на него?
Доброго времени суток!
Пишу бота для телеграмма, пытался сделать реферальную систему и столкнулся с проблемой, что не могу заставить бота ждать сообщение от юзера и соответственно бот никак не реагирует на сообщения
i = db.user_money(message.from_user.id)
r = i[5]
### эти строки просто достают код из базы данных, они работают нормально###
elif call.data == 'Referal':
markup = types.InlineKeyboardMarkup(row_width=2)
item1 = types.InlineKeyboardButton("?Мой реф код", callback_data='My ref')
item2 = types.InlineKeyboardButton("?Ввести код друга", callback_data='Addref')
item3 = types.InlineKeyboardButton("⬅️Назад", callback_data='Nazad v main')
markup.add(item1, item2, item3)
bot.send_message(call.message.chat.id, '? Реферальная программа\n\n? Наш бот имеет
реферальную сестему! Попроси друга ввести ваш код и получайте бонус!', reply_markup=markup)
bot.delete_message(chat_id=call.message.chat.id, message_id=call.message.message_id)
elif call.data == 'Addref':
markup = types.InlineKeyboardMarkup(row_width=2)
item1 = types.InlineKeyboardButton("⬅️Назад", callback_data='Referal')
markup.add(item1)
if call.message.chat.id == r: ### r - это переменная в которую записан код, она работает правильно###
bot.send_message(call.message.chat.id, 'успех!!', reply_markup=markup)
else:
bot.send_message(call.message.chat.id, 'не подходит!', reply_markup=markup)
bot.delete_message(chat_id=call.message.chat.id, message_id=call.message.message_id)
в итоге бот после нажатия на кнопку "?Ввести код друга" просто сразу выдаёт 'не подходит!' и не реагирует на сообщения
Ответы (1 шт):
Автор решения: Іван Шнір
→ Ссылка
Используйте команду bot.register_next_step_handler(msg, func)
Показую на примере:
def code(message):
msg = bot.send_message(message.chat.id,"Введите ваш код")
bot.register_next_step_handler(msg,active)
def active(message):
bot.send_message(message.chat.id," Вы успешно ввели код")