2017-10-13 3 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 
関連する問題