@ArtemMik
Python

Как решить ошибку TypeError?

У меня есть код, который подключается к сессии телеграмм и парсит каналы указанные в url, после подключения к сессии тг начинается парсинг каналов, но тут вылазит ошибка:
Traceback (most recent call last):
  File "F:\pythonProject\parcer_tg\parcer.py", line 48, in <module>
    client.loop.run_until_complete(main(events))
  File "C:\Users\Артём\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 646, in run_until_complete
    return future.result()
  File "F:\pythonProject\parcer_tg\parcer.py", line 38, in main
    await parcer_functions.parse(client, url)
  File "F:\pythonProject\parcer_tg\parcer_functions.py", line 60, in parse
    channel_id = await get_channel_id(client, url)  # получение ID канала
  File "F:\pythonProject\parcer_tg\parcer_functions.py", line 9, in get_channel_id
    m = await client.get_messages(link, limit=1)
  File "F:\pythonProject\parcer_tg\venv\lib\site-packages\telethon\client\messages.py", line 603, in get_messages
    return await it.collect()
  File "F:\pythonProject\parcer_tg\venv\lib\site-packages\telethon\requestiter.py", line 113, in collect
    async for message in self:
  File "F:\pythonProject\parcer_tg\venv\lib\site-packages\telethon\requestiter.py", line 58, in __anext__
    if await self._init(**self.kwargs):
  File "F:\pythonProject\parcer_tg\venv\lib\site-packages\telethon\client\messages.py", line 27, in _init
    self.entity = await self.client.get_input_entity(entity)
  File "F:\pythonProject\parcer_tg\venv\lib\site-packages\telethon\client\users.py", line 445, in get_input_entity
    peer = utils.get_peer(peer)
  File "F:\pythonProject\parcer_tg\venv\lib\site-packages\telethon\utils.py", line 987, in get_peer
    _raise_cast_fail(peer, 'Peer')
  File "F:\pythonProject\parcer_tg\venv\lib\site-packages\telethon\utils.py", line 131, in _raise_cast_fail
    raise TypeError('Cannot cast {} to any kind of {}.'.format(
TypeError: Cannot cast list to any kind of Peer.


Мой код:
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 = ["XXXX"]
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))
            except:
                print(f'Waiting for')
        await parcer_functions.parse(client, url)
        print(f"Сообщение было отправлено в канале")
        err = event.text
        print(err)
        await client.run_until_disconnected()


with client:
   client.loop.run_until_complete(main(events))
  • Вопрос задан
  • 85 просмотров
Пригласить эксперта
Ответы на вопрос 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Ошибка тут F:\pythonProject\parcer_tg\parcer_functions.py
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы