簡體   English   中英

如何使用 Telethon 獲取轉發消息的頻道/聊天/用戶名?

[英]How to get channel/chat/user name of forwarded message using Telethon?

我嘗試通過頻道 ID 獲取頻道名稱:

result = self._client(GetHistoryRequest(
        entity,
        limit=100,
        offset_date=None,
        offset_id=0,
        max_id=0,
        min_id=last_read_message_id,
        add_offset=0
    ))
for message in result.messages:
    if isinstance(message.fwd_from, MessageFwdHeader):
        fwd_channel_id = message.fwd_from.channel_id
        if fwd_channel_id:
            fwd_result = self._client(GetFullChannelRequest( # problem!!!
                InputPeerChannel(message.fwd_from.channel_id, 0)
            ))

message.fwd_from看起來像:

fwd_from=MessageFwdHeader(
  channel_id=1053596007, 
  date=datetime.fromtimestamp(1507891987.0), 
  post_author=None, # None!!!
  from_id=None, 
  channel_post=3030
), 

所以,我不能從message.fwd_from獲取頻道名稱。 我不加入這個頻道。

當我嘗試調用GetFullChannelRequest時,出現下一個錯誤:

ChannelInvalidError(...), '無效通道 object。確保傳遞正確的類型,例如確保請求是為通道設計的,或者尋找更適合的不同通道。

如何正確獲取頻道名稱?

在這里回答

例:

result = self._client(GetHistoryRequest(
        entity,
        limit=100,
        offset_date=None,
        offset_id=0,
        max_id=0,
        min_id=last_read_message_id,
        add_offset=0
    ))
for message in result.messages:
    if isinstance(message.fwd_from, MessageFwdHeader):
            entity = self._client.get_input_entity(
                PeerChannel(message.fwd_from.channel_id)
            )
            if message.fwd_from.channel_id:
                fwd_result = self._client(GetFullChannelRequest(entity))
                if hasattr(fwd_result, 'chats') and len(fwd_result.chats) > 0:
                    fwd_title = fwd_result.chats[0].title

上一版telethon可以在消息object中搜索,例如頻道名稱是

message.forward.chat.title

對於用戶

message.forward.sender.first_name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM