Floritec / py-twitter-bot

0 stars 0 forks source link

Twitter-Bot

Really simple Twitter bot for educational purposes, written in Python, continually tested with Travis CI, deployed on Heroku.

1. Twitter

1.1 Account anlegen

Der Bot benötigt Zugang zu einem Twitter-Account

1.2 API Keys erstellen

Der Bot benötigt für den Zugriff auf Twitter API keys und tokens (statt Username und Passwort). Diese Token sind, wie Passwörter, geheimzuhalten. Alles, was du im GitHub-Repository hochlädst ist öffentlich!

2. Github

2.1. Account erstellen

2.2 Beispiel-Repository forken

Wir haben bereits einen Bot vorbereitet (https://github.com/hpi-swt2-exercise/py-twitter-bot, dieses Repository).

2.3 Github-Repository auf den Rechner clonen

Um die Dateien lokal zu bearbeiten und die Verbindung zu Github herzustellen, muss das Repository auf deinen Rechner mit git "geklont" werden. Grundsätzlich kann git entweder über die Kommandozeile (cmd) oder mit einer grafischen Oberfläche (GUI) nutzen. Auf den Rechnern ist die GUI "GitExt" installiert (falls ihr auf eurem eigenen Windows-Rechner Git benutzen möchtet, empfehlen wir TortoiseGit).

3. Projekt lokal einrichten

3.1 Abhängigkeiten installieren

Alle Abhängigkeiten des Twitter-Bots, d.h. aller Code aus Bibliotheken, sind in einer requirements.txt festgehalten. Diese müssen auf euren Rechnern installiert sein, damit der Bot funktioniert.

3.2 Twitter Credentials im Bot eintragen

3.3 Die erste Änderung

Der Bot tweetet im Moment die Uhrzeit immer nach demselben Schema: "It is HH:MM:SS on a DAY (DD-MM-YYYY)." Wenn du möchtest, ändere das Format der Uhrzeit, z.B. mit dem Names deines Bots.

text = berlin_time.strftime("Der HPI-Schülerkolleg Bot sagt: %H:%M:%S! %A (%d-%m-%Y).")

4. Travis CI

Als nächstes möchten wir Continuous Integration für das Projekt anlegen.

Wenn du das nächste mal eine Änderung "push"st (auf den Server bei Github überträgst), wird Travis dein Projekt automatisch erstellen. Um jederzeit den Build-Status sehen zu können, kannst du eine Badge auf deiner Projekt-Seite einbinden.

Nach dem Commit kannst du die Änderung pushen und auf der Travis-Seite beobachten wie dein Projekt gebaut wird. Nachdem der Vorgang erfolgreich abgeschlossen wurde, kannst du die Projektseite auf Github neu laden. Die Badge sollte jetzt grün erscheinen.

5. Heroku

5.1 Account erstellen

Damit du deinen Twitter-Bot nicht immer per Hand ausführen musst, möchten wir ihn jetzt auf Heroku deployen. Heroku ist eine Plattform auf der Code kontinuierlich auf Servern ausgeführt werden kann.

5.2 Anwendung erstellen

Auch auf Heroku muss der Bot wissen, wie er sich bei Twitter anmelden kann. Damit die geheimen Daten nicht in einer Datei gespeichert werden müssen, kannst du sie direkt in Heroku konfigurieren.

5.3 Anwendung auf Heroku starten

Die logs, d.h. die Nachrichten, die der Bot schreibt, können im Heroku-Interface nachgelesen werden. Hier kannst du überprüfen, ob der Bot erfolgreichen starten konnte. Falls du noch einen Twitter-Account hast, schreibe ihm doch einfach mal “hi!”. In spätestens 10 Minuten solltest du eine Antwort bekommen.

6. Und noch viel weiter

Die verbleibende Zeit kannst du nutzen, um den Funktionsumfang deines Bots zu erweitern.

Ein Cheatsheet für Python ist hier zu finden: link

Funktionen um mit Strings zu arbeiten gibt es hier

6.1 Externe Daten anfordern

Natürlich kann der Bot statt nur mit der Uhrzeit zu antworten auch beliebige andere Dinge tweeten. Insbesondere sollte er vielleicht mit der Außenwelt kommunizieren um weitere Daten zu erhalten. Solche Schnittstellen, die mit Programmen einfach nutzbar sind, heißen APIs (Application programming interface). Zum Beispiel könnten Chuck Norris Witze abgefragt und getweetet werden:

from requests import get
# Some more ideas: https://www.programmableweb.com/category/humor/api
data = get('https://api.chucknorris.io/jokes/random').json()
joke = data['value']
print joke

6.2 Zufall

Möglicherweise sollte der Bot nicht immer nach demselben Schema tweeten, sondern zufällig unterschiedliche Text tweeten. Dazu kann das random Modul von Python verwendet werden. Beispiel:

import random

# random() returns a floating point number in the range [0.0, 1.0)
if random.random() > 0.5:
    print('GROSS')
else:
    print('klein')

Build Status