Задать вопрос
@ArtemMik
Python

Как пофиксить ошибку с missing 1 required positional argument: 'event'?

У меня есть функция, которая подключается к сессии телеграмм, парсит тг каналы указанные в url и дальше не выходя из сессии в режиме реального времени парсят новые сообщения в канале, но я столкнулся с проблемой, что я не знаю чему равен аргумент event, помогите, пожалуйста

Код:

import logging  # стандартная библиотека для логирования
import parcer_functions # библиотека этого парсера
from telethon import TelegramClient, events, sync, connection  # pip3 install telethon
from config import api_id, api_hash  # получение айди и хэша нашего приложения из файла config.py
from loguru import logger
from telethon.tl.functions.channels import JoinChannelRequest
from asyncio import get_event_loop, sleep, gather, run
import asyncio

# настройка логгера
logging.basicConfig(
    level=logging.INFO,
    filename='parser_log.log',
    filemode='w',
    format="%(asctime)s %(levelname)s %(message)s"
)

logging.info("script started")  # сообщение о начале работы в лог

url = ["XXX"]

flag = True  # флаг нужен для корректного логирования результата работы парсера (успешно/неуспешно)

client = TelegramClient('new', api_id, api_hash)
client.start()



@client.on(events.NewMessage(chats=url))
async def main(event):
    async with client:
        logger.info(f"коннект аккаунта")
        logger.info(f"Запущен парсер групп - {url}")
        for channel in url:
            try:
                await client(JoinChannelRequest(channel))
                err = await parcer_functions.parse(client, channel)
            except:
                print(f'Waiting for')
        err = event.message.to_dict()['message']
        print(err)
        await parcer_functions.parse(client, url)
        print(f"Сообщение было отправлено в канале")

        await client.run_until_disconnected()


if __name__ == '__main__':
    asyncio.run(main())


Код ошибки:
Traceback (most recent call last):
  File "F:\pythonProject\parcer_tg\parcer.py", line 49, in <module>
    asyncio.run(main())
TypeError: main() missing 1 required positional argument: 'event'
  • Вопрос задан
  • 396 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Ну так а ты что хотел?
@client.on(events.NewMessage(chats=url))
async def main(event):

Ты объявил, что у тебя main() требует один аргумент, а потом вызываешь без аргументов.
Собственно, возникает вопрос: ты вообще понимаешь, что делаешь, или пытаешься слепить код наугад, авось заработает?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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