Добрый день! Подскажите пожалуйста где делаю ошибку.
у бота задуман функционал для регистрации пользователей а так же их удаления.
@bot.message_handler(content_types=['text'])
def start(message):
user = message.from_user
if not check_user(user.id):
markup = types.ReplyKeyboardMarkup(row_width=1)
bot.send_message(message.chat.id, "Для начала работы с ботом зарегистрируйтесь.")
reg = types.InlineKeyboardButton(text="Регистрация", callback_data="registration")
markup.add(reg)
bot.send_message(message.chat.id, 'Выберите пункт меню:', reply_markup=markup)
if message.text == 'Регистрация':
bot.register_next_step_handler(message, register)
@bot.message_handler(func=lambda message: message.text == 'Регистрация')
def register(message):
user = message.from_user
data = message.text.split(',')
if check_user(user.id):
bot.send_message(message.chat.id, "Вы уже зарегистрированы!.")
return
elif len(data) != 3 or None in data:
bot.send_message(message.chat.id, "Для регистрации отправьте данные в формате: имя, фамилия, username через запятую.")
else:
bot.register_next_step_handler(user, register_user, data)
bot.send_message(message.chat.id, "Регистрация прошла успешно.")
button_menu(message)
def register_user(user, data):
user_id = user.id
print(data, 'in func reg user')
cur.execute("INSERT INTO users (user_id, username, first_name, last_name) VALUES (?, ?, ?, ?)",
(user_id, data[0], data[1], data[2]))
conn.commit()
при всём этом функционал удаления работает нормально:
@bot.message_handler(func=lambda message: message.text == 'Удалить пользователя ТГ')
def delete_user(message):
cur.execute("SELECT * FROM users")
users = cur.fetchall()
response = "Выберите пользователя для удаления:\n"
for i, user in enumerate(users, start=1):
response += f"{i}. {user[1]} ({user[2]})\n"
bot.reply_to(message, response)
bot.register_next_step_handler(message, delete_user_selection, users)
def delete_user_selection(message, users):
try:
user_id = int(message.text)
user_to_delete = users[user_id - 1][0]
cur.execute("DELETE FROM users WHERE user_id=?", (user_to_delete,))
conn.commit()
bot.reply_to(message, "Пользователь успешно удален")
except ValueError:
bot.reply_to(message, "Пожалуйста, введите номер пользователя для удаления")
никак не могу разобраться с принципами работы декораторов в Telebot... Где нужно указывать @bot.message_handler(func=lambda message: message=True) а где @bot.callback_query_handler(func=lambda call: True) или где можно это проигнорировать. Информации много в интернете. А вот структуру пока выстроить в голове не получилось... Помогите пожалуйста разобраться.