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

Почему постоянно вылезают ошибки KeyError и ValueError Pyrogram?

Есть функция:
async def get_chats():
    result = []
    async with app:
        async for i in app.get_dialogs():
            try:
                if i.chat.type == 'group' or i.char.type == 'supergroup' and i.chat.username != 'sqlalchemy_help':
                    result.append(i.chat.username)
            except:
                print('Что то не так')
        print(set(result))
        print(await app.get_chat("chat_standoff25"))


Эта функция просто выдаёт мне с каждой итерации вот такие Error и все:

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\shond\Desktop\bots\UserBot\venv\Lib\site-packages\pyrogram\client.py", line 569, in handle_updates
    channel=await self.resolve_peer(utils.get_channel_id(channel_id)),
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\shond\Desktop\bots\UserBot\venv\Lib\site-packages\pyrogram\methods\advanced\resolve_peer.py", line 89, in resolve_peer
    peer_type = utils.get_peer_type(peer_id)
  File "C:\Users\shond\Desktop\bots\UserBot\venv\Lib\site-packages\pyrogram\utils.py", line 246, in get_peer_type
    raise ValueError(f"Peer id invalid: {peer_id}")
ValueError: Peer id invalid: -1002571683557
Task exception was never retrieved
future: <Task finished name='Task-298' coro=<Client.handle_updates() done, defined at C:\Users\shond\Desktop\bots\UserBot\venv\Lib\site-packages\pyrogram\client.py:535> exception=ValueError('Peer id invalid: -1002439445843')>
Traceback (most recent call last):
  File "C:\Users\shond\Desktop\bots\UserBot\venv\Lib\site-packages\pyrogram\methods\advanced\resolve_peer.py", line 62, in resolve_peer
    return await self.storage.get_peer_by_id(peer_id)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\shond\Desktop\bots\UserBot\venv\Lib\site-packages\pyrogram\storage\sqlite_storage.py", line 142, in get_peer_by_id
    raise KeyError(f"ID not found: {peer_id}")
KeyError: 'ID not found: -1002439445843'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\shond\Desktop\bots\UserBot\venv\Lib\site-packages\pyrogram\client.py", line 569, in handle_updates
    channel=await self.resolve_peer(utils.get_channel_id(channel_id)),
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\shond\Desktop\bots\UserBot\venv\Lib\site-packages\pyrogram\methods\advanced\resolve_peer.py", line 89, in resolve_peer
    peer_type = utils.get_peer_type(peer_id)
  File "C:\Users\shond\Desktop\bots\UserBot\venv\Lib\site-packages\pyrogram\utils.py", line 246, in get_peer_type
    raise ValueError(f"Peer id invalid: {peer_id}")
ValueError: Peer id invalid: -1002439445843
Task exception was never retrieved
future: <Task finished name='Task-331' coro=<Client.handle_updates() done, defined at C:\Users\shond\Desktop\bots\UserBot\venv\Lib\site-packages\pyrogram\client.py:535> exception=ValueError('Peer id invalid: -1002462611159')>
Traceback (most recent call last):
  File "C:\Users\shond\Desktop\bots\UserBot\venv\Lib\site-packages\pyrogram\methods\advanced\resolve_peer.py", line 62, in resolve_peer
    return await self.storage.get_peer_by_id(peer_id)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\shond\Desktop\bots\UserBot\venv\Lib\site-packages\pyrogram\storage\sqlite_storage.py", line 142, in get_peer_by_id
    raise KeyError(f"ID not found: {peer_id}")
KeyError: 'ID not found: -1002462611159'


Что делать?
  • Вопрос задан
  • 46 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
@datel Автор вопроса
Если вкратце, то pyrogram так сделан что у него есть константы на минимальные и максимальные id чатов, каналов и юзеров, а он я так понял не обновлялся и выдаёт ошибку, потому что чатов очень много и эти константы уже неактуальны

def get_peer_type(peer_id: int) -> str:
    if peer_id < 0:
        if MIN_CHAT_ID <= peer_id:
            return "chat"

        if MIN_CHANNEL_ID <= peer_id < MAX_CHANNEL_ID:
            return "channel"
    elif 0 < peer_id <= MAX_USER_ID:
        return "user"

    raise ValueError(f"Peer id invalid: {peer_id}")
Ответ написан
@dim5x
ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
А может ещё потому что:

...or i.cha==> R <==.type == 'supergroup'...

Но какой смысл гадать, код не воспроизводим.
Ответ написан
Ваш ответ на вопрос

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

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