在 telethon.events 中使用“chats”参数

我正在运行这个:


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()

但是,为什么没有获得更新?这是怎么回事?


起初,我尝试(没有PeerChat),但没有得到更新......chats=[-100123456]


守着一只汪
浏览 149回答 1
1回答

慕仙森

不应将“标记 ID”和实例的概念混合在一起。您可以使用: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)但不是两者兼而有之。前缀告诉Telethon它是一个频道(megagroups,也称为supergroups,也是)。-100Channel前缀告诉Telethon这是一个聊天。-前缀告诉Telethon它是一个用户。+这遵循与 Telegram HTTP Bot API 相同的约定。如果您不使用前缀,Telethon将在缓存中查找所有类型。如果它不在缓存中,它将尝试使用 .User如果使用前缀,Telethon 将仅从缓存中获取该类型。如果它不在缓存中,它将尝试使用前缀所说的类型。内部-100123 == PeerChannel(123)-123 == PeerChat(123)123 == PeerUser(123)event.chat_id、,都返回带前缀的 ID,因为它对库有帮助,对用户也很方便。event.user_idclient.get_peer_id更新是来自Telegram的“原始”对象,这些是原始的实际值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python