[Einführung] Ich möchte mit Python einen Mastodon-Bot erstellen! 【Anfänger】

Ziel

Umgebung

Da wir in Python programmieren, müssen wir zunächst ** Python ** vorbereiten. Um MastodonBot zu erstellen, benötigen Sie außerdem eine Bibliothek [^ 2] zum Erwerb der API [^ 1], die von einer erstaunlichen Person namens ** mastodon.py ** erstellt wurde. Bereiten Sie die Bibliothek mit ** pip ** vor, was die Installation der Python-Bibliothek vereinfacht. Grundsätzlich ist pip verfügbar, wenn Sie Python installieren. Es ist notwendig, ein ** Zugriffstoken ** im Bot-Code vorzubereiten, um zu bestimmen, welche Instanz [^ 3] und welches Konto sich verhalten soll. Damit

1-1. Python 1-2. pip 2. ** mastodon.py (Bibliothek) ** 3. ** Zugriffstoken **

Ist notwendig. Bereiten wir uns in der richtigen Reihenfolge vor.

1-1. Vorbereitung von Python

https://www.python.org/downloads/ Laden Sie Python von dieser Site herunter und installieren Sie es. Grundsätzlich ist es die neueste Version, und Sie können die für das Betriebssystem Ihrer Umgebung (Windows, Mac usw.) herunterladen. Beginnen wir mit der zuvor installierten Datei und führen Sie das Setup durch. Aktivieren Sie etwas wie "Python 3.X.X zu PATH hinzufügen" und lassen Sie es durch PATH laufen. [^ 4] Drücken Sie dann Jetzt installieren.

1-2. Vorbereitung der Pip

Ich denke, die meisten Leute werden diesen Prozess durchlaufen, weil er im Grunde in Python installiert zu sein scheint. Lassen Sie uns überprüfen, ob der Pip richtig eingesetzt ist. Starten Sie das im Betriebssystem bereitgestellte Terminal. Es ist die "Eingabeaufforderung" in Windows. Wenn Sie ein Windows-Benutzer sind, können Sie die Eingabeaufforderung starten, indem Sie "Ausführen durch Angeben einer Datei" mit "Win + R" starten und "cmd" eingeben. Wenn Sie nicht wissen, wie Sie starten sollen, googeln Sie bitte jeden einzelnen. (Verlassen) Wenn Sie im Terminal python -m pip -V eingeben (achten Sie darauf, den Fall nicht zu verwechseln) und die Version von pip herauskommt, ist pip bereits enthalten.

** Wenn pip nicht enthalten ist ** Bitte lesen Sie den folgenden Artikel. https://qiita.com/Chino_Kafuu/items/6be7aa6798c7d7dcc129

2. Vorbereitung von mastodon.py

Geben Sie einfach pip install mastodon.py in das Terminal ein. Pip ist bequem.

3. Zugriff auf die Token-Vorbereitung

Bitte melden Sie sich bei dem Konto an, das Sie als Bot mit der Instanz betreiben möchten, die Sie als Bot betreiben möchten. Wenn Sie nicht wissen, was Sie sagen, greifen Sie mit Ihrem Browser auf Mastodon zu, das Sie immer verwenden. Drücken Sie auf Benutzereinstellungen (Zahnradsymbol) und dann auf die Registerkarte "Entwicklung". Es gibt eine Schaltfläche zum Erstellen einer neuen App. Drücken Sie sie also. Bitte wie der App-Name. Bitte beachten Sie jedoch, dass jeder den App-Namen sehen kann. Sie können das Zugriffstoken überprüfen, indem Sie den App-Namen speichern und erneut drücken. Mit diesem Zugriffstoken können Sie festlegen, dass sich das Konto wie gewünscht verhält.

Schreiben wir den Code

Schließlich wurde die Umgebung für die Herstellung von Mastodon Bot fertiggestellt. Erstellen Sie einen Ordner für Bot, um die Organisation zu vereinfachen, und erstellen Sie dort eine Python-Datei wie MastodonBot.py. Wir werden den Bot-Code in diese Datei schreiben. Öffnen Sie diese Datei mit Ihrem bevorzugten Texteditor [^ 5]. Kopieren Sie zunächst den folgenden Code und fügen Sie ihn ein, um das Zugriffstoken und die URL zu ändern.

