некорректная работа телеграм-бота
Задумка: Вводишь дату, бот выводит праздник в этот день. При открытии бота должен появляться следующий текст:
Введите дату в формате Д.ММ и нажмите ENTER
Список праздников находится в отдельном файле. Не могу понять, что не так
@bot.message_handler(content_types=['text'])
def get_text_messages(message):
bot.send_message(message.from_user.id, "Введите дату в формате Д.ММ и нажмите ENTER")
data = input()
if message.text == data:
bot.send_message(message.from_user.id, slovar.data_year.get(data))
else:
bot.send_message(message.from_user.id, "В этот день праздников нет. Иди работать!")
bot.polling(none_stop=True, interval=0)
import telebot
import slovar
bot = telebot.TeleBot('1770077388:AAHQa8lA-Qh1VX9X1xUJm1KRoaxwFk7uia0')
data = input()
def func(message):
if message.text == data:
bot.send_message(message.from_user.id, slovar.data_year.get(data))
else:
bot.send_message(message.from_user.id, "В этот день праздников нет. Иди работать!")
@bot.message_handler(content_types=['text'])
def get_text_messages(message):
data = bot.send_message(message.from_user.id, "Введите дату в формате Д.ММ и нажмите ENTER")
bot.register_next_step_handler(data, func)
bot.polling(none_stop=True, interval=0)
Ответы (1 шт):
Автор решения: Іван Шнір
→ Ссылка
data = input() считывает текст с командной строки, а не текст который вы вводите боту
Для того чтобы правильно всё реализовать надо использовать
bot.register_next_step_handler - эта функция ждёт ответ от пользователя
Как применить в вашем случае
Вам надо немного подправить код:
def func(message):
try:
bot.send_message(message.from_user.id, slovar.data_year.get(data))
except as Exception:
bot.send_message(message.from_user.id, "В этот день праздников нет. Иди работать!")
print(Exception)
@bot.message_handler(content_types=['text'])
def get_text_messages(message):
data = bot.send_message(message.from_user.id, "Введите дату в формате Д.ММ и нажмите ENTER")
bot.register_next_step_handler(data, func)
bot.polling(none_stop=True, interval=0)
С этого выходит что bot.register_next_step_handler применяет 2 аргумента
- Это сообщение на которое должен ответить юзер
- Функция которую надо выполнить после ответа.
