| .env-example | ||
| .gitignore | ||
| docker-compose-example.yml | ||
| Dockerfile | ||
| main.sh | ||
| README.md | ||
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!