对于一个有趣的项目,我需要获得最后1小时的电报聊天。所以我想出了我该怎么做。现在我在这里写作。
我使用Python和Telethon库进行此项目。首先将它们安装到系统中。实际上这真的很容易。只需使用这些命令安装PIP和TELETHON即可。
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade telethon
如果安装了cryptg,则库的工作速度会更快,因为加密和解密将在C而不是Python中进行。但是我不需要这一点,因为性能对我来说并不重要。
之后,您将需要API_ID和API_HASH来访问Telethon Library的访问电报API。实际上,这部分比我想象的要容易。
- Login to your Telegram account带有要使用的开发人员帐户的电话号码。不怕在这里写你的电话。因为在这一部分中,我们不使用任何第三方应用程序或库。这是所有电报API环境部分。
- 单击API开发工具。
- 将出现一个创建新应用程序窗口。填写您的申请详细信息。无需输入任何URL,目前只能更改前两个字段(App标题和缩写)。
- 单击末尾创建应用程序。请记住,您的 api哈希是秘密,而电报不会让您撤销它。不要在任何地方发布它!
所以我们现在有API_ID和API_HASH。让我们使用它们。首先,我们为自己编写一个脚本以创建会话。
from telethon import TelegramClient
# Use your own values from my.telegram.org
api_id = 12345
api_hash = '0123456789abcdef0123456789abcdef'
# The first parameter is the .session file name (absolute paths allowed)
with TelegramClient('anon', api_id, api_hash) as client:
client.loop.run_until_complete(client.send_message('me', 'Hello, myself!'))
您必须编写API_ID和API_HASH。并运行程序。
程序将询问您的电话号码,并将验证代码发送到您的电话号码。
成功完成程序后,您将拥有anon.session文件。此文件是您的会话文件。请勿共享此文件和您的键。
您可以在消息框中看到“您好,我自己!”。这是由我们的代码编写的。如果您看到此消息,您将成功加载环境并获得授权。
现在让我们获得一些电报聊天消息。这部分也很容易。您只需要您想要获取消息的聊天名称。
from telethon import TelegramClient
from datetime import datetime, timedelta, timezone
# These example values won't work. You must get your own api_id and
# api_hash from https://my.telegram.org, under API Development.
api_id = 12345
api_hash = '0123456789abcdef0123456789abcdef'
client = TelegramClient('anon.session', api_id, api_hash) # You need run twice because this part create session in first run.
client.start()
user_name = "me" # Write here username you want to get last 1 hour of chat.
for message in client.iter_messages(user_name,offset_date=datetime.now(tz=timezone.utc) - timedelta(hours=1),reverse=True):
print(message.sender_id, ':', message.text)
我也有UTF-8字符和组名称的问题。我找到了解决方案。您可以使用此脚本获取所有聊天名称和聊天ID。
from telethon import TelegramClient
# These example values won't work. You must get your own api_id and
# api_hash from https://my.telegram.org, under API Development.
api_id = 12345
api_hash = '0123456789abcdef0123456789abcdef'
client = TelegramClient('anon.session', api_id, api_hash) # You need run twice because this part create session in first run.
client.start()
for chat in client.iter_dialogs():
print(chat.name," --- ", chat.id)
获得ID后,只需编写而不是user_name。写入整数而不是字符串。
我希望这个小脚本可以帮助您使用电报API。