为什么需要任务计划程序?
Telegram虽然功能强大,但无论电脑版还是手机版,官方都未内置“定时发送”选项。对于需要定时发送提醒、定时群发通知、或者在不同时区安排消息的用户来说,这无疑是个遗憾。不过,Windows系统自带的任务计划程序可以帮我们实现这个需求:通过设定触发器,让系统在指定时间自动运行我们编写的脚本,从而向Telegram发送消息。下面介绍三种可靠方法,你可以根据技术背景自由选择。
准备工作
在开始之前,请确保:
- 你的电脑运行Windows 10或Windows 11。
- 已经安装了最新版Telegram桌面客户端(可从官网下载)。
- 如果你选择方法一或方法三,需要有一个Telegram账号,并能访问BotFather(用于创建机器人)。
- 如果选择方法二,需要下载并安装AutoHotkey(官网:autohotkey.com)。
另外,任务计划程序可以在“开始菜单”搜索“任务计划程序”打开,也可以按Win+R输入taskschd.msc启动。
方法一:通过Telegram Bot API定时发送(推荐)
使用Bot API是最稳定、最安全的方式。你只需要一个机器人Token,然后通过HTTP请求发送消息,完全独立于Telegram客户端,即使你不在线也能发送。
步骤1:创建Bot并获取Token
- 在Telegram中搜索并打开@BotFather。
- 发送
/newbot,按照提示填写Bot的名称和用户名。 - 创建成功后,BotFather会返回一个HTTP API Token,形如
123456789:ABCdef...,请妥善保存。
步骤2:获取你的Chat ID
- 将你的Bot添加到通讯录,给它发送一条任意消息。
- 访问以下URL(用你的Token替换):
https://api.telegram.org/bot<你的Token>/getUpdates - 在返回的JSON中找到
chat对象中的id字段,这就是你的Chat ID(通常是数字)。 - 如果你要给群组发送,需要先将Bot拉入群组,然后获取群组的Chat ID(一般以负号开头)。
步骤3:编写Python发送脚本
确保电脑安装了Python 3并已添加到环境变量。然后写一个简单的脚本send_telegram.py:
import requests
TOKEN = "你的Token"
CHAT_ID = "你的ChatID"
MESSAGE = "这是定时消息"
url = f"https://api.telegram.org/bot/sendMessage"
payload = {"chat_id": CHAT_ID, "text": MESSAGE}
requests.post(url, data=payload)
如果你还没有安装requests库,在命令行执行pip install requests。你也可以使用标准库urllib,但requests更简洁。
步骤4:配置任务计划程序
- 打开“任务计划程序”,点击右侧的“创建基本任务…”。
- 输入任务名称和描述,例如“Telegram定时提醒”。
- 设置触发器,可以选择“每天”、“每周”或“一次”,指定具体执行时间。
- 在“操作”选择“启动程序”,在“程序或脚本”中填写
python.exe的完整路径(可在命令行输入where python查询),在“添加参数”中填写脚本的绝对路径,如C:\Scripts\send_telegram.py。 - 点击完成,即可看到任务已创建。你可以右键任务选择“运行”来测试。
优点:稳定可靠,不依赖客户端状态,适合服务器环境。缺点是需要一定的编程基础,且使用第三方库。
方法二:使用AutoHotkey模拟发送(适用于客户端窗口)
如果你不想用API,希望直接在Telegram桌面客户端里模拟键盘操作,AutoHotkey(AHK)是个好选择。它通过模拟按键和鼠标操作来实现自动发送。
步骤1:编写AHK脚本
创建文件send_tg.ahk,内容如下:
; 脚本:向Telegram指定聊天框发送消息
^+s:: ; 快捷键 Ctrl+Alt+S
if WinExist("Telegram")
{
WinActivate
Send, ^a ; 全选(如果有内容)
Send,
SendRaw, 这是定时消息
Send,
}
return
这个脚本定义了一个热键Ctrl+Alt+S,当按下时会自动切换到Telegram窗口,清空输入框,输入消息并回车发送。如果你需要定时触发,不能在脚本里直接写定时逻辑,而是通过任务计划程序调用。
步骤2:设置任务计划程序
- 打开任务计划程序,创建基本任务,设置好触发器。
- 在“操作”中,程序或脚本填写
autohotkey.exe的路径(通常在C:\Program Files\AutoHotkey\AutoHotkey.exe),参数填写你的脚本路径。 - 注意:脚本中的热键需要被触发才能执行。你可以在脚本开头加入定时逻辑,或者让任务计划程序直接运行一个修改过的脚本。更简单的方式是:在任务计划程序中使用
schtasks命令配合timeout和模拟按键,但比较复杂,不如用AHK的SetTimer功能。
实际上,更好的做法是在AHK脚本中直接使用SetTimer设定循环,然后由任务计划程序在系统启动时运行该脚本。例如:
#Persistent
SetTimer, SendMsg, 86400000 ; 每24小时执行一次
return
SendMsg:
if WinExist("Telegram")
{
WinActivate
Send, ^a
SendRaw, 每日提醒
Send,
}
return
然后在任务计划程序中设置“计算机启动时”运行此AHK脚本即可。
优点:能控制客户端界面,支持更复杂的操作如发送文件、点击按钮。缺点是比较脆弱,如果Telegram界面变化可能需要调整坐标,且电脑必须保持登录状态。
方法三:使用PowerShell调用Telegram API(无需Python)
Windows自带PowerShell,可以直接发送HTTP请求,无需安装Python。对于想避免额外依赖的用户,这个方法很合适。
步骤1:准备PowerShell脚本
创建文件send_tg.ps1,内容如下:
$token = "你的Token"
$chatId = "你的ChatID"
$message = "定时消息"
$uri = "https://api.telegram.org/bot$token/sendMessage"
$body = @{ chat_id = $chatId; text = $message }
Invoke-RestMethod -Uri $uri -Method Post -Body $body
步骤2:配置任务计划程序
- 创建基本任务,设置触发器。
- 在“操作”中,程序或脚本填写
powershell.exe,参数填写-ExecutionPolicy Bypass -File "C:\Scripts\send_tg.ps1"。 - 完成后测试运行。
如果PowerShell提示禁止执行脚本,先临时运行Set-ExecutionPolicy RemoteSigned,或者直接在任务计划程序的参数中使用-ExecutionPolicy Bypass。
优点:无需额外安装,脚本简洁。缺点是需要熟悉PowerShell命令。
常见问题与排查技巧
1. 发送的消息被忽略或没反应?
如果使用API方法,请先手动在浏览器中访问https://api.telegram.org/bot<token>/getUpdates,确认能收到消息,再检查脚本中的Token和Chat ID是否有误。
2. 任务计划程序无法运行脚本?
检查“操作”中的程序路径是否正确,尤其是Python路径。右键任务选择“运行”,观察是否报错。还可以在任务计划程序中勾选“不管用户是否登录都要运行”,但需要设置密码。
3. 电脑关机或休眠时任务会执行吗?
不会。任务计划程序在系统进入睡眠/休眠时不会触发。你可以在“条件”选项卡中勾选“唤醒计算机以运行此任务”,但需要主板支持。
4. 如何取消定时发送?
在任务计划程序中禁用或删除对应任务即可。
总结
利用Windows任务计划程序,你完全可以实现Telegram定时发送消息的功能。三种方法各有优劣:Bot API最稳定,适合自动化程度要求高的场景;AutoHotkey能模拟真实客户端操作,灵活但依赖界面;PowerShell则无需额外编程环境,轻量易用。建议没有编程经验的朋友优先尝试方法三,仅需复制脚本修改参数即可。掌握这些技巧后,你还可以举一反三,实现定时接收消息、定时发送文件等更多自动化操作,让Telegram真正成为提升效率的利器。