使用 Telethon 从聊天中仅获取未读消息可以通过以下步骤实现。Telethon 是一个用于与 Telegram API 交互的 Python 库。以下是详细的步骤和示例代码:
首先,确保你已经安装了 Telethon:
pip install telethon
你需要在 Telegram 上创建一个应用以获取 API ID 和 API Hash。你可以在 my.telegram.org 上创建应用并获取这些信息。
以下是一个示例代码,展示如何使用 Telethon 从聊天中仅获取未读消息:
from telethon import TelegramClient, events
from telethon.tl.functions.messages import GetHistoryRequest
from telethon.tl.types import PeerUser, PeerChat, PeerChannel
# 你的API ID和API Hash
api_id = 'YOUR_API_ID'
api_hash = 'YOUR_API_HASH'
# 创建客户端
client = TelegramClient('session_name', api_id, api_hash)
async def get_unread_messages(chat_id):
# 获取聊天历史
result = await client(GetHistoryRequest(
peer=chat_id,
limit=100, # 获取最近100条消息
offset_date=None,
offset_id=0,
max_id=0,
min_id=0,
add_offset=0,
hash=0
))
# 过滤未读消息
unread_messages = [message for message in result.messages if not message.out and message.unread]
return unread_messages
async def main():
# 连接到Telegram
await client.start()
# 替换为你要获取消息的聊天ID
chat_id = 'CHAT_ID'
# 获取未读消息
unread_messages = await get_unread_messages(chat_id)
# 打印未读消息
for message in unread_messages:
print(f"Message ID: {message.id}, Message: {message.message}")
# 断开连接
await client.disconnect()
# 运行主函数
with client:
client.loop.run_until_complete(main())
GetHistoryRequest
获取聊天历史。你可以调整 limit
参数以获取更多或更少的消息。unread
属性来过滤未读消息。message.out
属性用于检查消息是否是由你发送的,未读消息通常是接收的消息。领取专属 10元无门槛券
手把手带您无忧上云