深度阅读模式返回首页

Telegram机器人定时发送消息设置详解:从零实现自动化推送

本文介绍如何设置Telegram机器人定时发送消息,包括利用Google Apps Script和Python脚本两种实现方案,从创建机器人到配置定时任务逐步讲解,助你轻松实现自动化消息推送。

很多时候,我们希望Telegram机器人能在特定时间自动推送消息,比如每日新闻、工作提醒、定时播报等。然而Telegram官方并没有直接提供“定时发送”按钮,但我们可以借助Bot API和外部脚本轻松实现。本文将从创建机器人开始,详细演示两种最常用的定时发送方案,让你从此告别手动逐条发送的烦恼。

一、准备工作:创建你的Telegram机器人

要在Telegram中使用机器人,首先得有一个属于自己的Bot。打开Telegram,搜索并进入@BotFather,发送 /newbot 指令,按提示填写机器人的显示名称和用户名(用户名必须以 bot 结尾)。创建成功后,你会收到一个API Token,形如 123456789:ABCdef...。这个Token是操作机器人的凭证,请务必妥善保管,不要泄露给任何人。

注意:如果你的Telegram无法访问,请先解决网络问题。本教程适用于已能正常使用Telegram的用户。

二、方案一:利用Google Apps Script实现定时发送(免费且无需服务器)

Google Apps Script是Google提供的一个基于JavaScript的脚本平台,可以为脚本设置定时触发器。用它来调用Telegram Bot API,无需购买VPS或保持电脑常开,非常适合轻量级定时任务。

1. 获取Chat ID

要让机器人把消息发给你或你的群组,需要知道对应的Chat ID。你可以在Telegram中给机器人随便发一条消息,然后访问以下URL(将 YOUR_TOKEN 换成你的Token):

https://api.telegram.org/botYOUR_TOKEN/getUpdates

在返回的JSON里找到 chat 对象中的 id 字段,那就是Chat ID。如果是群组,需要先把机器人拉进群,再在群里发消息才能看到ID。

2. 编写Apps Script代码

打开 Google Apps Script 新建项目,粘贴以下代码:

function sendMessage() {
  var botToken = 'YOUR_TOKEN';
  var chatId = 'CHAT_ID'; // 替换成你的chat id
  var text = '这是定时发送的消息';
  
  var url = 'https://api.telegram.org/bot' + botToken + '/sendMessage';
  var payload = {
    'chat_id': chatId,
    'text': text
  };
  
  UrlFetchApp.fetch(url, {
    'method': 'post',
    'payload': payload
  });
}

3. 设置定时触发器

在Apps Script编辑器中,点击左侧“触发器”图标,然后点击“添加触发器”。选择函数 sendMessage,事件源选择“时间驱动”,再选择触发频率(比如“天定时器”并设置具体时间)。保存后,机器人就会按计划自动发送消息。

优点:完全免费、云运行、无需维护服务器。缺点:依赖Google服务,在国内网络环境可能无法稳定访问。

三、方案二:使用Python脚本 + cron实现定时发送(灵活且可控)

如果你熟悉Python,或者希望更灵活地控制发送逻辑(如读取数据库、动态生成内容),可以自己写一个Python脚本,再通过系统cron(Linux/Mac)或“任务计划程序”(Windows)定时执行。

1. 安装依赖

在命令行执行:

pip install requests

2. 编写发送脚本

创建一个Python文件,例如 scheduled_send.py

import time
import requests

def send_telegram_message(token, chat_id, text):
    url = f"https://api.telegram.org/bot/sendMessage"
    data = {"chat_id": chat_id, "text": text}
    resp = requests.post(url, data=data)
    return resp.json()

if __name__ == "__main__":
    bot_token = "YOUR_TOKEN"
    chat_id = "CHAT_ID"
    message = "这是Python脚本发送的定时消息"

    result = send_telegram_message(bot_token, chat_id, message)
    print(result)

3. 配置cron定时任务

在终端输入 crontab -e 打开任务列表,添加一行,例如每天上午9点发送:

0 9 * * * /usr/bin/python3 /path/to/scheduled_send.py

保存后,cron会按计划调用脚本,机器人就会在每天9点发送消息。Windows用户可以使用“任务计划程序”设置定时触发,或者用Python的schedule库在脚本内实现循环。更多高级用法(如发送图片、Markdown格式)可参考Telegram Bot API文档。

四、注意事项与常见问题

  • 隐私与安全:定期更换Bot Token,不要在聊天、代码或公开场合泄露Token。
  • 时区问题:cron和Apps Script定时器使用的是服务器时区,请根据实际需要调整时间。
  • 频率限制:Telegram Bot API有频率限制,避免高频发送导致机器人被封禁。
  • 无法收到消息:检查Chat ID是否正确,机器人是否被对方拉黑或屏蔽。
  • 国内网络:Telegram部分区域无法直连,请确保运行环境能正常访问Telegram API。

五、总结

通过本文,你已经掌握了两种设置Telegram机器人定时发送消息的方法:Google Apps Script适合零基础快速实现,Python脚本则更适合复杂场景。选择适合自己的方案,让机器人真正成为你的私人自动化助手。如果你还想了解更多机器人玩法,比如关键词回复、消息转发、群管理技巧,欢迎在本站继续浏览相关教程。

入门指南

下载入门准备

常见问题

定时发送消息需要Telegram Premium吗?

不需要。机器人定时发送属于正常的Bot API调用,任何机器人账号(只要持有Token)都可以使用,与Premium无关。

能否定时发送消息到频道?

可以。将机器人添加为频道管理员,然后使用频道的Chat ID(频道链接中的@频道用户名或数值ID)作为收件人即可。获取方式与普通群组类似。

如何取消已设置的定时任务?

如果使用Google Apps Script,可在触发器管理界面删除对应的定时触发器;如果使用cron,注释或删除crontab中对应行即可。

可以发送定时图片或文件吗?

可以。Telegram Bot API提供了sendPhoto、sendDocument等方法,只需在脚本中调用相应接口并传递文件参数即可,原理与发送文本一致。