Задать вопрос
Balavnik
@Balavnik

Как добавить один обработчик на несколько callback data aiogram3?

Хотелось бы, чтобы dp.callback_query мог обрабатывать несколько разных callback data, однако (F.data in ['data1', 'data2']) ничего не даёт.
  • Вопрос задан
  • 53 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@TheDigitalMadness
Программист
Не очень понятен вопрос. Я полагаю, вы имели ввиду, как обрабатывать разные колбеки? Вот пример из моего проекта:
def callback_get(self, call):
        # message = call.message
        user_id = call.from_user.id
        data = str(call.data).split(' ')
        print(data)

        menu = data[0]
        if menu == 'MAIN_MY+VACANCIES_MENU':
            # Логика
        elif menu == 'MAIN_MY+VACANCIES_AT+VACANCY_MENU':
            # Логика
        elif menu == 'MAIN_MENU':
            # Логика
        elif menu == 'MAIN_MY+CHATS_MENU':
            database = Database('users.db')
            database.execute(f"SELECT * FROM users WHERE user_id={user_id}")
            user = database.get_result()[0]

            if user[3] == menu:
                database.execute(f"UPDATE users SET menu='MAIN_MY+CHATS_AT+CHAT_MENU' WHERE user_id={user_id}")

                chats_db = Database('chats.db')
                markup = self.mc.create_back_button_markup()
                if int(data[2]) == 1:
                    chats_db.execute(f"UPDATE chats SET employer_status=1 WHERE employer_id={user_id} AND id={data[1]}")

                    markup = self.mc.create_main_myChats_atChat_menu_markup()
                elif int(data[2]) == 0:
                    chats_db.execute(f"UPDATE chats SET master_status=1 WHERE master_id={user_id} AND id={data[1]}")

                    markup = self.mc.create_back_button_markup()

                self.send_message(user_id, "Перевожу в чат", reply_markup=markup)
                self.do_send_chats_messages(user_id=user_id, chat_id=int(data[1]))
            else:
                self.send_message(user_id, """Вы должны находиться в меню "Мои чаты", чтобы использовать данную функцию""")


Здесь я колбек составляю по одному типу:
"меню_пользователя(его состояние) команда аргументы", где разделители - пробелы. Правда, в данном случае я использовал pyTelegramBotAPi, поэтому код у вас может немного отличаться, но суть такая же
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
15 февр. 2025, в 03:09
2500 руб./за проект
14 февр. 2025, в 23:25
20000 руб./за проект
14 февр. 2025, в 22:36
5000 руб./за проект