如何使用 Telethon 获取传入 Telegram 消息的聊天或组名称?

Ива*_*хин 3 python telegram telethon

我有这个代码

from telethon.sync import TelegramClient, events

with TelegramClient('name', api_id, api_hash) as client:
   @client.on(events.NewMessage(pattern=pattern))
   async def handler(event):
      await event.reply("Here should be the Chat or Group name")
Run Code Online (Sandbox Code Playgroud)

如何实施?

Ape*_*kov 6

如果我们只讨论组/频道

chat_from = event.chat if event.chat else (await event.get_chat()) # telegram MAY not send the chat enity
chat_title = chat_from.title
Run Code Online (Sandbox Code Playgroud)

否则(如果我们想获取聊天实体的全名,包括用户):

from telethon import utils

chat_from = event.chat if event.chat else (await event.get_chat()) # telegram MAY not send the chat enity
chat_title = utils.get_display_name(chat_from)
Run Code Online (Sandbox Code Playgroud)

get_display_name() 实际上得到一个你会看到的名字。适用于User, Channel, Chat 该方法不应具有的类型await

  • 值得一提的是,如果“event.chat 不是 None 且不是 event.chat.min”,则“event.get_chat()”不会发出请求(我相信即使使用“min”,标题也始终存在,因此这种方法是最好的)。 (2认同)