Как можно восстановить работу кнопки в другом сообщении после ее отключения?

Как реализовать в Python функционал, при котором после нажатия на одну из двух кнопок ("Принять" или "Отклонить") в канале с репортом, кнопка становится неактивной, а отправителю репорта приходит личное сообщение с текстом в зависимости от выбранной кнопки (одобрено или отклонено)? В вашем коде уже присутствует часть, отключающая кнопки и отправляющая определенный текст пользователю; если необходимо, могу просмотреть дополнительную часть кода.
  • 8 апреля 2024 г. 14:39
Ответы на вопрос 1
Для восстановления работы кнопки после ее отключения можно использовать следующий подход:
1. Создать отдельную функцию, которая будет отвечать за отображение и обработку кнопок в сообщении.
2. При необходимости включить кнопку после ее отключения, вызвать эту функцию снова с новыми параметрами.

Ниже приведен пример кода на Python, который может быть использован для реализации функционала с кнопками "Принять" и "Отклонить" в Telegram боте:

```python
import telebot

bot = telebot.TeleBot('your_token_here')

@bot.message_handler(commands=['start'])
def start(message):
    keyboard = telebot.types.InlineKeyboardMarkup()
    accept_button = telebot.types.InlineKeyboardButton("Принять", callback_data='accept')
    reject_button = telebot.types.InlineKeyboardButton("Отклонить", callback_data='reject')
    
    keyboard.add(accept_button, reject_button)
    
    bot.send_message(message.chat.id, "Выберите действие:", reply_markup=keyboard)

@bot.callback_query_handler(func=lambda call: True)
def callback_handler(call):
    if call.data == 'accept':
        bot.send_message(call.message.chat.id, "Заявка одобрена")
    elif call.data == 'reject':
        bot.send_message(call.message.chat.id, "Заявка отклонена")
    
    # Отключаем кнопки после нажатия
    bot.edit_message_reply_markup(call.message.chat.id, call.message.message_id)

bot.polling()
```

В данном коде, при нажатии на одну из кнопок, отправляется сообщение с соответствующим текстом и отключаются кнопки. Если необходимо включить кнопки снова, можно вызвать `start(message)` функцию повторно.
Похожие вопросы