如何用Python在Telegram中以个人身份发送定时消息(无需机器人)
用Python以个人账号发送Telegram定时消息(无需机器人)
要实现以个人身份发送Telegram定时消息,你可以使用telethon库——这是一个非官方的Telegram客户端API,支持通过个人账号会话进行操作,完全不需要创建机器人或和BotFather交互。
步骤1:安装依赖
首先安装telethon库:
pip install telethon
如果需要用Python内置逻辑之外的定时方案,可额外安装schedule库简化定时配置:
pip install schedule
步骤2:获取个人API凭证
个人账号需要使用Telegram官方的API ID和Hash,获取方式如下:
- 登录
my.telegram.org(用你的Telegram账号登录) - 进入「API development tools」页面
- 填写应用基本信息(类型选Desktop、名称自定义即可)
- 提交后就能拿到
api_id(数字)和api_hash(字符串)
步骤3:生成登录会话(仅第一次需要)
运行以下代码,第一次执行时会提示输入手机号和验证码(开启两步验证的话还需输入密码),完成后会生成会话文件,后续运行脚本无需重复验证:
from telethon import TelegramClient # 替换成你自己的API信息 API_ID = 1234567 API_HASH = 'abcdefghijklmnopqrstuvwxyz123456' SESSION_NAME = 'my_telegram_session' # 会话文件名,会自动保存 client = TelegramClient(SESSION_NAME, API_ID, API_HASH) async def main(): await client.start() print("登录成功,会话已保存") with client: client.loop.run_until_complete(main())
步骤4:编写定时发送脚本
方案A:用schedule库实现脚本内定时
适合需要脚本持续运行的场景,比如每天固定时间发送:
import schedule import time from telethon import TelegramClient API_ID = 1234567 API_HASH = 'abcdefghijklmnopqrstuvwxyz123456' SESSION_NAME = 'my_telegram_session' TARGET_USER = 'username_of_recipient' # 替换成目标用户的用户名,或直接用用户ID(数字) client = TelegramClient(SESSION_NAME, API_ID, API_HASH) async def send_scheduled_message(): await client.start() await client.send_message(TARGET_USER, "这是每日定时发送的消息") print("消息发送完成") # 设置每日定时,比如早上9点发送 schedule.every().day.at("09:00").do(lambda: client.loop.run_until_complete(send_scheduled_message())) if __name__ == "__main__": while True: schedule.run_pending() time.sleep(60) # 每分钟检查一次任务是否需要执行
方案B:用系统定时任务(推荐)
如果你只需要每日运行一次,更推荐用系统自带的定时工具(Linux的crontab、Windows的任务计划程序),脚本无需持续运行。编写发送消息的脚本:
from telethon import TelegramClient API_ID = 1234567 API_HASH = 'abcdefghijklmnopqrstuvwxyz123456' SESSION_NAME = 'my_telegram_session' TARGET_USER = 'username_of_recipient' client = TelegramClient(SESSION_NAME, API_ID, API_HASH) async def main(): await client.start() await client.send_message(TARGET_USER, "每日定时消息") with client: client.loop.run_until_complete(main())
然后设置系统定时任务,每天指定时间运行这个脚本即可。
注意事项
- 会话文件(
my_telegram_session.session)是你的登录凭证,不要泄露给他人 - 不要短时间内发送大量消息,避免触发Telegram的反垃圾机制导致账号受限
- 目标用户需要是你的联系人,或者你知道他们的公开用户名/用户ID,否则无法发送消息
- 如果你的账号开启了两步验证,第一次运行脚本时需要输入验证密码
内容的提问来源于stack exchange,提问作者Starter Gear
相关产品推荐
相关产品推荐

