Рассмотрим процесс установки бота, который будет сканировать ленты RSS сайтов и публиковать анонсы новых записей в чате или группе Telegram. Повествование ведется на примере ОС Linux Debian 9 «Stretch». Разворачивать будем rssbot.
Разработчик rssbot публикует самодостаточные бинарные исполняемые файлы под ОС Linux, скомпилированные статично: https://github.com/iovxw/rssbot/releases Их установка достаточно проста и особых проблем вызвать не должна. Рассмотрим вопрос компиляции самой последней на момент написания этой статьи версии rssbot v2.0.0-alpha.9 из исходного кода с целью получения динамически слинкованного бинарного файла, который будет потреблять несколько меньше ресурсов.
rssbot написан на языке программирования Rust, поэтому начинаем с разворачивания соответствующих инструментов. Rust и Cargo устанавливаем с помощью rustup. rustup будет расположен в каталоге /usr/local/share/rustup/, Cargo – /usr/local/share/cargo/.
mkdir /usr/local/share/rustup /usr/local/share/cargo
RUSTUP_HOME=/usr/local/share/rustup CARGO_HOME=/usr/local/share/cargo bash -c 'curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh'
Обратите внимание, что toolchain в меню настройки установщика rustup обязательно необходимо сменить со stable на nightly, иначе в процессе компиляции получите ошибку.
Скачиваем исходные коды rssbot:
mkdir /usr/local/src/rssbot
cd /usr/local/src/rssbot
git clone https://github.com/iovxw/rssbot.git
cd /usr/local/src/rssbot/rssbot
Компилируем. На это потребуется некоторое время:
RUSTUP_HOME=/usr/local/share/rustup CARGO_HOME=/usr/local/share/cargo bash -c 'LOCALE=en cargo build --release'
rssbot в целях безопасности будет исполнятся в ОС от имени одноименного непривилегированного пользователя. Проводим соответствующие настройки:
mv /usr/local/src/rssbot/rssbot/target/release/rssbot /usr/local/bin/
useradd rssbot
passwd -d rssbot
passwd -l rssbot
chown rssbot:rssbot /usr/local/bin/rssbot
chmod 755 /usr/local/bin/rssbot
mkdir /var/lib/rssbot
chown rssbot:rssbot /var/lib/rssbot/
chmod 755 /var/lib/rssbot/
На следующем этапе нам необходимо зарегистрировать бота в Telegram. Делается это путем диалога с BotFather. В ответ вы получите token вида «110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw». Он необходим для авторизации.
Пропишем rssbot как сервис systemd для удобного управления и автозапуска. Создаем файл настроек /etc/systemd/system/rssbot.service следующего содержания:
[Unit]
Description=Chinese Telegram RSS bot[Service]
ExecStart=/usr/local/bin/rssbot --restricted --insecure --min-interval 300 --max-interval 900 --database /var/lib/rssbot/rssbot.json 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw
User=rssbot
Type=simple
Restart=on-failure
RestartSec=10[Install]
WantedBy=multi-user.target
Включаем автозапуск и запускаем бота вручную:
systemctl daemon-reload
systemctl start rssbot.service
systemctl enable rssbot.service
После этого можете зайти в чат к боту в Telegram и дать команду для подписки на ленту RSS: «/sub http://tass.ru/rss/v2.xml». Приятных вам новостей 😉
Спасибо. Ваша статья мне очень пригодилась.