0

I'm using Telethon API Want to extract pinned messages of all the channels i am member. Please guide me with the procedure.

Thank you.

4

2 回答 2

3

As of Telethon 1.2, the code is a lot simpler:

from telethon import TelegramClient, types, sync
with TelegramClient('name', api_id, api_hash) as client:
    message = client.get_messages('TelethonChat', ids=types.InputMessagePinned())

This won't work for private chats, however (e.g. to fetch the pinned message with yourself). For that, as the currently accepted answer hints, we have to fetch the Full object. For the case of the private chat, this is UserFull by using GetFullUserRequest:

chat = 'me'
full = client(functions.users.GetFullUserRequest(chat))
message = client.get_messages(chat, ids=full.pinned_msg_id)
于 2018-08-18T20:40:52.627 回答
1

use can use GetFullChannelRequest and GetHistoryRequest methods to extract pinned message from one channel

from telethon import TelegramClient
from telethon.tl.functions.channels import GetFullChannelRequest
from telethon.tl.functions.messages import GetHistoryRequest
from telethon.tl.types import PeerChannel

api_id = XXXXX
api_hash = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
phone_number = '+98XXXXXXXX'
################################################

client = TelegramClient('session_name',
                    api_id,
                    api_hash
                    )

assert client.connect()
if not client.is_user_authorized():
    client.send_code_request(phone_number)
    me = client.sign_in(phone_number, input('Enter code: '))

channel_entity = client.get_entity(PeerChannel(channel_id))

channel_info = client(GetFullChannelRequest(channel_entity))

pinned_msg_id = channel_info.full_chat.pinned_msg_id

if pinned_msg_id is not None:
    posts = client(GetHistoryRequest(
        channel_entity,
        limit=1,
        offset_date=None,
        offset_id=pinned_msg_id + 1,
        max_id=0,
        min_id=0,
        add_offset=0,
        hash=0
    ))
    print(posts.messages[0].to_dict())

I used Telethon V0.19, but the previous versions are pretty much the same

于 2018-05-12T22:36:49.363 回答