Как получить id всех сообщений telegram python + aiogram

В python новичок, пытаюсь написать простой telegram бот - помощник. Есть канал, куда сотрудники постят сообщения с текстом и тегами. Бот добавлен как администратор в этот канал, доступ к сообщениям имеет (пересылать, копировать может). Бот должен выдавать пользователю определенные сообщения из канала по запросу, в соответствии с тегами, либо по определенному тексту в сообщении. Никак не соображу, каким образом сделать поиск по сообщениям в канале, особенно когда неизвестны их id. Пока для себя представил следующую логику, бот проходится по сообщениям и составляет словарь, где теги(либо ключевые слова) это ключи, а id сообщений это значения.

Основной вопрос как получить id всех сообщений в канале, что бы потом уже с этим работать? Сильно не бейте, готовый код не прошу, за подсказку к решению вопроса, буду очень благодарен!

upd: Пока получилось как то так, сначала получаю id имеющихся сообщений в канале и записываю список в файл, затем разделяю их в соответствии с тегами на 3 списка и их тоже записываю. Наверняка это очень кривой и не красивый код, я только учусь

import requests
from bs4 import BeautifulSoup


def get_msg_id():
    url = 'https://t.me/s/%channel_name%/'
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'lxml')
    section = soup.find_all('span', class_="tgme_widget_message_meta", recursive=True)
    c = 1
    k = '/'
    list_id = []

    while c <= (len(section) - 1):
        item = str(section[c])
        msg_id = item[-83:-81]
        if k in msg_id:
            msg_id = str(msg_id.replace('/', '0', 1))
            list_id.append(msg_id)
            c += 1
        else:
            list_id.append(msg_id)
            c += 1
    with open('list_id_all.txt', 'w') as file:
        for listitem in list_id:
            file.write('%s\n' % listitem)
    return list_id


list_id = get_msg_id()

engineering = []
accountant = []
production = []

def get_tag():
    c = 0
    tag_1 = '#инженеры'
    tag_2 = '#бухгалтерия'
    tag_3 = '#производство'
    for i in list_id:
        url = ('https://t.me/s/%channel_name%/' + str(list_id[c]))
        response = requests.get(url)
        soup = BeautifulSoup(response.content, 'lxml')
        section = soup.find_all('div', class_='tgme_widget_message_text js-message_text', recursive=True)
        tag_job = str(section[c+1])

        if tag_1 in tag_job:
            engineering.append(list_id[c])
        else:
            None

        if tag_2 in tag_job:
            accountant.append(list_id[c])
        else:
            None

        if tag_3 in tag_job:
            production.append(list_id[c])
        else:
            None
        c += 1

    with open('list_id_engineering.txt', 'w') as file:
        for listitem in engineering:
            file.write('%s\n' % listitem)

    with open('list_id_accountant.txt', 'w') as file:
        for listitem in accountant:
            file.write('%s\n' % listitem)

    with open('list_id_production.txt', 'w') as file:
        for listitem in production:
            file.write('%s\n' % listitem)

    return engineering, accountant, production

При нажатии на кнопку, берется нужный файл, извлекается список и копируются нужные сообщения по id. Выглядит как то так:

@dp.message_handler(text='command')
async def get_temporary_job(message: types.Message):
    accountant = []
    with open('list_id_accountant.txt', 'r') as file:
        for line in file:
            _accountant = line[:-1]
            accountant.append(_accountant)
    for i in accountant:
     await bot.copy_message(message.from_user.id, from_chat_id=-XXXXXXXXXXXX, message_id=i)

Ответы (0 шт):