A pretty simple random message bot using Mastodon
Go to file
Clement Bois 73315a2d77 Safe 2019-06-13 13:58:47 +02:00
.env.sample Safe 2019-06-13 13:58:47 +02:00
.eslintrc.json Safe 2019-06-13 13:58:47 +02:00
.gitignore Safe 2019-06-13 13:58:47 +02:00
README.md Safe 2019-06-13 13:58:47 +02:00
index.js Safe 2019-06-13 13:58:47 +02:00
package-lock.json Safe 2019-06-13 13:58:47 +02:00
package.json Safe 2019-06-13 13:58:47 +02:00

README.md

Botodon

A pretty simple random message bot using Mastodon statuses as source of truth.

  • no database: store volatile data in statuses
  • easy edit: allows easy edit from web ui or apps.
  • community: allows public submit with strict or community driven moderation

Install

Mastodon

  • Create an account for this bot. Please mark it as bot in configuration page.
  • In settings page, create a new application with read write permission and copy the private key.
  • Create a status to store messages (could be private) and copy his id. Called data status after
  • Reply to this status to add content. (Removing @acct, to limit self spam)

Botodon

git clone <url> botodon
cd botodon
npm install
cp .env.sample .env

Edit .env at least set INSTANCE=domain.tld, TOKEN={ACCOUNT_PRIVATE_KEY} and DATA_STATUS={STATUS_ID}

Run node index.js with cron.

Enjoy

Options

.env file currently contains all need options but will maybe a day be moved to mastodon statuses.

key format description
INSTANCE Domain name Mastodon instance domain name
TOKEN Private key Bot account application private key
DATA_STATUS Status id Messages storage status
VISIBILITY visibility Bot message(s) visibility
TARGET See Target Define statuses targets
TARGET_STATUSES Statuses id (comma separated) Used with some TARGET options
TIMEOUT milliseconds API timeout
MODERATION See Moderation Define moderation method
MODERATION_LIMIT int Used with MODERATION=favourites_count

Note: malformed .env could produce unexpected behaviors

Target

Define statuses targets with TARGET option:

  • none: nothing send (default)
  • global: single without target
  • self: single with self as target
  • followers: one to each follower
  • replies: use direct replies to TARGET_STATUSES
  • replies_deep: use deep replies to TARGET_STATUSES
  • replies_smart: same as replies but override VISIBILITY with reply visibility
  • favourites: use favourites of TARGET_STATUSES
  • favourites_smart: use favourites on TARGET_STATUSES by using tags as options

Favourites Smart

WIP

Moderation

You could let community produce messages by making your data status public or unlisted.

For moderation, simply use MODERATION option:

  • none: no check (default)
  • self: one your messages
  • favourited: bot account need to fav valid messages
  • favourites_count: need at least the number of fav defined with MODERATION_LIMIT option

Multiple bots

Add .env.XXX files and run BOT_NAME=XXX node index.js

Notes

Limits

Mastodon context API use an arbitrary limit of 4096 since #7564, it's so the limit were new replies are excluded.

Followers soft limit of 999 (must include pagination) and hard limit of 7500.

TODO

every thing add selection mode multiple target