Telegram机器人新闻订阅教程:每日定时推送最新资讯

详细介绍如何利用Telegram官方Bot API和定时任务,创建一个每天自动推送新闻资讯的机器人,涵盖BotFather创建、API调用、部署方案及注意事项。

阅读提示建议先浏览小标题,再按需深入阅读具体段落。

在信息爆炸的时代,每天手动浏览新闻既耗时又容易错过重要内容。Telegram机器人能帮你自动收集、筛选并推送新闻,只需设置一次,即可每日定时收到最新的资讯。本教程将手把手教你从零搭建一个属于自己的新闻推送机器人。

准备工作:官方客户端与BotFather

首先,你需要在手机或电脑上安装Telegram官方客户端(可在本网站获取最新安装包)。接着,在Telegram中搜索并联系@BotFather,它是官方机器人管理工具。

  1. 向BotFather发送 /newbot 指令。
  2. 按照提示设置机器人显示名称(例如“每日新闻订阅”)和用户名(必须以 bot 结尾,如 MyNewsBot)。
  3. 创建成功后,BotFather会返回一个 API Token(格式类似 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11),请妥善保存,这是控制机器人的唯一凭证。

获取新闻源:RSS订阅与解析

要让机器人推送新闻,你需要一个可靠的新闻来源。多数主流媒体提供RSS订阅,例如BBC中文网、联合早报、Reuters等。你可以通过搜索引擎找到合适的RSS链接(通常以 .xml/feed 结尾)。

我们将使用Python的 feedparser 库来解析RSS内容。安装方法:

pip install feedparser

下面是一个简短的解析示例:

import feedparser

rss_url = "https://www.bbc.co.uk/zhongwen/simp/index.xml"
feed = feedparser.parse(rss_url)
for entry in feed.entries[:5]:
    print(entry.title)
    print(entry.link)
    print(entry.summary)
    print("---")

编写推送机器人代码

推荐使用Python的 python-telegram-bot 库,它封装了Telegram Bot API,简化开发。安装:

pip install python-telegram-bot

以下代码实现从RSS读取最新新闻并发送到指定Telegram频道或群组:

import asyncio
import feedparser
from telegram import Bot

TOKEN = "你的API Token"
CHAT_ID = "你的频道或群组的ID"  # 例如 @mychannel 或 -100123456789

async def send_news():
    bot = Bot(token=TOKEN)
    rss_url = "https://www.bbc.co.uk/zhongwen/simp/index.xml"
    feed = feedparser.parse(rss_url)
    news_items = []
    for entry in feed.entries[:5]:
        title = entry.title
        link = entry.link
        news_items.append(f"\n")
    message = "\n\n".join(news_items)
    await bot.send_message(chat_id=CHAT_ID, text=message, parse_mode="HTML")

if __name__ == "__main__":
    asyncio.run(send_news())

如果需要手动测试,将 CHAT_ID 设置为你自己的Telegram用户ID(通过 @userinfobot 获取)。注意:如果目标是群组,必须先将机器人添加进群组,并给予发送权限。

定时任务:让机器人每天自动运行

要让代码每天自动执行,有几种常用方案:

方案一:VPS服务器 + crontab

如果你的机器人部署在一台Linux服务器上,可使用crontab设置定时任务:

0 8 * * * /usr/bin/python3 /path/to/your_script.py

上述命令表示每天上午8点执行一次。你可以自定义时间。

方案二:GitHub Actions(免费)

将代码上传到GitHub仓库,创建一个Workflow文件(如 .github/workflows/daily-news.yml),内容大致如下:

name: Daily News Bot
on:
  schedule:
    - cron: '0 8 * * *'
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.10'
      - name: Install dependencies
        run: pip install python-telegram-bot feedparser
      - name: Run script
        env:
          TOKEN: ${{ secrets.TOKEN }}
          CHAT_ID: ${{ secrets.CHAT_ID }}
        run: python script.py

在仓库的 Settings -> Secrets 中配置 TOKENCHAT_ID,即可安全存储凭证。

方案三:云函数 / 定时触发

使用AWS Lambda、Google Cloud Functions等,设置定时触发(如每天8点)。但需要对云计算有一定了解,适合进阶用户。

进阶优化:多源聚合、关键词过滤与格式定制

你可以轻松扩展上述代码:

  • 多RSS源聚合:将多个RSS URL放入列表,遍历解析合并新闻。
  • 关键词过滤:只推送包含指定关键词的新闻(如“科技”、“股市”),提高相关性。
  • 自定义格式:在消息中加入标签、日期,或使用Telegram特有格式(加粗、斜体、行内链接等)。
  • 发送时间管理:可设置多个时段,例如早报、晚报。
# 支持多源的关键字过滤示例
import re
KEYWORDS = ["AI", "区块链"]
for url in rss_urls:
    feed = feedparser.parse(url)
    for entry in feed.entries[:10]:
        if any(kw in entry.title for kw in KEYWORDS):
            items.append(f"{entry.title} - {entry.link}")

注意事项与常见问题

  • 保护Token:切勿将Token提交到公开仓库或分享给他人,否则他人可控制你的机器人。
  • 群组权限:机器人必须拥有发送消息的权限,且在群组中可能需要提升为管理员(取决于群组设置)。
  • 发送频率限制:Telegram对Bot发送消息有频率限制(约30条/秒),日常推送远不会触及,但若批量发送需注意。
  • 内容版权:转载新闻请遵守来源的版权规定,建议只发送标题和链接,不复制全文。

总结

通过本教程,你已学会创建Telegram新闻机器人,并利用定时任务每日自动推送最新资讯。无论是个人使用还是创建公共频道,这个技能都能显著提升信息获取效率。如果想进一步学习机器人高级功能,可参考Telegram官方Bot API文档。现在就动手搭建属于你的新闻助手吧!

FAQ

安卓版下载指南

常见问题

如何创建Telegram机器人?

在Telegram中联系@BotFather,发送/newbot指令,按要求设置名称和用户名,即可获得API Token。

如何让机器人每天定时推送新闻?

你可以使用服务器上的crontab、GitHub Actions的schedule事件,或者云函数的定时触发器来定期执行你的推送脚本。

怎样找到适合的RSS新闻源?

访问知名新闻网站,查找RSS订阅链接(通常在网站底部或通过搜索站点名+RSS),也可使用Google搜索“新闻网站名 RSS feed”。

机器人发送新闻到频道需要什么权限?

需要将机器人设为频道管理员(或群组管理员,取决于目标),并确保机器人有发送消息的权限。