Configuraciones y almacenamiento

Configuraciones y almacenamiento permanente

Como se describe en :doc: / directories, cada módulo ha sido asignado con una carpeta por perfil para configuraciones y otro almacenamiento. La ruta se puede obtener usando get_data_path() con su ID de módulo. Todo ese almacenamiento es específico para un solo perfil.

Para configuraciones, recomendamos usar``<module_data_path>/config.yaml`` . De forma similar, preparamos :meth:`~.ehforwarderbot.utils.get_config_path`para obtener la ruta del archivo de configuración predeterminado. Nuevamente, no está obligado a usar este nombre o YAML como el formato de su archivo de configuración.

Por lo general, en la carpeta de almacenamiento existen:

  • Archivos de configuración

  • Credenciales de usuario / Almacenamiento de sesión

  • Base de datos

Almacenamiento temporal

Al procesar mensajes multimedia, inevitablemente necesitamos almacenar ciertos archivos temporalmente, ya sea dentro del canal o entre canales. Por lo general, los archivos temporales se pueden manejar con la biblioteca `` tempfile`` de Python.

Wizard

If your module requires relatively complicated configuration, it would be helpful to provide users with a wizard to check prerequisites of your module and guide them to setup your module for use.

From version 2, EFB introduced a centralised wizard program to allow users to enable or disable modules in a text-based user interface (TUI). If you want to include your wizard program as a part of the wizard, you can include a new entry point in your setup.py with Setuptools” Entry Point feature.

The group for wizard program is ehforwarderbot.wizard, and the entry point function MUST accept 2 positional arguments: profile ID and instance ID.

Example

setup.py script

setup(
    # ...
    entry_points={
        "ehforwarderbot.wizard": ['alice.irc = efb_irc_slave.wizard:main']
    },
    # ...
)

.egg-info/entry_points.txt

[ehforwarderbot.wizard]
alice.irc = efb_irc_slave.wizard:main

efb_irc_slave/wizard.py

# ...

def main(profile, instance):
    print("Welcome to the setup wizard of my channel.")
    print("You are setting up this channel in profile "
          "'{0}' and instance '{1}'.".format(profile, instance))
    print("Press ENTER/RETURN to continue.")
    input()

    step1()

    # ...