Telethon в @client.on(events.NewMessage(chats= ... )) не могу передать актуальный список идентификаторов из бд

Пишу скрипт используя библиотеку Telethon. Суть в том, что в параметр "chats" в конструктор событий (@client.on(events.NewMessage())) передаётся список идентификаторов телеграм каналов.

Использую также SQLite3, список идентификаторов хранится там. Также имеется возможность в момент работы скрипта, добавить или удалить идентификатор из бд.

Проблема в том, что не понимаю, как сделать так, чтобы в параметр "chats" всегда передавался актуальный список из БД, который передаётся из функции db_parschannel()

api_id = API_ID
api_hash = API_HASH
client = TelegramClient('my_session', api_id, api_hash, system_version='4.16.30-vxCUSTOM')

channel_test = CHANNEL_TEST
channel_PL = CHANNEL_PL
channel_from_pars = asyncio.run(db_parschannel())
names_channel = asyncio.run(get_from_db_parschannel())


@client.on(events.NewMessage(chats=channel_from_pars))
async def parsing_new_message(event):

    if event.message.message != "":
        if hasattr(event.message.peer_id, "channel_id"):
            if int(f"-100{event.message.peer_id.channel_id}") in list(names_channel):
                print(names_channel[int(f"-100{event.message.peer_id.channel_id}")])

    pasring_text = event.message

    await client.send_message(channel_PL, pasring_text)

Получение список идентификаторов из БД

async def db_parschannel():
    conn = sqlite3.connect('database/id_telega.db')
    cursor = conn.cursor()

    CHANNEL_FROM_PARS = [i[0] for i in cursor.execute("SELECT id_channel from channels")]

    return CHANNEL_FROM_PARS

Если я пытаюсь сделать что-то типа:

@client.on(events.NewMessage(chats=asyncio.run(db_parschannel())

Всё равно не выходит, и если запустить скрипт, а потом что-то удалить/добавить, то он старый список как принял в себя так и использует его до конца.

Пытался также что-то аля:

channel_from_pars = asyncio.run(db_parschannel())

async def upd_id_channel():
   global channel_from_pars 
   channel_from_pars = await db_parschannel()
  
@client.on(events.NewMessage(chats=channel_from_pars))
async def parsing_new_message(event):
   await upd_id_channel()

Но также ничего не вышло.


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