想要从 Telegram 上的 groups/channels 中提取固定消息,我正在使用 Telethon
Want to extract pinned messages from the groups/channels on Telegram i am part of using Telethon
我正在使用 Telethon API
想要提取我是会员的所有频道的固定消息。
请指导我的程序。
谢谢。
use 可以使用 GetFullChannelRequest
和 GetHistoryRequest
方法从一个频道中提取固定消息
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())
我用的是Telethon V0.19
,但是之前的版本都差不多
从 Telethon 1.2 开始,代码简单多了:
from telethon import TelegramClient, types, sync
with TelegramClient('name', api_id, api_hash) as client:
message = client.get_messages('TelethonChat', ids=types.InputMessagePinned())
但是,这不适用于私人聊天(例如,获取与自己固定的消息)。为此,正如当前接受的答案提示,我们必须获取 Full
对象。对于私聊,这是UserFull
by using GetFullUserRequest
:
chat = 'me'
full = client(functions.users.GetFullUserRequest(chat))
message = client.get_messages(chat, ids=full.pinned_msg_id)
我正在使用 Telethon API 想要提取我是会员的所有频道的固定消息。 请指导我的程序。
谢谢。
use 可以使用 GetFullChannelRequest
和 GetHistoryRequest
方法从一个频道中提取固定消息
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())
我用的是Telethon V0.19
,但是之前的版本都差不多
从 Telethon 1.2 开始,代码简单多了:
from telethon import TelegramClient, types, sync
with TelegramClient('name', api_id, api_hash) as client:
message = client.get_messages('TelethonChat', ids=types.InputMessagePinned())
但是,这不适用于私人聊天(例如,获取与自己固定的消息)。为此,正如当前接受的答案提示,我们必须获取 Full
对象。对于私聊,这是UserFull
by using GetFullUserRequest
:
chat = 'me'
full = client(functions.users.GetFullUserRequest(chat))
message = client.get_messages(chat, ids=full.pinned_msg_id)