Il semble que je vais l'utiliser en petites parties petit à petit, donc je vais le résumer un peu.
Un fichier de configuration à spécifier lors du démarrage d'Errbot. (Par défaut config.py
)
L'essentiel est de mettre des éléments qui affectent le comportement général d'Errbot, comme ce qu'il faut utiliser pour le back-end et le stockage. [^ 1]
Vous pouvez vous y référer avec self.bot_config
de la classe BotPlugin
.
Comme le fichier chargé est traité comme un module python tel quel, la valeur peut être modifiée pendant l'exécution. Cependant, si vous redémarrez, il reviendra naturellement à la valeur initiale.
[^ 1]: bien sûr, les autres valeurs sont OK
pluginexample.py
class PluginExample(BotPlugin):
@botcmd
def example_admins(self, msg, args):
return self.bot_config.BOT_ADMINS
Comme le fichier qui définit la classe BotPlugin est normalement importé individuellement en tant que module, les valeurs du même module peuvent être référencées sans aucun problème. Cependant, puisque j'utilise Yapsy (?), Il est un peu irréaliste de s'y référer à partir d'autres plug-ins. [^ 2] Encore une fois, si vous redémarrez, il reviendra à la valeur d'origine.
[^ 2]: Il semble n'y avoir rien que je ne puisse pas faire, mais je me souviens que c'était très gênant.
pluginexample.py
MESSAGES = (
'Hello',
'Hi',
)
class PluginExample(BotPlugin):
@botcmd
def example_msg(self, msg, args):
return MESSAGES[0]
config
En définissant get_configuration_template ()
, il est possible de gérer les paramètres de chaque plug-in.
Les valeurs de paramétrage qui peuvent être gérées ici peuvent être injectées avec une commande dédiée pour le bot.
La configuration injectée est accessible via self.config
.
De plus, il est stocké dans le stockage, il sera donc chargé lors du redémarrage.
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']
Exemple de botcmd [^ 3] [^ 4]
>>> !plugin config PluginExample {'ID_TOKEN' : '00112233445566778899aabbccddeeff', 'USERNAME':'changeme'}
[^ 3]: depuis http://errbot.io/en/latest/user_guide/plugin_development/configuration.html [^ 4]: Notez que la grammaire est eval, pas json
[^ 5]: Par exemple, si vous le rendez persistant avec le plug-in Firbase, il s'agit d'une gestion basée sur json, donc toute personne qui peut se référer à la base de données peut voir la valeur du paramètre.
data
Comme précédemment écrit, chaque instance de plugin peut avoir une zone de stockage indépendante.
Contrairement à config
, il n'y a pas de commandes dédiées ici, mais vous pouvez lire et écrire à tout moment au moment approprié du comportement du plug.
Il est conservé en temps réel par le stockage.
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