Errbot: Grundlagen des Python-Chatbots

Überblick

Errbot ist ein Python-Chatbot.

Diese Seite fasst zusammen, was ich aus dem Erstellen eines Errbot-Plug-Ins (selbst erstellter Bot) gelernt habe. Der Inhalt entspricht in etwa dem offiziellen Dokument Plugin Development. Es sollte leicht zu verstehen sein, wenn Sie Grundkenntnisse in Python haben.

Informationen zum Umgebungsaufbau finden Sie in Vorheriger Artikel.

Grundkenntnisse vor der Erstellung

Lokales Verzeichnis lesen

Grundsätzlich das Plugin in Errbot Es wird über git mit dem eingebauten Befehl ! Repos verwaltet.

Es ist jedoch schwierig, die Quelle während der Entwicklung in das Git-Repository hochzuladen. Laden Sie das Plugin aus Ihrem lokalen Verzeichnis.

In der config.py generiert von errbot --init Es gibt ein Einstellungselement namens "BOT_EXTRA_PLUGIN_DIR". Geben Sie hier den Pfad des Verzeichnisses ein, das Sie als lokales Verzeichnis verwenden möchten.

Das Verzeichnis "Plugins" sollte jedoch standardmäßig angegeben werden. Sie sollten es so verwenden können, wie es ist.

Im Testmodus ausführen

So debuggen Sie den Bot, ohne eine Verbindung zu anderen Servern herzustellen Sie können im Testmodus ausgeführt werden, indem Sie beim Start "--text" oder "-T" angeben. Es ist "Text" statt "Test".

Booten Sie im Testmodus


$ errbot --text

Plugin-Konfigurationsdatei

Details werden später beschrieben.

Hello, World!

Eine Datei erstellen

In dem durch BOT_EXTRA_PLUGIN_DIR angegebenen Verzeichnis Erstellen Sie das Verzeichnis "HelloWorld" und seine Konfigurationsdateien.

