quote-bot/README.md
2026-02-02 12:26:06 +01:00

2.9 KiB

Hello World!

This is a quote bot (shell script) which shows a random quote from a file every time it is invoked.

Note: You need to make it executable to use it.

chmod u+x main.sh

The reason i use a file and not the web is hackability, at the moment.

Please provide a quotes.txt file with one line per quote.

REST-Version

The Rest-Version has functioning mastodon connection over REST-API. You need to run the full oauth user authentication before. I tried to use the "Development" section in Mastodon Preferences but it didnt work. What did work was the out of bounds creation of a new application and authenticating it with a user. It does not appear in the user Development section.

Here's the documentation for the api: https://docs.joinmastodon.org/client/intro/

You essentially need to run the following commands:

test connection

curl https://mastodon.example/endpoint?q=test&n=0

create app

https://docs.joinmastodon.org/methods/apps/ this will return secrets, write them down!

curl -X POST     -F 'client_name=Bot3'   -F 'redirect_uris=urn:ietf:wg:oauth:2.0:oob'    -F 'scopes=read write push'         -F 'website=https://myapp.example'      https://mastodon.example.com/api/v1/apps

verify the app works

https://docs.joinmastodon.org/methods/apps/#verify_credentials

curl     -H 'Authorization: Bearer ****'  https://mastodon.example.com/api/v1/accounts/verify_credentials

authorize a user

https://docs.joinmastodon.org/methods/oauth/#authorize and https://docs.joinmastodon.org/client/authorized/#login you will have to input this in a browser then login and authorize the app, it will provide an authorization code

https://mastodon.example/oauth/authorize
?client_id=CLIENT_ID
&scope=read+write+push
&redirect_uri=urn:ietf:wg:oauth:2.0:oob
&response_type=code

obtain token

https://docs.joinmastodon.org/methods/oauth/#token

curl -X POST     -F 'grant_type=authorization_code'      -F 'client_id=\*'  -F 'client_secret=\*'  -F 'redirect_uri=urn:ietf:wg:oauth:2.0:oob' -F 'code=\*'   https://mastodon.example.com/oauth/token

make your first post

curl -i -H 'Authorization: Bearer ***' -d 'status=Hello World!' https://mastodon.example.com/api/v1/statuses

To find this out took me hours and hours. I'm writing it down to spare you time.

automation

the oauth part will me mostly automated at some point but rn it is still manual. feel free to help automate it.

docker

you can use the dockerfile and docker-compose.yml i provided. I will at some point push a docker image which is ready to use. Until then you will have to build the image first. Here's how:

git clone https://code.kraftw3rk.de/alex/quote-bot.git
git switch rest-bot
touch quotes.txt #(fill with quotes, one per line, no longer than your instance character limit!)
mv .env-example .env #(insert the user token where the stars are!)
mv docker-compose-example.yml docker-compose.yml
docker compose up -d

Have fun!