南琴浪博客

RustRssBot - Telegram RSS Bot

03/31/2018

本文介绍 RustRssBot 及其自建配置。

介绍

RustRssBot 是基于 Rust 语言的用于实现 RSS 订阅功能的 Telegram Bot,你可以通过 @rustrssbot 在 Telegram 中找到它。

本文仅对 RustRssBot 所需服务端(你的 VPS 上)进行介绍,至于客户端(Telegram Bot)部分请自行解决。

修改

原项目的 RSS 更新频率是每 5 分钟获取一次,这个频率实在有点高了。所以我的 修改版本 将频率修改为 2h /次。你也可以通过 @mogic_rust_bot 找到我修改后的 bot。

先 clone 源码下来:

git clone https://github.com/iovxw/rssbot.git

然后打开 src/main.rs,在该文件中找到这段代码:

fn main() {
    let args: Vec<String> = std::env::args().collect();
    if args.len() < 3 {
        eprintln!("usage: {} $DATAFILE-name $TELEGRAM-BOT-TOKEN", args[0]);
        std::process::exit(1);
    }
    let datafile = &args[1];
    let token = &args[2];
    let period = args.get(3)
        .map(|s| {
            s.parse().unwrap_or_else(|_| {
                eprintln!("period must be unsigned");
                std::process::exit(1);
            })
        })
        .unwrap_or(300);

其中 .unwrap_or(300); 这行就表示 每 300 秒更新一次,这就是我要修改的更新频率。

我把频率修改为 2h /次,那就是 7200 秒

    .unwrap_or(7200);

编译

那么接下来就是编译了,这部分在我的 readme 里也有过说明。

# clone source
git clone https://github.com/nanqinlang-mogic/RustRssBot.git

# Rust & Cargo environment
curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain nightly
source $HOME/.cargo/env

# dependences
apt-get install -y openssl libssl-dev pkg-config

# then start compile it
cd source
cargo build --release

编译成功的话,编译完成后的可执行文件 rssbot 会被发送到 /target/release/rssbot 路径。之后你把这个文件保存下来,不需要每次都再编译了。

使用

在上文已提到,建立一个 bot 是需要同时有服务端和客户端的。

服务端

服务端的运行方式和原项目相同:

wget https://github.com/nanqinlang-mogic/RustRssBot/releases/download/1.1/rssbot
chmod +x rssbot
nohup ./rssbot datafile ${TELEGRAM-BOT-TOKEN} &

昨晚新增了一个 脚本 来实现服务端的安装。

客户端

和原项目的 directive 有点不同,我的 bot 是这样用的:

commandfunctionparameter
listshow subscribe list/list (${Channel-Username}) (display-url)
subscribesubscribe one/subscribe (${Channel-Username}) ${rss-url}
unsubscribeunsubscribe one/unsubscribe (${Channel-Username}) ${rss-url}