[PYTHON] Autour de l'endroit où la valeur d'Errbot est stockée

Il semble que je vais l'utiliser en petites parties petit à petit, donc je vais le résumer un peu.

Fichier de configuration de démarrage d'Errbot

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

Exemple de code

pluginexample.py


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

Résumé des fonctionnalités

Variables dans le module du plug-in (variables d'instance et variables de module)

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.

Exemple de code

pluginexample.py


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

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

Résumé des fonctionnalités

Plugin 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.

Exemple de code

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

Résumé des fonctionnalités

[^ 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.

Plugin 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.

Exemple de code

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)

Résumé des fonctionnalités

(Bonus) Le gars qui a connecté les exemples de code donnés ci-dessus

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

Autour de l'endroit où la valeur d'Errbot est stockée
La valeur de pyTorch torch.var () n'est pas distribuée
Je veux obtenir le chemin du répertoire où le fichier en cours d'exécution est stocké.
Trouvez la définition de la valeur de errno
Malheureusement, il n'y a pas de sens d'unité dans la méthode where
La probabilité de précipitation est-elle correcte?
À propos de la valeur de retour de pthread_mutex_init ()
À propos de la valeur de retour de l'histogramme.
Science "Saito est-il le représentant de Saito?"
Quelle est la cause de l'erreur suivante?
Où est écrit le processus d'instanciation python?
[python] [meta] Le type de python est-il un type?
Obtenez la valeur de la couche intermédiaire de NN
La barre oblique arrière du clavier japonais est "ro"
Rendre la valeur par défaut de l'argument immuable
La réponse de "1/2" est différente entre python2 et 3
L'origine de Manjaro Linux est "Mount Kirimandjaro"
Attention à la valeur de retour de __len__
FAQ: Pourquoi la comparaison des nombres est-elle incohérente?
Essayez de décomposer la matrice daimyo par valeur singulière
Découvrez la fraction de la valeur saisie en python
Ceci est le seul examen de base de Python ~ 1 ~
Ceci est le seul examen de base de Python ~ 2 ~
Rechercher par la valeur de l'instance dans la liste
Ceci est le seul examen de base de Python ~ 3 ~
Obtenir la région dans laquelle AWS Lambda s'exécute
Obtenez l'emplacement du fichier où se trouve l'exe lors de l'exécution de l'exe créé par PyInstaller
[Python Data Frame] Lorsque la valeur est vide, remplissez-la avec la valeur d'une autre colonne.
Valeur de retour de quit () -Y a-t-il quelque chose retourné par la "fonction qui termine tout"?
Le moment auquel la valeur de l'argument par défaut est évaluée diffère entre Ruby et Python.