Добрый день!
Помогите, пожалуйста, разобраться, что я сделал не так. Смысл бота : есть 4 человека. При получении команды /birthday бот уточняет имя, потом отправляет дату рождения.
Есть 2 Алексея, поэтому создается ветвление. Если имя Алексей, то бот уточняет фамилию и вызывает новую функцию aleksey(message). Проблема в том, что когда бот получает сообщение "алексей", он сразу отправляет ответ "Не знаю этого человека", после чего все равно ждет сообщение от пользователя, и после получения сообщения, отрабатывает корректно. Видимо в качестве сообщения для функции aleksey(message) он принимает предыдущее сообщение "алексей", выдает ответ, после получает фамилию "Иванов" и отправляет нужную дату. Как сделать, чтобы бот ждал второе сообщение?
Помогите, пожалуйста, разобраться, что я сделал не так. Смысл бота : есть 4 человека. При получении команды /birthday бот уточняет имя, потом отправляет дату рождения.
Есть 2 Алексея, поэтому создается ветвление. Если имя Алексей, то бот уточняет фамилию и вызывает новую функцию aleksey(message). Проблема в том, что когда бот получает сообщение "алексей", он сразу отправляет ответ "Не знаю этого человека", после чего все равно ждет сообщение от пользователя, и после получения сообщения, отрабатывает корректно. Видимо в качестве сообщения для функции aleksey(message) он принимает предыдущее сообщение "алексей", выдает ответ, после получает фамилию "Иванов" и отправляет нужную дату. Как сделать, чтобы бот ждал второе сообщение?
Python:
import telebot
from telebot import types
token = "мой токен"
bot=telebot.TeleBot(token)
Birthdays = {'18 марта': ['ваня', 'иван'],
'15 марта': ['вова','владимир'],}
Aleks = ['алексей', 'леша']
def aleksey(message):
new_message = message.text.lower()
petrov = 'петров'
ivanov = 'иванов'
if new_message == petrov:
bot.send_message(message.chat.id, "27 марта")
elif new_message == ivanov:
bot.send_message(message.chat.id, "30 октября")
else:
bot.send_message(message.chat.id, "Не знаю этого человека")
def get_key(d, value):
for k, v in d.items():
if v == value:
return k
@bot.message_handler(commands=['birthday'])
def birthday(message):
bot.send_message(message.chat.id, "Введите имя")
bot.register_next_step_handler(message,name)
def name(message):
if message.text.lower() in Aleks:
bot.send_message(message.chat.id, "Уточните фамилию")
bot.register_next_step_handler(message, aleksey)
aleksey(message)
else:
k = 0
names = Birthdays.values()
for i in names:
if message.text.lower() in i:
text = get_key(Birthdays, i)
bot.send_message(message.chat.id, text)
k+=1
if k == False:
bot.send_message(message.chat.id, 'Не знаю этого человека')
bot.polling(none_stop=True)
Последнее редактирование: