45 lines
1.1 KiB
Python
Executable File
45 lines
1.1 KiB
Python
Executable File
#!/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:
|
|
return
|
|
cmd = bot.commands[name]
|
|
docstring, examples = cmd.doc
|
|
if examples:
|
|
ex = random.choice(examples)
|
|
|
|
bot.msg(docstring)
|
|
if cmd.aliases:
|
|
bot.msg("Aliases: " + ", ".join(cmd.aliases))
|
|
if ex[0]:
|
|
bot.msg("Ex. In: " + ex[0])
|
|
if ex[1]:
|
|
bot.msg("Ex. Out: " + ex[1])
|
|
|
|
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]
|
|
|
|
cmds = [cmd.name for cmd in cmds if cmd.canonical]
|
|
cmds = sorted(cmds)
|
|
msg = "Available commands: " + ", ".join(cmds)
|
|
bot.msg(msg)
|