You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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,获取方式如下:

  1. 登录my.telegram.org(用你的Telegram账号登录)
  2. 进入「API development tools」页面
  3. 填写应用基本信息(类型选Desktop、名称自定义即可)
  4. 提交后就能拿到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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 02:32:31