Помощь в создании кнопок

Рейтинг: 0Ответов: 1Опубликовано: 12.08.2023

Помогите пожалуйста с добавлением опции выбора причины отказа, при нажатии на кнопку "Отказать" надо что бы появились кнопки с причинами, пример:Неподходящий опыт,Недостаточная активность.

Буду ОЧЕНЬ благодарен если кто-то поможет

def handle_approve_reject(call):
    """Обработчик кнопок Одобрить/Отказать."""
    db_connection = sqlite3.connect('applications.db')
    db_cursor = db_connection.cursor()
    action, application_id = call.data.split("_")
    application_id = application_id.strip()

    # Get application data from the database
    db_cursor.execute("SELECT * FROM applications WHERE id=?", (application_id,))
    application_data = db_cursor.fetchone()

    if application_data:
        context = {
            'user_chat_id': application_data[2],
            'nickname': application_data[3],
            'current_position': application_data[4],
            'desired_position': application_data[5],
            'status': application_data[8]
        }

        if action == "approve":
            new_status = f"Одобрено by: @{call.from_user.username}"
            # Отправляем пользователю сообщение о одобрении заявки
            user_chat_id = context['user_chat_id']
            bot.send_message(user_chat_id, f"🎉🎊🍾 Ваша заявка на повышение на должность '{context['desired_position']}' одобрена by: @{call.from_user.username}")

        elif action == "reject":
            new_status = f"Отказано by: @{call.from_user.username}"
            # Отправляем пользователю сообщение об отказе заявки
            user_chat_id = context['user_chat_id']
            bot.send_message(user_chat_id, f"🥺 Ваша заявка на повышение на должность '{context['desired_position']}' отклонена by: @{call.from_user.username}")

        # Update status in the database
        db_cursor.execute("UPDATE applications SET status=? WHERE id=?", (new_status, application_id))
        db_connection.commit()

        # Edit the message to remove inline buttons and update the status
        new_message_text = f"От: {context['nickname']}\n" \
                           f"Текущая должность: {context['current_position']}\n" \
                           f"Желаемая должность: {context['desired_position']}\n" \
                           f"Статус: {new_status}"

        bot.edit_message_text(chat_id=management_chat_id, message_id=call.message.message_id,
                              text=new_message_text, parse_mode='MarkdownV2')
    else:
        bot.send_message(call.from_user.id, "Извините, произошла ошибка при обработке заявки.")

Ответы

▲ 0
def handle_approve_reject(call):
    """Обработчик кнопок Одобрить/Отказать."""
    db_connection = sqlite3.connect('applications.db')
    db_cursor = db_connection.cursor()
    action, application_id = call.data.split("_")
    application_id = application_id.strip()

    # Get application data from the database
    db_cursor.execute("SELECT * FROM applications WHERE id=?", (application_id,))
    application_data = db_cursor.fetchone()

    if application_data:
        context = {
            'user_chat_id': application_data[2],
            'nickname': application_data[3],
            'current_position': application_data[4],
            'desired_position': application_data[5],
            'status': application_data[8]
        }

        if action == "approve":
            new_status = f"Одобрено by: @{call.from_user.username}"
            # Отправляем пользователю сообщение о одобрении заявки
            user_chat_id = context['user_chat_id']
            bot.send_message(user_chat_id, f"🎉🎊🍾 Ваша заявка на повышение на должность '{context['desired_position']}' одобрена by: @{call.from_user.username}")

        elif action == "reject":
            # Получаем список причин отказа
            reasons = ['Неподходящий опыт', 'Недостаточная активность', 'Другое']
            # Отправляем пользователю сообщение с выбором причины отказа
            bot.send_message(user_chat_id, f"Ваша заявка на повышение на должность '{context['desired_position']}' отклонена. Пожалуйста, выберите причину отказа:")
            for reason in reasons:
                bot.send_message(user_chat_id, f"* {reason}")
            # Получаем ответ пользователя
            reason = await bot.wait_for_message(timeout=60)
            # Обновляем статус заявки в базе данных
            new_status = f"Отказано by: @{call.from_user.username} (причина: {reason.text})"
            db_cursor.execute("UPDATE applications SET status=? WHERE id=?", (new_status, application_id))
            db_connection.commit()

            # Отправляем пользователю сообщение об отказе заявки с причиной
            bot.send_message(user_chat_id, f"🥺 Ваша заявка на повышение на должность '{context['desired_position']}' отклонена. Причина отказа: {reason.text}")

    else:
        bot.send_message(call.channel, "Заявка не найдена.")

    db_connection.close()