📅  最后修改于: 2023-12-03 15:23:57.848000             🧑  作者: Mango
Telethon 是一个 Python 3 的异步电报客户端,在使用电报 API 时快速、轻松和有趣。这篇文章介绍了如何使用 Telethon 从电报组获取所有消息。Telethon 的官方文档详细介绍了一些高级用法,这里将摘取其中的部分内容进行介绍。
使用 pip 安装 Telethon:
pip install telethon
在使用电报 API 之前需要先创建一个应用程序,官方文档提供了创建应用程序的详细步骤。创建应用程序后,需要设置 API ID 和 API HASH,示例代码如下:
from telethon import TelegramClient
api_id = 12345 # 替换成你的 API ID
api_hash = '0123456789abcdef0123456789abcdef' # 替换你的 API HASH
client = TelegramClient('session_name', api_id, api_hash)
可以通过访问 https://my.telegram.org/apps 来查看应用程序的 API ID 和 API HASH。
要从电报组中获取所有消息,需要调用 iter_messages
方法,该方法会返回一个迭代器,用于遍历电报组中的所有消息。示例代码如下:
from telethon import TelegramClient
api_id = 12345 # 替换成你的 API ID
api_hash = '0123456789abcdef0123456789abcdef' # 替换你的 API HASH
client = TelegramClient('session_name', api_id, api_hash)
async def get_all_messages(entity):
async for message in client.iter_messages(entity):
print(message.text)
with client:
entity = 'group_name' # 替换成你的电报组名或 ID
client.loop.run_until_complete(get_all_messages(entity))
此示例使用 async for
循环遍历在 client.iter_messages
中返回的所有消息。每条消息都是一个 telethon.tl.custom.message.Message
对象,它具有许多有用的属性,例如 text
属性。
Telethon 提供了许多其他用法,例如:
[chats](https://docs.telethon.dev/en/latest/modules/client.html#telethon.client.messages.MessageMethods.get_chats)
方法从电报服务器检索通话和电报组等。可以使用 entity
属性获取每个聊天的实体。示例代码如下:from telethon import TelegramClient
api_id = 12345 # 替换成你的 API ID
api_hash = '0123456789abcdef0123456789abcdef' # 替换你的 API HASH
client = TelegramClient('session_name', api_id, api_hash)
async def get_all_chats():
async for chat in client.get_chats():
entity = chat.entity
print(entity.id, entity.title)
with client:
client.loop.run_until_complete(get_all_chats())
[functions.messages.GetDialogs](https://docs.telethon.dev/en/latest/modules/functions/messages.html#telethon.client.messages._FunctionsMessages.GetDialogs)
方法从电报服务器检索对话。类似 iter_messages
,该方法返回一个迭代器,可以使用它来遍历对话。示例代码如下:from telethon import TelegramClient
from telethon.tl.types import InputPeerEmpty
api_id = 12345 # 替换成你的 API ID
api_hash = '0123456789abcdef0123456789abcdef' # 替换你的 API HASH
client = TelegramClient('session_name', api_id, api_hash)
async def get_all_dialogs():
dialogs = await client(functions.messages.GetDialogs(
offset_date=None,
offset_id=0,
offset_peer=InputPeerEmpty(),
limit=100,
hash=0
))
for dialog in dialogs.dialogs:
entity = dialog.entity
print(entity.id, entity.title)
with client:
client.loop.run_until_complete(get_all_dialogs())
本文介绍了如何使用 Telethon 从电报组中获取所有消息,以及一些其他用例。Telethon 的官方文档包含更多用法和示例代码,可以在 https://docs.telethon.dev/en/latest/ 上进行查阅。