Работа с Mastodon
Обновлено 19 июля 2019
Настройка Proxy
Доступ к другим ресурсам Федерации может быть настроен через Proxy. Добавьте настройку:
/var/calculate/www/mastodon/live/.env.production
http_proxy=http://proxy.example.org:8888
Перезапустите сервис Mastodon:
/etc/init.d/mastodon-web restart
Организация групп через бота
Для огранизации групп будет использоваться бот mastodon-bot-autoresponder.
Установка и настройка бота
Создайте системного пользователя mastodonbot:
useradd -d /var/calculate/mastodonbot mastodonbot
Склонируйте репозиторий с программным кодом бота для пользователя:
su - mastodonbot
git clone https://github.com/drequivalent/mastodon-bot-autoresponder mastodon-group-bot
Настройте виртуальное окружение для Python и активируйте его
cd mastodon-group-bot
python3 -m venv env
source env/bin/activate
Установите зависимости для бота
pip install Mastodon.py beautifulsoup4==4.6.0
Создайте базовый скрипт для запуска демона:
#!/sbin/openrc-run # Copyright 2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 name="Mastodon Group Bot daemon" description="Mastodon Group Bot daemon" BOTNAME=${SVCNAME#*.} supervisor=supervise-daemon output_log=/var/log/mastodon-group-bot-$BOTNAME.log error_log=/var/log/mastodon-group-bot-$BOTNAME.log command_user=mastodonbot command="/var/calculate/mastodonbot/mastodon-group-bot/env/bin/python3" command_args="autoresponder.py -c config.$BOTNAME.json" directory="/var/calculate/mastodonbot/mastodon-group-bot" pidfile="/run/mastodon-group-bot-$BOTNAME.pid" command_background=true depend() { use net } start_pre() { checkpath -f -o mastodonbot -m 0600 /var/log/mastodon-group-bot-$BOTNAME.log }
Установите права на запуск демона:
chmod 755 /etc/init.d/mastodon-group-bot
Добавление бота
Зарегистрируйте бота как приложение на вашем сервере. Для этого авторизуйтесь в браузере в Mastodon под тем аккаутном, от имени котрого будет работать бот. Затем запустите приложение tokentool.py
:
su - mastodonbot
cd mastodon-group-bot
source env/bin/activate
Choose your action: [r]: register an app to get client_id and client_secret [a]: authenticate to get access_token if you're setting up a bot for the first time, choose [r]. > r App name [autoresponder]: examplebot Instance base URL [https://mastodon.social]: https://mastodon.example.org App registered. client_id: eidNondeabryievrewkasfakuvcorigovpefNifZibr client_secret: jokpinshedCauHalsishpEbodIatsilyethjuOvtyfs While you're at it, do you want to also authenticate? y/n> y Visit the following link, authenticate, and bring back the code that the page gives you afterwards. NB: that code is *not* your access token. https://mastodon.example.org/oauth/authorize?client_id=eidNondeabryievrewkasfakuvcorigovpefNifZibr&response_type=code&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=read+write > MT-afgOKW4wffDpGjXUEB1dm135mcSwX9zql4c3ictM Got access token: cNsH2V8AVJrrovdePEK7GFy6PA7ywHErU1xkwuIX5UM Testing... Success, authenticated as newbot.
Заметка
Для получения кода авторизации MT-afgOKW4wffDpGjXUEB1dm135mcSwX9zql4c3ictM перейдите по сгенерированной ссылке.
В ходе регистрации будет получены:
- client_id =
eidNondeabryievrewkasfakuvcorigovpefNifZibr - client_secret =
jokpinshedCauHalsishpEbodIatsilyethjuOvtyfs - access_token =
cNsH2V8AVJrrovdePEK7GFy6PA7ywHErU1xkwuIX5UM
Выполните настройку бота:
{ "base_url": "https://mastodon.example.org", "client_id": "eidNondeabryievrewkasfakuvcorigovpefNifZibr", "client_secret": "oeCMH9L_OeuuuV699334Rgea3o_0R3kYhfCKu9ZYCh4", "access_token": "cNsH2V8AVJrrovdePEK7GFy6PA7ywHErU1xkwuIX5UM", "message": "Hello, I'm a group bot. Follow me and then write something, and I will boost it. The admins of the group are:", "message_welcome": "Welcome our new member: ", "admins": [], "state_file": "/var/calculate/mastodonbot/mastodon-group-bot/state.examplebot" }
Создайте символическую ссылку на запуск examplebot:
ln -sf mastodon-group-bot /etc/init.d/mastodon-group-bot.examplebot
Запустите бота и добавьте его в автозагрузку:
/etc/init.d/mastodon-group-bot.examplebot start
rc-update add mastodon-group-bot.examplebot