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()
# ...