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()
Но также ничего не вышло.