Es scheint, dass ich es nach und nach in kleinen Teilen verwenden werde, also werde ich es ein wenig zusammenfassen.
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
pluginexample.py
class PluginExample(BotPlugin):
@botcmd
def example_admins(self, msg, args):
return self.bot_config.BOT_ADMINS
--Was müssen Sie immer die Kerneinstellungen setzen
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.
pluginexample.py
MESSAGES = (
'Hello',
'Hi',
)
class PluginExample(BotPlugin):
@botcmd
def example_msg(self, msg, args):
return MESSAGES[0]
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.
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
[^ 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.
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.
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)
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