Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Нужна небольшая помощь в написании фильтрации

Имеется бот(aiogram) с кнопками, приходят скриптом сообщения в этого бота(сообщения от заббикса). Нужно произвести фильтрацию принятых сообщений в боте, то есть при нажатии определенной кнопки, будут приходить сообщения только по этой кнопке. Прошу хоть немного помочь с этой фильтрацией, привязку к кнопкам сделаю сам
PythonAiogram+2
Vyacheslav Polyakov
Python Q
  · 1,4 K
Лучший
Программирование, программирование ботов на discord.py, игра на электрогитаре. Люблю...  · 30 апр 2023
Для фильтрации сообщений в боте по кнопкам можно использовать хэш-таблицу (словарь) с ключами, соответствующими тексту на кнопке, и значениями, соответствующими номеру чата, в котором была нажата эта кнопка. Когда приходит новое сообщение, проверяется текст кнопки, и если он соответствует ключу в словаре, то сообщение сохраняется в соответствующий чат.
Пример реализации:
import aiogram
from aiogram import types
bot = aiogram.Bot(token='TOKEN')
dp = aiogram.dispatcher.Dispatcher(bot)
chats = {'Button 1': 123456789, 'Button 2': 987654321} # словарь с чатами для каждой кнопки
@dp.message_handler(content_types=types.ContentType.TEXT)
async def handle_message(message: types.Message):
    if message.text in chats: # если текст сообщения есть в словаре
        chat_id = chats[message.text] # получаем chat_id для этой кнопки
        await bot.send_message(chat_id, message.text) # отправляем сообщение в этот чат
if __name__ == '__main__':
    aiogram.executor.start_polling(dp)
В этом примере мы создали словарь `chats`, в котором для каждой кнопки задали chat_id чата, в который нужно отправлять сообщения. В обработчике сообщений мы проверяем, есть ли текст сообщения в этом словаре, и если есть, отправляем сообщение в соответствующий чат.
Теперь вам нужно привязать каждую кнопку к своему chat_id и добавить обработчики кнопок. Для этого можно использовать `InlineKeyboardButton` и `InlineKeyboardMarkup` из библиотеки aiogram. Пример:
@dp.callback_query_handler(lambda c: True)
async def handle_callback_query(callback_query: types.CallbackQuery):
    chat_id = chats[callback_query.data] # получаем chat_id для этой кнопки
    await bot.send_message(chat_id, callback_query.data) # отправляем сообщение в этот чат
keyboard = types.InlineKeyboardMarkup(row_width=2)
button1 = types.InlineKeyboardButton(text='Button 1', callback_data='Button 1')
button2 = types.InlineKeyboardButton(text='Button 2', callback_data='Button 2')
keyboard.add(button1, button2)
bot.send_message(chat_id, 'Choose a button:', reply_markup=keyboard)
В этом примере мы создали `InlineKeyboardMarkup` с двумя кнопками и добавили их в клавиатуру. При нажатии на кнопку вызывается обработчик `handle_callback_query`, где получаем chat_id для этой кнопки из словаря `chats` и отправляем сообщение.