What the Day? (German)
Tags: mastodon, bots, python, german
Published: 2019-01-08 10:52:53

---
title: "What the Day? (German)"
published: true
description: "Ein Mastodon Bot der den Wochentag Postet"
tags: ["Mastodon", "Bots", "python", "German"]
---

![Futurama Fry Meme mit "What the.... day...?" als text.](https://thepracticaldev.s3.amazonaws.com/i/cq9gl183q3wbvfb21jcb.png)

Es ist Tag 1. Es ist Tag 2 … es ist Tag 4 und der Congress ist für die meisten Menschen um. Doch.. was kommt danach? Tag 5? Tag 6? Ich wusste es nicht. 
Weihnachtsfeiertage und der Congress haben diese unangenehme Eigenschaft das Zeitgefühl komplett zu zerschießen. Das ist durchaus sehr angenehm, aber durchaus auch schwierig wieder zu finden wenn man sich nicht aktiv dafür entscheidet. 
Long Story Short: Ich habe einfach mal Vorlesungen verpasst, weil ich der festen Überzeugung war es wäre Mittwoch und nicht Donnerstag. Das war gar nicht mal so angenehm. Aus der Frustierheit überkam mich die Idee meines Lebens. Ich schreibe einen Mastodon Bot. 

## What The Day?

![Ein Screenshot des What The Days Mastodon Accounts](https://thepracticaldev.s3.amazonaws.com/i/gfhhotpdvy5uf1m7aogl.jpg)
[What the day? ](https://botsin.space/@whattheday) ist ein Mastodon Bot der alle zwölf Stunden, jeweils um 08:00 Uhr und 20:00 Uhr den Aktuellen Wochentag, das Datum und die Uhrzeit postet. Er ist Open Source und man kann ihn auf [GitHub](https://github.com/KurzGedanke/whatTheDay) finden. 

## Wie ist er geschrieben? 
Ich war sehr überrascht wie einfach es ist Mastodon Bots in Python zu schreiben. Im Grunde nutze ich zwei Librarys. Ein mal [mastodon.py](https://github.com/halcy/Mastodon.py) und [schedule](https://schedule.readthedocs.io/en/stable/). Mastodon.py ist einfach eine Python API Wrapper für Mastodon und das hier all der Code den es benötigt um einen Post zu verfassen.

```python
def post():
    '''
    Login for Mastdon and tooting a toot with the current weekday, date and time.
    '''
    weekday = time.strftime('%A')
    dateDMY =time.strftime('%d/%m/%Y')
    clock = time.strftime("%X")

    mastodon = Mastodon(
        api_base_url = 'https://botsin.space/',
        access_token = cred.accessToken
    )
    mastodon.log_in(
        cred.email,
        cred.password,
    )
    mastodon.status_post('Today is {}, the {} and it is {} o\'clock!'.format(weekday, dateDMY, clock), visibility='unlisted')
```

Die ersten drei Variablen, `weekday`, `dateDMY` und `clock` dienen hier jeweils dazu den aktuellen Wochentag, Datum und Uhrzeit zu bekommen. 
Dadrunter findet die Anmeldung bei Mastodon statt, wobei `cred.$` auf ein weiteres `.py` file verweist um meine Anmeldedaten aus Git raus zu halten. 
Bei `mastodon.status_post()` ist das Argument `visibility='unlisted'` noch relevant, da es eher ungerne gesehen wird, wenn Bots auf die Lokale Timeline poste. Auch wenn mein Bot auf https://botsin.space/ läuft, möchte ich mich dieser “guten Sitte” anschließen. 

```python
def main():
    '''
    Runs the schedule for the toots at 8 o'clock and 20 o'clock.
    '''
    schedule.every().day.at('08:00').do(post)
    schedule.every().day.at('20:00').do(post)
    while True:
        schedule.run_pending()
        time.sleep(1)


if __name__ == "__main__":
    main()
```

Der letzte abschnitt ist die `main` Funktion mit der `schedule` library, die auch recht eingäning zu lesen und zu nutzen ist. 

Im Grunde habe ich hier also einen funktionieren Mastodon Bot in knapp 40 Zeilen. Wenn das mal keine Motivation ist, selber einen zu schreiben, dann weiß ich auch nicht. 

Zum Schluss läuft der Bot auf einem Raspberry Pi der hier bei mir Zuhause steht. Da ich von Docker und systemd nicht all die große Ahnung habe, habe ich mich bei diesem [Ask Ubuntu](https://askubuntu.com/questions/396654/how-to-run-the-python-program-in-the-background-in-ubuntu-machine#396655) Eintrag bemüht und den Befehl `nohup` gefunden, womit der Bot nun ganz gemütlich im Hintergrund läuft. Leider werde ich bei einem Neustart des Pi den Bot ebenfalls Neustarten müssten. Vielleicht investiere ich da mal ein wenig in Docker oder systemd. 

Falls ihr noch Fragen dazu habt, könnt ihr mich gerne auf Mastodon kontaktieren. [kurzgedanke@chaos.social](https://chaos.social/@kurzgedanke) 

Ansonsten wünsch ich euch noch viel Spaß beim eigenen Bot schreiben und um das aktuelle Datum nicht zu vergessen folgt [@whattheday@botsin.space](https://botsin.space/@whattheday)!