diff --git a/aprsd/conf/common.py b/aprsd/conf/common.py index 07d69cc..710b80a 100644 --- a/aprsd/conf/common.py +++ b/aprsd/conf/common.py @@ -136,6 +136,11 @@ aprsd_opts = [ default=True, help="Set this to False, to disable logging of packets to the log file.", ), + cfg.BoolOpt( + "load_help_plugin", + default=True, + help="Set this to False to disable the help plugin.", + ), ] watch_list_opts = [ diff --git a/aprsd/plugin.py b/aprsd/plugin.py index 2819e81..e61c13a 100644 --- a/aprsd/plugin.py +++ b/aprsd/plugin.py @@ -472,9 +472,13 @@ class PluginManager: del self._pluggy_pm self.setup_plugins() - def setup_plugins(self, load_help_plugin=True): + def setup_plugins(self, load_help_plugin=None): """Create the plugin manager and register plugins.""" + # If load_help_plugin is not specified, load it from the config + if load_help_plugin is None: + load_help_plugin = CONF.load_help_plugin + LOG.info("Loading APRSD Plugins") # Help plugin is always enabled. if load_help_plugin: diff --git a/aprsd/threads/rx.py b/aprsd/threads/rx.py index 3c88958..4002541 100644 --- a/aprsd/threads/rx.py +++ b/aprsd/threads/rx.py @@ -328,8 +328,22 @@ class APRSDPluginProcessPacketThread(APRSDProcessPacketThread): # If the message was for us and we didn't have a # response, then we send a usage statement. if to_call == CONF.callsign and not replied: - LOG.warning("Sending help!") - message_text = "Unknown command! Send 'help' message for help" + + # Is the help plugin installed? + help_available = False + for p in pm.get_message_plugins(): + if isinstance(p, plugin.HelpPlugin): + help_available = True + break + + # Tailor the messages accordingly + if help_available: + LOG.warning("Sending help!") + message_text = "Unknown command! Send 'help' message for help" + else: + LOG.warning("Unknown command!") + message_text = "Unknown command!" + tx.send( packets.MessagePacket( from_call=CONF.callsign,