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?

Screenshot des WhatTheDay botsin.space Accounts

What the day? 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 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 und schedule. 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.

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.

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 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

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