Bot.py


from mastodon import Mastodon, StreamListener

#Das Hauptverhalten von Bot wird hier beschrieben.
class Bot(StreamListener):
    #Ein Ort, an dem sich Bot vorbereitet. Sogenannte Magie.
    def __init__(self):
        super(Bot, self).__init__()
    #Wenn sich in der lokalen Zeitleiste des Kontos eine Bewegung befindet, wird das darin enthaltene Verhalten mit den Informationen des neuen Toots gelesen.
    def on_update(self, status):
        pass

def Login():
    mastodon = Mastodon(
                access_token = "*******************",           #Legen Sie den Zugriffstoken ab, den Sie gerade hier erhalten haben.
                api_base_url = "https://mastodonexample.com"    #Schreiben Sie hier die URL der Mastodon-Instanz
                )
    return mastodon

def LTLlisten(mastodon):
    bot = Bot()
    mastodon.stream_local(bot)

#Verarbeitung zum Anmelden
mastodon = Login()
LTLlisten(mastodon)

Die Funktion on_update in diesem Code wird gelesen, wenn die LTL (lokale Zeitleiste) ausgeführt wird. Und die Informationen des neuen Toots, die zu LTL geflossen sind, werden der Statusvariablen als JSON-Datei zugewiesen [^ 6]. Wir werden den Pass-Teil in diesem Code neu schreiben und ihn hinzufügen, um den Bot-Prozess zu erstellen! !!

Lassen Sie uns zunächst den Text des neuen Toots im Terminal anzeigen. Lassen wir die Informationen im Text im Status weg. Sie können die Informationen des Textes erhalten, indem Sie "status [" content "]" schreiben. Lassen Sie es uns mit der Druckfunktion anzeigen.

Bot.py


    #Wenn sich in der lokalen Zeitleiste des Kontos eine Bewegung befindet, wird das darin enthaltene Verhalten mit den Informationen des neuen Toots gelesen.
    def on_update(self, status):
        print(status['content'])

Wenn Sie dies im Terminal tun, wird der Text im Terminal angezeigt. Aber wenn ich es mir ansehe <p> Yaharo </ p> Es hat ein HTML

-Tag wie dieses. Python hat eine Methode namens replace, die einen Teil der Zeichenfolge ersetzt. Verwenden wir es, um das

-Tag zu entfernen.

Bot.py


    #Wenn sich in der lokalen Zeitleiste des Kontos eine Bewegung befindet, wird das darin enthaltene Verhalten mit den Informationen des neuen Toots gelesen.
    def on_update(self, status):
        content = status['content'].replace('<p>', '').replace('</p>', '')
        print(content)

Wenn Sie es so schreiben, verschwindet das

-Tag und der Text sieht besser aus. Damit können die Informationen im Text extrahiert werden. Lassen Sie uns endlich einen Papagei-Rückgabe-Bot machen. Es gibt eine Funktion, die den Bot zum Tooten bringt. Es ist mastodon.toot (). Wenn Sie eine Zeichenfolge in this () einfügen, wird der Satz mit einem Toot versehen.

Bot.py


    #Wenn sich in der lokalen Zeitleiste des Kontos eine Bewegung befindet, wird das darin enthaltene Verhalten mit den Informationen des neuen Toots gelesen.
    def on_update(self, status):
        mastodon.toot('Das ist interessant!')     #Bitte tun Sie dies nicht, da es ärgerlich ist, wenn Sie es so ausführen, wie es ist.

Mit diesem Code wird jedoch jedes Mal, wenn jemand toot, etwas zu einem nervigen Bot. Lassen Sie uns die Bedingungen für die Bewegung festlegen und steuern.

Bot.py


    #Wenn sich in der lokalen Zeitleiste des Kontos eine Bewegung befindet, wird das darin enthaltene Verhalten mit den Informationen des neuen Toots gelesen.
    def on_update(self, status):
        content = status['content'].replace('<p>', '').replace('</p>', '')
        if 'interessant?' in content:
            mastodon.toot('Das ist interessant!')

