[PYTHON] Um den Ort, an dem der Wert von Errbot gespeichert ist

Es scheint, dass ich es nach und nach in kleinen Teilen verwenden werde, also werde ich es ein wenig zusammenfassen.

Errbot-Startkonfigurationsdatei

Eine Konfigurationsdatei, die beim Starten von Errbot angegeben werden muss. (Standardmäßig config.py) Die Hauptsache ist, Dinge zu platzieren, die das Gesamtverhalten von Errbot beeinflussen, wie z. B. was für das Back-End und den Speicher verwendet werden soll. [^ 1] Sie können mit "self.bot_config" aus der "BotPlugin" -Klasse darauf verweisen.

Da die geladene Datei so wie sie ist als Python-Modul behandelt wird, kann der Wert während der Ausführung geändert werden. Wenn Sie jedoch neu starten, wird natürlich zum Anfangswert zurückgekehrt.

[^ 1]: Natürlich sind andere Werte in Ordnung

Codebeispiel

pluginexample.py


class PluginExample(BotPlugin):
    @botcmd
    def example_admins(self, msg, args):
        return self.bot_config.BOT_ADMINS

Funktionsübersicht

--Was müssen Sie immer die Kerneinstellungen setzen

Modulinterne Variablen des Plug-Ins (Instanzvariablen und Modulvariablen)

Da die Datei, die die BotPlugin-Klasse definiert, normalerweise einzeln als Modul importiert wird, kann problemlos auf die Werte im selben Modul verwiesen werden. Da ich jedoch Yapsy (?) Verwende, ist es etwas unrealistisch, von anderen Plug-Ins darauf zu verweisen. [^ 2] Wenn Sie erneut starten, wird der ursprüngliche Wert wiederhergestellt.

[^ 2]: Es scheint nichts zu geben, was ich nicht tun kann, aber ich erinnere mich, dass es sehr mühsam war.

Codebeispiel

pluginexample.py


MESSAGES = (
    'Hello',
    'Hi',
)

class PluginExample(BotPlugin):
    @botcmd
    def example_msg(self, msg, args):
        return MESSAGES[0]

Funktionsübersicht

Plugin config

Durch Definieren von "get_configuration_template ()" ist es möglich, die Einstellungen für jedes Plug-In zu verwalten. Die Einstellwerte, die hier behandelt werden können, können mit einem speziellen Befehl für den Bot eingefügt werden.

Auf die injizierte Konfiguration kann über "self.config" zugegriffen werden. Darüber hinaus wird dies im Speicher gespeichert, sodass es beim Neustart geladen wird.

Codebeispiel

pluginexample.py


class PluginExample(BotPlugin):
    def get_configuration_template(self):
        return {'ID_TOKEN': '00112233445566778899aabbccddeeff',
                'USERNAME':'changeme'}

    @botcmd
    def example_username(self, msg, args):
        return "Hi! I am " + self.config['USERNAME']

botcmd Beispiel [^ 3] [^ 4]

>>> !plugin config PluginExample {'ID_TOKEN' : '00112233445566778899aabbccddeeff', 'USERNAME':'changeme'}

[^ 3]: Von http://errbot.io/en/latest/user_guide/plugin_development/configuration.html [^ 4]: Beachten Sie, dass die Grammatik eval ist, nicht json

Funktionsübersicht

[^ 5]: Wenn Sie es beispielsweise mit dem Farmbase-Plug-In dauerhaft machen, handelt es sich um eine JSON-basierte Verwaltung, sodass jeder, der auf die Datenbank verweisen kann, den Einstellungswert sehen kann.

Plugin data

Wie zuvor geschrieben kann jede Plugin-Instanz einen unabhängigen Speicherbereich haben. Im Gegensatz zu config gibt es hier keine dedizierten Befehle, aber Sie können jederzeit zum richtigen Zeitpunkt des Plug-Verhaltens lesen und schreiben. Es wird in Echtzeit durch Speicherung beibehalten.