plugins/           
|~err-example/     
| |-example.plug   
| `-example.py     
`~HelloWorld/      
  |-helloworld.plug
  `-helloworld.py  

Schreiben Sie in helloworld.py wie folgt gemäß dem Beispiel.

helloworld.py


from errbot import BotPlugin, botcmd

class HelloWorld(BotPlugin):
    """Example 'Hello, world!' plugin for Errbot"""

    @botcmd
    def hello(self, msg, args):
        """Say hello to the world"""
        return "Hello, world!"

Codebeschreibung

Erstens mit der Klasse, die vom Plugin erbt Importieren Sie den Dekorator, um die dem Befehl entsprechende Funktion zu erstellen.

helloworld.py


from errbot import BotPlugin, botcmd

Erben Sie die BotPlugin-Klasse und generieren Sie eine Klasse für das Plugin. Der Dokumentstring-Teil wird angezeigt, wenn Sie den Befehl ! Help verwenden.

helloworld.py


class HelloWorld(BotPlugin):
    """Example 'Hello, world!' plugin for Errbot"""

Als nächstes schreiben Sie die Funktion und dekorieren sie mit @ botcmd. Der Funktionsname wird zum Befehlsnamen, und der Bot akzeptiert den Befehl ! Hallo. Die Dokumentzeichenfolge in der Funktion wird auch bei Verwendung des Befehls ! Help angezeigt.

helloworld.py


@botcmd
def hello(self, msg, args):
    """Say hello to the world"""
    return "Hello, world!"

Die Funktion "Hallo" akzeptiert mehrere Argumente, "msg" und "args".

Wenn Sie beispielsweise "! Hallo hoge moge" eingeben, werden die folgenden Werte gespeichert.

Beide sind genau wie Strings geschrieben, aber "msg" ist Es sieht aus wie eine Instanz der Klasse "errbot.backends.base.Message".

Plugin-Metadaten

Schreiben Sie in helloworld.plug wie folgt gemäß dem Beispiel.

[Core]
Name = HelloWorld
Module = helloworld

[Python]
Version = 2+

[Documentation]
Description = Example "Hello, world!" plugin

Führen Sie den erstellten Bot aus

Mit der obigen Beschreibung kann der Bot ausgeführt werden.

Führen Sie den Hallo-Befehl aus


 >>> !hello
Hello, World!

Anwendung bei der Befehlserstellung

Automatische Aufteilung von Argumenten

Für den Dekorator botcmd können Argumente angegeben werden. Durch Angabe von "split_args_with" als Schlüsselwortargument Sie können die oben genannten "args" -Variablen als Liste erhalten.

Geteiltes Argument


@botcmd(split_args_with=None)
def action(self, mess, args):
    # !Wenn Sie Aktion eins zwei drei eingeben
    #args['one', 'two', 'three']Bekommen

Die Angabe von "split_args_with" verhält sich wie "str.split ()" "Keine" zeigt Leerzeichen an.

Unterbefehl

Wenn im Funktionsnamen "" verwendet wird, wird dieser nach "" als Unterbefehl behandelt. Dies ist nützlich für die Befehlsgruppierung.

Unterbefehl


@botcmd
def basket_add(self, mess, args):
    # !Unterstützt das Hinzufügen des Eingabekorbs
    pass

@botcmd
def basket_remove(self, mess, args):
    # !Unterstützt das Entfernen des Eingabekorbs
    pass

Zu diesem Zeitpunkt sind "Hinzufügen" und "Entfernen" nur ein Teil des Befehls. Es scheint nicht als Argument in args gespeichert zu sein.

Argumente mit argparse teilen

Verwenden Sie den Dekorator "arg_botcmd" anstelle des "botcmd" Sie können Argumente im Format [argparse] definieren (https://docs.python.org/3/library/argparse.html). Durch Überlappung können mehrere Dekorateure angegeben werden.

Argumente mit argparse angeben


@arg_botcmd('first_name', type=str)
@arg_botcmd('--last-name', dest='last_name', type=str)
@arg_botcmd('--favorite', dest='favorite_number', type=int, default=42)
def hello(self, mess, first_name=None, last_name=None, favorite_number=None):
    # !hello Err --last-Wenn Sie den Namen Bot eingeben
    # first_Name ist'Err'
    # last_Name ist'Bot'
    # favorite_Nummer ist 42 (Standardwert)

Zusammenfassung

Ich habe über den grundlegenden Teil des Erstellens eines Plugins geschrieben. Weil das Argument bis zu einem gewissen Grad frei aufgenommen werden kann Sie müssen lediglich den Prozess schreiben, den Sie in Python ausführen möchten.

Darüber hinaus die Verwendung von Befehlen mit regulären Ausdrücken und die Verwendung von Vorlagen usw. Es scheint viele Funktionen zu haben, obwohl es einfach ist. Wenn Sie interessiert sind, lesen Sie bitte die Dokumentation.

Recommended Posts

Errbot: Grundlagen des Python-Chatbots
Python-Grundlagen ⑤
Python-Grundlagen
Python-Grundlagen ④
Python-Grundlagen ③
Python-Grundlagen
Python-Grundlagen
Python-Grundlagen
Python-Grundlagen ③
Python-Grundlagen ②
Python-Grundlagen ②
Python-Grundlagen: Liste
Python-Grundmemorandum
# Python-Grundlagen (#matplotlib)
Python CGI-Grundlagen
Python-Grundlagen: Wörterbuch
Python-Grundlagen ①
Grundlagen von Python ①
Python Slice Grundlagen
# Python-Grundlagen (Umfang)
# Python-Grundlagen (#Numpy 1/2)
# Python-Grundlagen (#Numpy 2/2)
# Python-Grundlagen (Funktionen)
Grundlagen des Python-Arrays
Grundlagen der Python-Profilerstellung
Python #Numpy Basics
Python-Grundlagen: Funktionen
# Python-Grundlagen (Klasse)
Zusammenfassung der Python-Grundlagen
Python-Grundlagen ② für Anweisung
Python: Unüberwachtes Lernen: Grundlagen
Grundlagen der Python-Scraping-Grundlagen
Slack Chatbot Erstellung Python
#Python DeepLearning Basics (Mathematik 1/4)
Python-Grundlagen: Socket, Dnspython
# 4 [Python] Grundlagen der Funktionen
Grundlagen von Python: Ausgabe
Python: Grundlagen der Verwendung von Scikit-Learn ①
Python-Grundlagen: Bedingungen und Iterationen
Paiza Python Primer 4: Grundlagen der Liste
Implementieren Sie den Slack Chat Bot in Python
Python x GIS-Grundlagen (1)
Machen Sie Slack Chatbot mit Errbot
Python x GIS-Grundlagen (3)
Paiza Python Primer 5: Grundlagen von Wörterbüchern
Mit Flask erstellte SNS Python-Grundlagen
Python
Erste Schritte mit Python Grundlagen von Python
Überprüfung der Grundlagen von Python (FizzBuzz)
Grundlagen von Python x GIS (Teil 2)
5 Möglichkeiten zum Erstellen eines Python-Chatbots
Informationen zur Grundlagenliste der Python-Grundlagen
(Python) Deep Learning Library Chainer-Grundlagen Grundlagen
Lernen Sie die Grundlagen von Python ① Grundlegende Anfänger
Grundlagen der binärisierten Bildverarbeitung durch Python
Python: Grundlagen der Bilderkennung mit CNN
Statistische Grundlagen und Python, Grafik usw. (Memo)
[Python3] Verstehe die Grundlagen von Beautiful Soup
Lernen Sie die Grundlagen, während Sie Python-Variablen berühren
[JAWS-UG CLI] Lambda Blueprint Erläuterung: Python2.7-Grundlagen