Вот код
import telebot
import random, string
from telebot import types
bot = telebot.TeleBot('Токен')
my_id = 'Мой айди как создателя'
trainer_pass1 = '$W8Zs*?$r|u2'
trainer_pass = '123'
unic_code = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(10))
attempts = 3
FIO = ''
dates = ''
place = ''
#Начало стартовой функции
@bot.message_handler(commands=['start'])
def start(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Я тренер")
btn2 = types.KeyboardButton('Я родитель/ученик')
markup.add(btn1, btn2)
bot.send_message(message.from_user.id, "Здравствуйте вас приветствует бот для удобного организации спортивных соревнований. Начнем регистрацию, Вы тренер или родитель/ученик?", reply_markup=markup)
@bot.message_handler(commands=['start'])
def get_name(message):
name = message.from_user.username
return name
@bot.message_handler(content_types='text')
def role_set(message):
if message.text == 'Я тренер':
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Да всё верно")
btn2 = types.KeyboardButton('Нет, я ошибся/ошиблась')
markup.add(btn1, btn2)
msg = bot.send_message(message.from_user.id, "Вы тренер?", reply_markup=markup)
bot.register_next_step_handler(msg, confirmation_tr)
elif message.text == 'Я родитель/ученик':
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Да всё верно")
btn2 = types.KeyboardButton('Нет, я ошибся/ошиблась')
markup.add(btn1, btn2)
msg = bot.send_message(message.from_user.id, "Вы родитель/ученик?", reply_markup=markup)
bot.register_next_step_handler(msg, confirmation_parent)
def confirmation_tr(message):
if message.text == "Да всё верно":
bot.send_message(my_id, f'Запрос на тренера от @{get_name(message)}')
msg = bot.send_message(message.from_user.id, "В течение дня вам напишут для ручной верификации и выдадут пароль, в следующем сообщении введите пароль (пожалуйста, не вводите ничего кроме пароля)")
bot.register_next_step_handler(msg, check_password)
elif message.text == "Нет, я ошибся/ошиблась":
start(message)
def confirmation_parent(message):
if message.text == "Да всё верно":
pass # add your logic here for parent/child confirmation
elif message.text == "Нет, я ошибся/ошиблась":
start(message)
def check_password(message):
global attempts
if message.text != trainer_pass:
attempts -= 1
msg = bot.send_message(message.from_user.id, f"Неверный пароль, осталось(ась) {attempts} попытки(а)")
bot.register_next_step_handler(msg, check_password)
else:
msg = bot.send_message(message.from_user.id, "Верный пароль, теперь введите ваше ФИО")
bot.register_next_step_handler(msg, FIO_set)
def FIO_set(message):
global FIO
FIO = message.text
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Добавить соревнование")
btn2 = types.KeyboardButton('Уникальный код для добавления учеников в вашу команду')
markup.add(btn1, btn2)
msg = bot.send_message(message.from_user.id, f"Здравствуйте, {FIO}", reply_markup=markup)
bot.register_next_step_handler(msg, main_menu)
def main_menu(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Добавить соревнование")
btn2 = types.KeyboardButton('Уникальный код для добавления учеников в вашу команду')
markup.add(btn1, btn2)
if message.text == 'Добавить соревнование':
creating_compet(message)
elif message.text == 'Уникальный код для добавления учеников в вашу команду':
msg = bot.send_message(message.chat.id, f'Ваш код: {unic_code}')
bot.register_next_step_handler(msg, main_menu)
else:
msg = bot.send_message(message.from_user.id, f"Такой функции нету")
bot.register_next_step_handler(msg, main_menu)
def creating_compet(message):
global dates, place
if dates == '' and place == '':
markup = types.InlineKeyboardMarkup(row_width=2)
btn1 = types.InlineKeyboardButton("Дата и время", callback_data='dates')
btn2 = types.InlineKeyboardButton("Место проведения", callback_data="place")
markup.add(btn1, btn2)
bot.send_message(message.from_user.id, f"Соревнование", reply_markup = markup)
elif dates != '' and place != '':
markup = types.InlineKeyboardMarkup(row_width=2)
btn1 = types.InlineKeyboardButton(f"Дата и время({dates})", callback_data='dates')
btn2 = types.InlineKeyboardButton(f"Место проведения({place})", callback_data="place")
markup.add(btn1, btn2)
bot.send_message(message.from_user.id, f"Соревнование", reply_markup = markup)
elif dates != '' and place == '':
markup = types.InlineKeyboardMarkup(row_width=2)
btn1 = types.InlineKeyboardButton(f"Дата и время({dates})", callback_data='dates')
btn2 = types.InlineKeyboardButton(f"Место проведения", callback_data="place")
markup.add(btn1, btn2)
bot.send_message(message.from_user.id, f"Соревнование", reply_markup = markup)
elif dates == '' and place != '':
markup = types.InlineKeyboardMarkup(row_width=2)
btn1 = types.InlineKeyboardButton(f"Дата и время", callback_data='dates')
btn2 = types.InlineKeyboardButton(f"Место проведения({place})", callback_data="place")
markup.add(btn1, btn2)
bot.send_message(message.from_user.id, f"Соревнование", reply_markup = markup)
@bot.callback_query_handler(func=lambda call: True)
def creating_compet_handle(call):
if call.data == 'dates':
markup = types.InlineKeyboardMarkup(row_width=2)
btn1 = types.InlineKeyboardButton("Назад", callback_data='back')
markup.add(btn1)
msg = bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text=f"Напишите дату/даты проведения соревнований", reply_markup=markup)
bot.register_callback_query_handler(msg, dates_set)
@bot.callback_query_handler(func=lambda call: True)
def dates_set(call):
global dates
print(call)
if call.data == 'back':
creating_compet(call.message)
else:
dates = call.message.text
print(call)
creating_compet(call.message)
if __name__ == "__main__":
bot.polling(none_stop=True)
В целом в начале всё работает хорошо но после Creating_compet_handler должно выполняться Dates_set но это не так, ошибки никакой не выдает