Задать вопрос
@Angeyll

Почему в библиотеке telethon python не запускается цикл?

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

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()
  • Вопрос задан
  • 81 просмотр
Подписаться 1 Простой 3 комментария
Решения вопроса 1
Lord_of_Rings
@Lord_of_Rings
Дунадан - северный странник. Злой, но очень добрый
Проблема в том, что вы открываете файл один раз в начале программы и используете его как итератор. После первого прохода цикла for итератор исчерпывается, и в следующий раз, когда вы пытаетесь пройтись по нему, он уже пуст. Поэтому файл надо открывать, когда приходит новое сообщение, а не в начале программы:
with open("area.txt", "r") as area:
    for i in area:
        print(i.rstrip())
        if i.rstrip() in act_mes:
            print(act_mes)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы