Работа с Mastodon

Updated 9 July 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

Создайте базовый скрипт для запуска демона:

/etc/init.d/mastodon-group-bot
#!/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=mastodon
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

python tokentool.py
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.

Note

Для получения кода авторизации MT-afgOKW4wffDpGjXUEB1dm135mcSwX9zql4c3ictM перейдите по сгенерированной ссылке.

Подтверждение авторизации для бота

Получение токена для бота

В ходе регистрации будет получены:

  • client_id = eidNondeabryievrewkasfakuvcorigovpefNifZibr
  • client_secret = jokpinshedCauHalsishpEbodIatsilyethjuOvtyfs
  • access_token = cNsH2V8AVJrrovdePEK7GFy6PA7ywHErU1xkwuIX5UM

Выполните настройку бота:

/var/calculate/mastodonbot/mastodon-group-bot/config.examplebot.json
{
    "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