在 telethon.events 中使用 "chats" 参数
Using "chats" argument in telethon.events
我是运行这个:
from telethon import TelegramClient, events
from telethon.tl.types import PeerChat, PeerChannel
@client.on(events.ChatAction(chats=[PeerChannel(-1001244988104)]))
async def handle_chat_action(event):
print(event)
print(event.user_left)
@client.on(events.NewMessage(chats=[PeerChat(-100123456789)]))
async def my_event_handler(event):
print(event.raw_text)
client.start()
client.run_until_disconnected()
但是,没有收到更新,为什么?这里有什么问题?
起初,我尝试了 chats=[-100123456]
(没有 PeerChat),但没有得到更新...
您不应将 "marked IDs" 和 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
都是 return 前缀的 ID,因为它对图书馆有帮助,对用户也很方便。
更新是来自 Telegram 的 "raw" 对象,它们是原始的真实值。
我是运行这个:
from telethon import TelegramClient, events
from telethon.tl.types import PeerChat, PeerChannel
@client.on(events.ChatAction(chats=[PeerChannel(-1001244988104)]))
async def handle_chat_action(event):
print(event)
print(event.user_left)
@client.on(events.NewMessage(chats=[PeerChat(-100123456789)]))
async def my_event_handler(event):
print(event.raw_text)
client.start()
client.run_until_disconnected()
但是,没有收到更新,为什么?这里有什么问题?
起初,我尝试了 chats=[-100123456]
(没有 PeerChat),但没有得到更新...
您不应将 "marked IDs" 和 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
都是 return 前缀的 ID,因为它对图书馆有帮助,对用户也很方便。
更新是来自 Telegram 的 "raw" 对象,它们是原始的真实值。