Не следует смешивать понятия «отмеченные идентификаторы» и Peer
экземпляров вместе. Вы можете использовать:
@client.on(events.NewMessage(chats=[PeerChannel(123456789)]))
async def my_event_handler(event):
print(event.raw_text)
Или:
@client.on(events.NewMessage(chats=[-100123456789]))
async def my_event_handler(event):
print(event.raw_text)
Но не оба.
- Префикс
-100
сообщает Telethon, что это Channel
(мегагруппы, также известные как супергруппы, также Channel
). - Префикс
-
сообщает Telethon, что это Chat
. - Префикс
+
сообщает Telethon, что это User
.
Это соответствует тому же соглашению, что и Telegram HTTP Bot API .
Если вы не используете префикс, Telethon будет искать в кэше все типы. Если он не находится в кеше, он попытается использовать User
.
Если вы используете префикс, Telethon будет получать этот тип только из кеша. Если он не находится в кеше, он попытается использовать тип, который говорит ваш префикс.
Внутренне,
-100123 == PeerChannel(123)
-123 == PeerChat(123)
123 == PeerUser(123)
event.chat_id
, event.user_id
, client.get_peer_id
все возвращают префиксные идентификаторы, потому что это полезно для библиотеки и удобно для пользователя.
Обновления - это «необработанные» объекты из Telegram, а это подлинные реальные значения.