Codebeispiel

pluginexample.py


class PluginExample(BotPlugin):
    @botcmd
    def example_put(self, msg, args):
        put['msg'] = 'Test'
        return "pushed"

    @botcmd
    def example_pop(self, msg, args):
        put['msg'] = ''
        return "poped"

    @botcmd
    def example_see(self, msg, args):
        return put.get('msg', None)

Funktionsübersicht

(Bonus) Der Typ, der die oben angegebenen Codebeispiele verbunden hat

pluginexample.py


from errbot import BotPlugin, botcmd


MESSAGES = (
    'Hello',
    'Hi',
)

class PluginExample(BotPlugin):
    def get_configuration_template(self):
        return {'ID_TOKEN': '00112233445566778899aabbccddeeff',
                'USERNAME':'changeme'}

    @botcmd
    def example_admins(self, msg, args):
        print(self.bot_config)
        # self.bot_config.BOT_ADMINS = ['None']
        return self.bot_config.BOT_ADMINS

    @botcmd
    def example_msg(self, msg, args):
        return MESSAGES[0]

    @botcmd
    def example_username(self, msg, args):
        return "Hi! I am " + self.config['USERNAME']

    @botcmd
    def example_put(self, msg, args):
        self['msg'] = 'Test'
        return "pushed"

    @botcmd
    def example_pop(self, msg, args):
        self['msg'] = ''
        return "poped"

    @botcmd
    def example_see(self, msg, args):
        return self.get('msg', None)

Recommended Posts

Um den Ort, an dem der Wert von Errbot gespeichert ist
Der Wert von pyTorch torch.var () wird nicht verteilt
Ich möchte den Pfad des Verzeichnisses abrufen, in dem die laufende Datei gespeichert ist.
Finden Sie die Definition des Wertes von errno
Leider gibt es kein Gefühl der Einheit in der where-Methode
Ist die Niederschlagswahrscheinlichkeit korrekt?
Über den Rückgabewert von pthread_mutex_init ()
Über den Rückgabewert des Histogramms.
Wissenschaft "Ist Saito der Vertreter von Saito?"
Was ist die Ursache für den folgenden Fehler?
Wo ist der Python-Instanziierungsprozess geschrieben?
[Python] [Meta] Ist der Python-Typ ein Typ?
Ermitteln Sie den Wert der mittleren Schicht von NN
Der hintere Schrägstrich der japanischen Tastatur ist "ro".
Machen Sie den Standardwert des Arguments unveränderlich
Die Antwort von "1/2" unterscheidet sich zwischen Python2 und 3
Der Ursprung von Manjaro Linux ist "Mount Kirimanjaro"
Achten Sie auf den Rückgabewert von __len__
FAQ: Warum ist der Zahlenvergleich inkonsistent?
Versuchen Sie, die Daimyo-Matrix durch einen Singularwert zu zerlegen
Finden Sie den Bruchteil des in Python eingegebenen Werts heraus
Dies ist die einzige grundlegende Überprüfung von Python ~ 1 ~
Dies ist die einzige grundlegende Überprüfung von Python ~ 2 ~
Suchen Sie nach dem Wert der Instanz in der Liste
Dies ist die einzige grundlegende Überprüfung von Python ~ 3 ~
Holen Sie sich die Region, in der AWS Lambda ausgeführt wird
Rufen Sie den Speicherort der Datei ab, in der sich die Exe befindet, wenn Sie die von PyInstaller erstellte Exe ausführen
[Python Data Frame] Wenn der Wert leer ist, füllen Sie ihn mit dem Wert einer anderen Spalte.
Rückgabewert von quit () - Gibt es etwas, das von der "Funktion, die alles beendet" zurückgegeben wird?
Der Zeitpunkt, zu dem der Wert des Standardarguments ausgewertet wird, unterscheidet sich zwischen Ruby und Python.