LonamiWebs / Telethon

Pure Python 3 MTProto API Telegram client library, for bots too!
https://docs.telethon.dev
MIT License
9.77k stars 1.39k forks source link

Can't get messages by chat_id #1597

Closed alifanov closed 3 years ago

alifanov commented 3 years ago

Checklist

Code that causes the issue

from telethon.sync import TelegramClient
client.get_messages(1332623391)

Traceback

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-13-0cf4e0dde6a1> in <module>
----> 1 client.get_messages(1332623391)

~/PycharmProjects/answery/venv/lib/python3.7/site-packages/telethon/sync.py in syncified(*args, **kwargs)
     37             return coro
     38         else:
---> 39             return loop.run_until_complete(coro)
     40 
     41     # Save an accessible reference to the original method

/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/asyncio/base_events.py in run_until_complete(self, future)
    577             raise RuntimeError('Event loop stopped before Future completed.')
    578 
--> 579         return future.result()
    580 
    581     def stop(self):

~/PycharmProjects/answery/venv/lib/python3.7/site-packages/telethon/client/messages.py in get_messages(self, *args, **kwargs)
    529                 return None
    530 
--> 531         return await it.collect()
    532 
    533     get_messages.__signature__ = inspect.signature(iter_messages)

~/PycharmProjects/answery/venv/lib/python3.7/site-packages/telethon/requestiter.py in collect(self)
    111         """
    112         result = helpers.TotalList()
--> 113         async for message in self:
    114             result.append(message)
    115 

~/PycharmProjects/answery/venv/lib/python3.7/site-packages/telethon/requestiter.py in __anext__(self)
     56         if self.buffer is None:
     57             self.buffer = []
---> 58             if await self._init(**self.kwargs):
     59                 self.left = len(self.buffer)
     60 

~/PycharmProjects/answery/venv/lib/python3.7/site-packages/telethon/client/messages.py in _init(self, entity, offset_id, min_id, max_id, from_user, offset_date, add_offset, filter, search)
     23         # Note that entity being `None` will perform a global search.
     24         if entity:
---> 25             self.entity = await self.client.get_input_entity(entity)
     26         else:
     27             self.entity = None

~/PycharmProjects/answery/venv/lib/python3.7/site-packages/telethon/client/users.py in get_input_entity(self, peer)
    444             'docs.telethon.dev/en/latest/concepts/entities.html to'
    445             ' find out more details.'
--> 446             .format(peer)
    447         )
    448 

ValueError: Could not find the input entity for <telethon.tl.types.PeerUser object at 0x10b312c50>. Please read https://docs.telethon.dev/en/latest/concepts/entities.html to find out more details.

If I specify type of input

client.get_messages(types.InputPeerChat(1332623391))

I get another error

---------------------------------------------------------------------------
ChatIdInvalidError                        Traceback (most recent call last)
<ipython-input-14-7357200e5a69> in <module>
----> 1 client.get_messages(types.InputPeerChat(1332623391))

~/PycharmProjects/answery/venv/lib/python3.7/site-packages/telethon/sync.py in syncified(*args, **kwargs)
     37             return coro
     38         else:
---> 39             return loop.run_until_complete(coro)
     40 
     41     # Save an accessible reference to the original method

/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/asyncio/base_events.py in run_until_complete(self, future)
    577             raise RuntimeError('Event loop stopped before Future completed.')
    578 
--> 579         return future.result()
    580 
    581     def stop(self):

~/PycharmProjects/answery/venv/lib/python3.7/site-packages/telethon/client/messages.py in get_messages(self, *args, **kwargs)
    529                 return None
    530 
--> 531         return await it.collect()
    532 
    533     get_messages.__signature__ = inspect.signature(iter_messages)

~/PycharmProjects/answery/venv/lib/python3.7/site-packages/telethon/requestiter.py in collect(self)
    111         """
    112         result = helpers.TotalList()
--> 113         async for message in self:
    114             result.append(message)
    115 

~/PycharmProjects/answery/venv/lib/python3.7/site-packages/telethon/requestiter.py in __anext__(self)
     72             self.index = 0
     73             self.buffer = []
---> 74             if await self._load_next_chunk():
     75                 self.left = len(self.buffer)
     76 

~/PycharmProjects/answery/venv/lib/python3.7/site-packages/telethon/client/messages.py in _load_next_chunk(self)
    163             self.request.add_offset = self.add_offset - self.request.limit
    164 
--> 165         r = await self.client(self.request)
    166         self.total = getattr(r, 'count', len(r.messages))
    167 

~/PycharmProjects/answery/venv/lib/python3.7/site-packages/telethon/client/users.py in __call__(self, request, ordered)
     28 class UserMethods:
     29     async def __call__(self: 'TelegramClient', request, ordered=False):
---> 30         return await self._call(self._sender, request, ordered=ordered)
     31 
     32     async def _call(self: 'TelegramClient', sender, request, ordered=False):

~/PycharmProjects/answery/venv/lib/python3.7/site-packages/telethon/client/users.py in _call(self, sender, request, ordered)
     75                         return results
     76                 else:
---> 77                     result = await future
     78                     self.session.process_entities(result)
     79                     self._entity_cache.add(result)

ChatIdInvalidError: Invalid object ID for a chat. Make sure to pass the right types, for instance making sure that the request is designed for chats (not channels/megagroups) or otherwise look for a different one more suited\nAn example working with a megagroup and AddChatUserRequest, it will fail because megagroups are channels. Use InviteToChannelRequest instead (caused by GetHistoryRequest)

If I use username instead of chat_id I get FloodWait error for 24h after a minute What should I do?

Lonami commented 3 years ago

It's probably a channel and not a chat. To specify the type and use cache, use Peer, as in PeerChannel(id), or mark the ID so the library knows it's a channel, as in -100. Closing since this is working as intended.