如何用Python无需Telegram Bot保存消息并使用个人账号发消息?
不用Telegram Bot,用Python个人账号收发消息的实现方案
当然可以!你完全不需要依赖Telegram Bot,直接用个人账号就能实现消息的监听保存和回复——Python的Telethon库专门封装了Telegram的用户API,完美适配这个需求。下面是具体的实现步骤:
准备工作
- 首先需要获取你的Telegram API凭证:
- 访问
my.telegram.org并登录你的个人Telegram账号 - 点击「API development tools」,创建一个新应用(随便填名称和描述即可)
- 创建完成后,你会得到
API_ID和API_HASH,这两个值后续要用到
- 访问
安装依赖库
在终端执行以下命令安装Telethon:
pip install telethon
完整示例代码
这段代码会监听指定用户的消息,自动保存消息内容,并回复预设的内容:
from telethon import TelegramClient, events import asyncio # 替换为你自己的API信息和会话名称 API_ID = 123456 # 替换成你获取到的API ID API_HASH = 'your_api_hash_string_here' # 替换成你获取到的API Hash SESSION_NAME = 'my_personal_telegram_session' # 会话文件,第一次运行会生成 # 要监听的目标用户(可以是用户名、手机号或用户ID) TARGET_USER = 'David' async def main(): # 初始化客户端,第一次运行会引导你登录(输入手机号、验证码) async with TelegramClient(SESSION_NAME, API_ID, API_HASH) as client: print("✅ 已登录成功,开始监听目标用户的消息...") # 监听来自目标用户的新消息 @client.on(events.NewMessage(from_users=TARGET_USER)) async def handle_target_message(event): # 按你想要的格式整理并保存消息 saved_message = f"{event.sender.first_name}: {event.text}" print(f"📥 收到消息并保存:{saved_message}") # 将消息写入本地文件(也可以改成存入数据库) with open('telegram_chat_history.txt', 'a', encoding='utf-8') as f: f.write(saved_message + '\n') # 回复消息,用你指定的格式 reply_content = "I'm fine! How are you? " await event.reply(f"Me: {reply_content}") print(f"📤 已回复:Me: {reply_content}") # 保持客户端持续运行 await client.run_until_disconnected() if __name__ == '__main__': asyncio.run(main())
关键说明
- 登录验证:第一次运行代码时,会在终端提示你输入手机号(带国家码,比如+86),然后输入Telegram收到的验证码,验证通过后会生成一个会话文件,后续运行无需重复登录。
- 消息匹配:
from_users=TARGET_USER可以精准匹配指定用户,你也可以改成用户ID(更稳定,避免用户名变更),用户ID可以通过Telethon的客户端方法获取。 - 数据保存:示例中是把消息写入本地文本文件,你可以根据需求改成存入数据库(如SQLite、MySQL)。
- 合规提示:请严格遵守Telegram的服务条款,不要用这个脚本进行批量发送、垃圾消息等违规操作,否则你的个人账号可能会被封禁。
内容的提问来源于stack exchange,提问作者zRicky
相关产品推荐
相关产品推荐

