中文 Telegram RSS 机器人 @RustRssBot
支持:
- RSS 0.9
- RSS 0.91
- RSS 0.92
- RSS 0.93
- RSS 0.94
- RSS 1.0
- RSS 2.0
- Atom 0.3
- Atom 1.0
/rss - 显示当前订阅的 RSS 列表,加 raw 参数显示链接
/sub - 订阅一个 RSS: /sub http://example.com/feed.xml
/unsub - 退订一个 RSS: /unsub http://example.com/feed.xml
/unsubthis - 使用此命令回复想要退订的 RSS 消息即可退订, 不支持 Channel
/export - 导出为 OPML
可直接从 Releases 下载预编译的程序, Linux 版本为 musl 静态链接, 无需其他依赖
请先尝试从上面下载, 如不可行或者有其他需求再手动编译
先安装 Rust Nightly 以及 Cargo (推荐使用 rustup
), 然后:
cargo build --release
编译好的文件位于: ./target/release/rssbot
./rssbot DATAFILE TELEGRAM-BOT-TOKEN
DATAFILE
为数据库保存路径(其实就是一个 json 文件, 不需要手动创建), TELEGRAM-BOT-TOKEN
请参照 这里 申请
对于 原先 Clojure 版本的 Bot, 可以使用以下脚本转换数据库
#!/bin/bash
DATABASE=$1
TARGET=$2
DATA=$(echo "SELECT url, title FROM rss;" | sqlite3 $DATABASE)
IFS=$'\n'
echo -e "[\c" > $TARGET
for line in ${DATA[@]}
do
IFS='|'
r=($line)
link=${r[0]}
title=${r[1]}
echo -e "{\"link\":\"$link\"," \
"\"title\":\"$title\"," \
"\"error_count\":0," \
"\"hash_list\":[]," \
"\"subscribers\":[\c" >> $TARGET
subscribers=$(echo "SELECT subscriber FROM subscribers WHERE rss='$link';" | sqlite3 $DATABASE)
IFS=$'\n'
for subscriber in ${subscribers[@]}
do
echo -e "$subscriber,\c" >> $TARGET
done
echo -e "]},\c" >> $TARGET
done
echo "]" >> $TARGET
sed -i "s/,]/]/g" $TARGET
参数 1 为旧数据库地址, 2 为结果输出地址
需要注意的是已推送的 RSS 记录不会保留, 如果直接使用转换后的数据库, 会重复推送旧的 RSS
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.