В библиотеке telethon python под функцией с декоратором не запускается цикл. Точнее запускается, но только один раз

1.В простенький код не могу вставить цикл for. Код получает новые сообщения из чата телеграмм. Для обработки сообщений необходимо запустить цикл. Цикл отрабатывает только 1 раз. Необходимо, чтобы он отрабатывал каждый раз по событию прихода нового сообщения. Код отрабатывает правильно, но только на первом сообщении, т.к. со второго сообщения просто не запускается цикл.

2.

from telethon import TelegramClient, sync, events
import time
api_id = *******
api_hash = '****************************'

area = open("area.txt", "r")

client = TelegramClient('test_tg', api_id, api_hash, device_model="iPhone 13 Pro Max", 
system_version="14.8.1", app_version="8.4", lang_code="en", system_lang_code="en-US")

@client.on(events.NewMessage())
async def normal_handler(event):
    if '5725556759' in str(event.message):
        act_mes = str(event.message)
        print(act_mes)
        print('Message at {} UTC'.format(event.message.date))
        for i in area:
           print(i.rstrip())
           if i.rstrip() in act_mes:
                print(act_mes)

client.start()
client.run_until_disconnected()

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

Автор решения: CrazyElf
area = open("area.txt", "r")
...
        for i in area:
           ...

Если вы один раз прочитали файл, то всё, второй раз цикл ничего уже не прочитает, файл кончился. Поэтому открывайте каждый раз файл area перед циклом заново. И лучше через контекстный менеджер, т.е. через with. А то вы его ещё и не закрываете, это не очень хорошо, могут быть проблемы потом. А с менеджером он закроется автоматически.

        with open("area.txt", "r") as area:
            for i in area:
                ...
→ Ссылка