Ist die bedingte Anweisung "interessant für den Inhalt der Zeichenfolge"? Die Bedingung ist, ob `enthalten ist oder nicht. Jetzt ist es kein nerviger Bot mehr. Lassen Sie uns den Text, den Sie gerade erhalten haben, notieren!

Bot.py


    #Wenn sich in der lokalen Zeitleiste des Kontos eine Bewegung befindet, wird das darin enthaltene Verhalten mit den Informationen des neuen Toots gelesen.
    def on_update(self, status):
        content = status['content'].replace('<p>', '').replace('</p>', '')
        if '!Parrot' in content:
            mastodon.toot(content)      #Bitte tun Sie dies nicht, da es ärgerlich ist, wenn Sie es so ausführen, wie es ist.

Ich habe einen befehlsähnlichen Auslöser vorbereitet, mit dem der Bot wie ein Bot reagiert. Wenn Sie es jedoch so ausführen, wie es ist, wird es schwierig. (Es ist ärgerlich, aber Sie können es sehen, wenn Sie es versuchen.) Was wird passieren? Wenn der Bot neu aufgerufen wird, bewegt sich die LTL. Lesen Sie daher die Funktion on_update erneut. Der Körper sollte "! Parrot" enthalten, damit der Bot auf den Toot des Bots reagiert. Wiederholen Sie diesen Vorgang und verursachen Sie für immer eine Endlosschleife, bis der Bot stoppt. Lassen Sie uns dies verhindern. Es gibt mehrere Problemumgehungen, aber ich zeige Ihnen eine davon.

Bot.py


    #Wenn sich in der lokalen Zeitleiste des Kontos eine Bewegung befindet, wird das darin enthaltene Verhalten mit den Informationen des neuen Toots gelesen.
    def on_update(self, status):
        content = status['content'].replace('<p>', '').replace('</p>', '')
        if '!Parrot' in content:
            content = content.replace('!Parrot', '')
            mastodon.toot(content)

Entfernen wir den Triggerteil aus der zuvor eingeführten Ersetzungsmethode. Wenn ein Toot mit der Zeichenfolge '! Parrot' in die LTL fließt, wird er jetzt als Papagei zurückgegeben. Damit ist der Papageienrückgabe-Bot abgeschlossen! !! !!

Zusätzlich zu mastodon.toot () gibt es viele Funktionen, die es Bot ermöglichen, sich auf verschiedene Arten zu verhalten. Wenn Sie mit Bezug auf die Referenz hier studieren, können Sie Ihren Lieblingsbot erstellen. Japanische Übersetzung mastodon.py Referenz

Referenzartikel zu diesem Artikel

Ist Ihre Bestellung ein Mastodon Bot? Für Erstbenutzer, die jetzt umziehen möchten ☕ https://qiita.com/Chino_Kafuu/items/6be7aa6798c7d7dcc129

[^ 1]: Ein Tool-ähnliches, das Daten in einer Datei wie json [^ 6] zurückgibt, um die externe Manipulation der Daten zu erleichtern. [^ 2]: Eine Datei, die verschiedene nützliche Funktionen in Python sammelt.
Funktionen können verwendet werden, indem Sie als "xxx importieren" oder "aus xxx importieren yyy, zzz" schreiben. [^ 3]: Jeder Mastodon-Server. [^ 4]: Wenn Sie den PATH übergeben und den Python-Befehl im Terminal verwenden, können Sie ihn einfach durch Schreiben von "Python" verwenden, ohne den Speicherort der Python-Datei zu schreiben. Betrachten Sie es als eine Magie, die nützlich sein wird, wenn Sie es nicht verstehen. [^ 5]: Ein Tool zum Schreiben von Programmier- und anderem Code. Notepad ist ebenfalls im Texteditor enthalten, es gibt jedoch kostenlose und praktische Texteditoren wie VSCode, Vim, Atom. Verwenden wir also den gewünschten. Übrigens, wenn Sie Python herunterladen, scheint der Texteditor IDLE für Python enthalten zu sein. [^ 6]: Eine der Methoden zur Beschreibung einer Datei, in der Daten gespeichert sind. Ich sehe es oft im Internet.

Recommended Posts

[Einführung] Ich möchte mit Python einen Mastodon-Bot erstellen! 【Anfänger】
Ich möchte ein Spiel mit Python machen
Ich möchte mit Python in eine Datei schreiben
Python-Anfänger haben beschlossen, einen LINE-Bot mit Flask zu erstellen (Flask-Kommentar)
Ich möchte mit einem Roboter in Python arbeiten.
[Python] Ich möchte aus einer verschachtelten Liste einen Taple machen
Ich möchte einen Quantencomputer mit Python betreiben
Ich möchte mit Python debuggen
Wenn Sie einen Discord-Bot mit Python erstellen möchten, verwenden wir ein Framework
Erstellen Sie einen Mastodon-Bot mit einer Funktion, die automatisch mit Python antwortet
Ich möchte einen Blog-Editor mit dem Administrator von Django erstellen
Ich möchte ein Klickmakro mit pyautogui (Outlook) erstellen.
Ich möchte eine Nachricht von Python an LINE Bot senden
Ich möchte eine schöne Ergänzung zu input () in Python hinzufügen
[Mac] Ich möchte einen einfachen HTTP-Server erstellen, auf dem CGI mit Python ausgeführt wird
Ich möchte eine Python-Umgebung erstellen
Ich möchte Protokolle mit Python analysieren
Ich möchte mit aws mit Python spielen
Machen wir einen Twitter-Bot mit Python!
[5.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich möchte einen Platzhalter verwenden, den ich mit Python entfernen möchte
Ich möchte das Wetter mit LINE bot feat.Heroku + Python wissen
[2nd] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[3.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich möchte den vollständigen Text mit elasticsearch + python durchsuchen
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich habe versucht, mit Python eine 2-Kanal-Post-Benachrichtigungsanwendung zu erstellen
Ich habe versucht, eine ToDo-App mit einer Flasche mit Python zu erstellen
[4.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[1.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich möchte einen Sprachwechsler mit Python und SPTK in Bezug auf eine berühmte Site erstellen
Ich möchte Matplotlib zu einem dunklen Thema machen
Ich möchte MATLAB feval mit Python verwenden
Machen Sie Twitter Trend Bot mit Heroku + Python
Ich möchte mit Python ein Fenster erstellen
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
Ich möchte Temporäres Verzeichnis mit Python2 verwenden
#Unresolved Ich möchte Gobject-Introspection mit Python3 kompilieren
Ich möchte APG4b mit Python lösen (Kapitel 2)
Versuchen Sie, mit Python eine Diedergruppe zu bilden
Ich möchte C ++ - Code aus Python-Code erstellen!
Mattermost Bot mit Python gemacht (+ Flask)
Ich habe versucht, "Sakurai-san" LINE BOT mit API Gateway + Lambda zu erstellen
Ich habe versucht, mit Raspeye 4 (Python Edition) ein signalähnliches Signal zu erzeugen.
Ich möchte eine Webanwendung mit React und Python Flask erstellen
Ich habe versucht, einen periodischen Prozess mit CentOS7, Selenium, Python und Chrome durchzuführen
Selbst Anfänger möchten sagen "Ich verstehe Python voll und ganz"
Ich möchte eine Variable in einen Python-String einbetten
Ich möchte Timeout einfach in Python implementieren
Ich habe einen Twitter BOT mit GAE (Python) gemacht (mit einer Referenz)
Ich möchte einen Python-Generator viele Male iterieren
Ich möchte schnell UUID generieren (Gedenknotiz) ~ Python Edition ~
Ich möchte mit einem Knopf am Kolben übergehen
Lassen Sie uns ein Befehls-Standby-Tool mit Python erstellen
Ich habe eine einfache Mail-Sendeanwendung mit tkinter von Python erstellt
Ich möchte die Optimierung mit Python und CPlex behandeln
Ich möchte mit verstärkendem Lernen einen Berg besteigen
Ich möchte in Python schreiben! (2) Schreiben wir einen Test