在信息爆炸的时代,每天手动浏览新闻既耗时又容易错过重要内容。Telegram机器人能帮你自动收集、筛选并推送新闻,只需设置一次,即可每日定时收到最新的资讯。本教程将手把手教你从零搭建一个属于自己的新闻推送机器人。
准备工作:官方客户端与BotFather
首先,你需要在手机或电脑上安装Telegram官方客户端(可在本网站获取最新安装包)。接着,在Telegram中搜索并联系@BotFather,它是官方机器人管理工具。
- 向BotFather发送
/newbot指令。 - 按照提示设置机器人显示名称(例如“每日新闻订阅”)和用户名(必须以
bot结尾,如MyNewsBot)。 - 创建成功后,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 中配置 TOKEN 和 CHAT_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文档。现在就动手搭建属于你的新闻助手吧!