@geyhel

Бот перестает работать после определенного блока, как исправить?

from telebot import types

bot = telebot.TeleBot('token')

user_texts = {}

@bot.message_handler(commands=['start'])
def start(message):
    user_id = message.from_user.id
    try:
        chat_member = bot.get_chat_member('@channel', user_id)
        if chat_member.status != 'left':
            markup = types.InlineKeyboardMarkup()
            btn1 = types.InlineKeyboardButton('➕ Добавить текст', callback_data='btn1')
            markup.add(btn1)
            bot.send_message(message.chat.id, "Главное меню", reply_markup=markup)
        else:
            markup = types.InlineKeyboardMarkup()
            btn1 = types.InlineKeyboardButton('Далее', callback_data='D')
            markup.row(btn1)
            msg = bot.send_message(message.chat.id, "Вы не подписаны на @channel. Пожалуйста, подпишитесь, чтобы продолжить.", reply_markup=markup)
            bot.register_next_step_handler(msg, delete_message)

    except Exception as e:
        bot.reply_to(message, "⚠️ Произошла ошибка при проверке подписки на канал.")

def delete_message(message):
    bot.delete_message(message.chat.id, message.message_id)




@bot.callback_query_handler(func=lambda call: True)
def query_handler(call):
    if call.data == 'D':
        user_id = call.from_user.id
        try:
            chat_member = bot.get_chat_member('@channel', user_id)
            if chat_member.status != 'left':
                # Пользователь подписан на канал, переходим к следующему блоку
                markup = types.InlineKeyboardMarkup()
                btn2 = types.InlineKeyboardButton('➕ Добавить текст', callback_data='btn2')
                markup.add(btn2)
                bot.send_message(call.message.chat.id, "Главное меню", reply_markup=markup)
                bot.delete_message(call.message.chat.id, call.message.message_id)  # Удаление предыдущего сообщения
            else:
                bot.answer_callback_query(callback_query_id=call.id, text='Вы не выполнили условия!')
        except Exception as e:
            bot.answer_callback_query(callback_query_id=call.id, text='Произошла ошибка при проверке подписки на канал.')

#После нажатия на кнопку Далее - не хочет продолжать работать(

@bot.callback_query_handler(func=lambda call: True )
def callback_inline(call):
    if call.data == "btn1":
        markup = types.InlineKeyboardMarkup()
        btn1 = types.InlineKeyboardButton('⬅️Назад', callback_data='btn3')
        markup.add(btn1)
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text='Введите текст: \n\n <i>Пример: пример</i>', parse_mode="html", reply_markup=markup)
        bot.register_next_step_handler(call.message, process_user_text)

    elif call.data == "btn2":
        markup = types.InlineKeyboardMarkup()
        btn2 = types.InlineKeyboardButton('⬅️Назад', callback_data='btn4')
        markup.add(btn2)
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                              text='Наши услуги',
                              reply_markup=markup)
    elif call.data == 'btn3':
        markup = types.InlineKeyboardMarkup()
        btn1 = types.InlineKeyboardButton('➕Добавить текст', callback_data='btn1')
        markup.add(btn1)
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                              text='Главное меню',
                              reply_markup=markup)
    elif call.data == 'btn4':
        markup = types.InlineKeyboardMarkup()
        btn1 = types.InlineKeyboardButton('➕ Добавить текст', callback_data='btn1')
        markup.add(btn1)
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id,
                              text='Главное меню',
                              reply_markup=markup)
        






def process_user_text(message):
    # Сохраняем текст, введенный пользователем
    user_text = message.text
    user_id = message.from_user.id  # Получаем ID пользователя
    # Сохраняем текст в словаре по ID пользователя
    user_texts[user_id] = user_text
    # Отправляем текст другому пользователю (замените на реальный ID)
    another_user_id = 'id'  
    bot.send_message(another_user_id, f"Пользователь добавил текст\n\n Name {message.from_user.first_name} \n User: @{message.from_user.username} \n\n {user_text}", parse_mode='HTML')
    markup = types.InlineKeyboardMarkup()
    btn1 = types.InlineKeyboardButton('⬅️ Главное меню', callback_data='btn3')
    markup.add(btn1)
    bot.send_message(user_id, "✅ Заявка успешно создана!\n\n Ожидайте", parse_mode='HTML',  reply_markup=markup)
 

bot.polling()
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Ну так ты не озаботился изучением работы инлайн-кнопок, вот и результат.
У тебя две функции отмечены декоратором
@bot.callback_query_handler(func=lambda call: True)

Эта проблема встречается регулярно, и на этом сайте уже есть несколько вопросов по ней.
Вот один из них, с моим ответом.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы