2017-10-13 55 views
2

我嘗試通過通道ID來獲得渠道的名字:如何使用Telethon獲取轉發郵件的頻道/聊天/用戶名?

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(...), 'Invalid channel object. Make sure to pass the right types, for instance making sure that the request is designed for channels or otherwise look for a different one more suited.'

如何獲得渠道的名稱是否正確?

回答

0

回答here

實施例:

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 
相關問題