fulvia/modules/help.py

45 lines
1.1 KiB
Python
Raw Normal View History

2018-03-16 03:13:43 -04:00
#!/usr/bin/env python3
"""
Displays help docs and examples for commands, as well as lists all commands
available.
"""
import random
from module import commands, example
@commands('help', 'commands')
@example('.help tell')
def help(bot, trigger):
"""Shows a command's documentation, and possibly an example."""
if trigger.group(2):
name = trigger.group(2)
name = name.lower()
if name not in bot.commands:
2018-03-16 03:13:43 -04:00
return
2018-05-25 13:46:43 -04:00
cmd = bot.commands[name]
docstring, examples = cmd.doc
2018-03-16 03:13:43 -04:00
if examples:
ex = random.choice(examples)
bot.msg(docstring)
2018-05-25 13:46:43 -04:00
if cmd.aliases:
bot.msg("Aliases: " + ", ".join(cmd.aliases))
if ex[0]:
2018-03-16 03:13:43 -04:00
bot.msg("Ex. In: " + ex[0])
2018-05-25 13:46:43 -04:00
if ex[1]:
bot.msg("Ex. Out: " + ex[1])
2018-03-16 03:13:43 -04:00
else:
if trigger.owner:
cmds = [cmd for _, cmd in bot.commands.items()]
elif trigger.admin:
cmds = [cmd for _, cmd in bot.commands.items() if cmd.priv <= 5]
else:
priv = bot.channels[trigger.channel].privileges[trigger.nick]
cmds = [cmd for _, cmd in bot.commands.items() if cmd.priv <= priv]
2018-05-25 13:46:43 -04:00
cmds = [cmd.name for cmd in cmds if cmd.canonical]
cmds = sorted(cmds)
2018-03-16 03:13:43 -04:00
msg = "Available commands: " + ", ".join(cmds)
bot.msg(msg)