LBI/modules/help.py

77 lines
3.7 KiB
Python
Raw Normal View History

2019-02-25 20:29:13 +01:00
import discord
2019-03-02 14:38:37 +01:00
2019-02-25 20:29:13 +01:00
class MainClass():
async def auth(self, user, moduleName):
if user.id in self.owners:
return True
try:
self.modules[moduleName][1].authlist
except:
return True
for guild in self.client.guilds:
if guild.get_member(user.id):
for roleid in self.modules[moduleName][1].authlist:
if roleid in [r.id for r in guild.get_member(user.id).roles]:
return True
2019-03-02 14:38:37 +01:00
2019-02-25 20:29:13 +01:00
def __init__(self, client, modules, owners, prefix):
self.client = client
self.modules = modules
self.owners = owners
self.prefix = prefix
2019-03-02 14:38:37 +01:00
self.events = ['on_message'] # events list
self.command = "%shelp" % self.prefix # command prefix (can be empty to catch every single messages)
2019-02-25 20:29:13 +01:00
2019-03-02 14:38:37 +01:00
self.name = "Aide"
self.description = "Module d'aide"
self.interactive = True
self.color = 0x3c9653
self.help = """\
2019-02-25 20:29:13 +01:00
</prefix>help list
=> Affiche une liste des modules ainsi qu'une description
</prefix>help <nom du module>
=> Affiche l'aide spécifique d'un module.
</prefix>help all
=> Affiche les aides de tous les modules
"""
2019-03-02 14:38:37 +01:00
2019-02-25 20:29:13 +01:00
async def on_message(self, message):
2019-03-02 14:38:37 +01:00
args = message.content.lower().split(' ')
if len(args) == 2 and args[1] == 'list':
embed = discord.Embed(title="[Aide] - Liste des modules", color=self.color)
2019-02-25 20:29:13 +01:00
for moduleName in list(self.modules.keys()):
if self.modules[moduleName][1].interactive and await self.auth(message.author, moduleName):
embed.add_field(name=moduleName.capitalize(), value=self.modules[moduleName][1].description)
await message.channel.send(embed=embed)
2019-03-02 14:38:37 +01:00
elif len(args) == 2 and args[1] in list(self.modules.keys()) and self.modules[args[1]][
1].interactive and await self.auth(message.author, args[1]):
await message.channel.send(embed=discord.Embed(title="[{0}] - Aide".format(args[1].capitalize()),
description=self.modules[args[1]][1].help.replace(
"</prefix>", self.prefix),
color=self.modules[args[1]][1].color))
elif len(args) == 2 and args[1] == 'all':
2019-02-25 20:29:13 +01:00
async with message.channel.typing():
for moduleName in list(self.modules.keys()):
if self.modules[moduleName][1].interactive and await self.auth(message.author, moduleName):
2019-03-02 14:38:37 +01:00
await message.channel.send(
embed=discord.Embed(title="[{0}] - Aide".format(moduleName.capitalize()),
description=self.modules[moduleName][1].help.replace("</prefix>",
self.prefix),
color=self.modules[moduleName][1].color))
2019-02-25 20:29:13 +01:00
else:
await self.modules['help'][1].send_help(message.channel, self)
async def send_help(self, channel, module):
2019-03-02 14:38:37 +01:00
moduleName = None
2019-02-25 20:29:13 +01:00
for name, listpck in self.modules.items():
if module == listpck[1]:
2019-03-02 14:38:37 +01:00
moduleName = name
2019-02-25 20:29:13 +01:00
break
2019-03-02 14:38:37 +01:00
await channel.send(embed=discord.Embed(title="[{0}] - Aide".format(moduleName.capitalize()),
description=self.modules[moduleName][1].help.replace("</prefix>",
self.prefix),
color=self.modules[moduleName][1].color))