Launch the framework

EH Forwarder Bot offered 2 ways to launch the framework:

  • ehforwarderbot

  • python3 -m ehforwarderbot

Both commands are exactly the same thing, accept the same flags, run the same code. The latter is only a backup in case the former does not work.


  • -h, --help: Show help message

  • -p PROFILE, --profile PROFILE: Switch profile

    From version 2, EFB supports running different instances under the same user, identified by their profiles. The default profile is named default.

  • -V, --version: Print version information

    This shows version number of Python you are using, the EFB framework, and all channels and middlewares enabled.

  • -v, --verbose: Print verbose log

    This option enables verbose log of EFB and all enabled modules. This, together with --version, is particularly useful in debugging and issue reporting.

  • --trace-threads: Trace hanging threads

    This option is useful to identify source of the issue when you encounter situations where you had to force quit EFB. When this option is enabled, once the first stop signal (SIGINT or SIGTERM) is sent, threads that are asleep will be identified and reported every 10 seconds, until a second stop signal is seen.

    In order to use this option, you need to install extra Python dependencies using the following command.

    pip3 install 'ehforwarderbot[trace]'

Quitting EFB

If you started EFB in a shell, you can simply press Control-c to trigger the quit process. Otherwise, ask your service manager to issue a SIGTERM for a graceful exit. The exit process may take a few second to complete.


It is important for you to issue a graceful termination signal (e.g. SIGTERM), and NOT to use SIGKILL. Otherwise you may face the risk of losing data and breaking programs.

If you have encountered any issue quitting EFB, press Control-c for 5 times consecutively to trigger a force quit. In case you have frequently encountered situations where you had to force quit EFB, there might be a bug with EFB or any modules enabled. You may want to use the --trace-threads option described above to identify the source of issue, and report this to relevant developers.