Add !help [modulename]

This commit is contained in:
gammafn 2021-03-29 15:46:59 -05:00
parent b6774f15a4
commit 77d30c6a82
2 changed files with 35 additions and 10 deletions

View File

@ -75,7 +75,18 @@ class BotModule(ABC):
@abstractmethod @abstractmethod
def help(self): def help(self):
"""Return one-liner help text""" """Return one-liner help text"""
pass return 'A cool hemppa module'
def long_help(self, bot=None, room=None, event=None, args=[]):
"""Return longer help text
Used by help module as !help modulename [args ...]
bot, room, and event are passed to allow a module
to give contextual help
If not defined, falls back to short help
"""
return self.help()
def get_settings(self): def get_settings(self):
"""Must return a dict object that can be converted to JSON and sent to server """Must return a dict object that can be converted to JSON and sent to server

View File

@ -4,16 +4,30 @@ from modules.common.module import BotModule
class MatrixModule(BotModule): class MatrixModule(BotModule):
async def matrix_message(self, bot, room, event): async def matrix_message(self, bot, room, event):
msg = f'This is Hemppa {bot.version}, a generic Matrix bot. Known commands:\n\n'
for modulename, moduleobject in bot.modules.items(): args = event.body.split()[1:]
if moduleobject.enabled: if len(args) > 0:
msg = msg + '!' + modulename msg = ''
try: modulename = args.pop(0)
msg = msg + ' - ' + moduleobject.help() + '\n' moduleobject = bot.modules.get(modulename)
except AttributeError: if not moduleobject.enabled:
pass msg += f'{modulename} is disabled\n'
msg = msg + "\nMore information at https://github.com/vranki/hemppa" try:
msg += moduleobject.long_help(bot=bot, room=room, event=event, args=args)
except AttributeError:
msg += f'{modulename} has no help'
else:
msg = f'This is Hemppa {bot.version}, a generic Matrix bot. Known commands:\n\n'
for modulename, moduleobject in bot.modules.items():
if moduleobject.enabled:
msg = msg + '!' + modulename
try:
msg = msg + ' - ' + moduleobject.help() + '\n'
except AttributeError:
pass
msg = msg + "\nMore information at https://github.com/vranki/hemppa"
await bot.send_text(room, msg) await bot.send_text(room, msg)
def help(self): def help(self):