FoBot/modules/config.py
louis chauvet f03a952051 Config commands
Remove english translation for the moment, I add it later
Add basic configuration commands
Modify the organisation of translate dictionary and use .format method instead of %
2018-08-17 17:07:49 +02:00

118 lines
5.3 KiB
Python

import discord
import traductions as tr
class MainClass:
name = "config"
def __init__(self, guild):
self.guild = guild
self.forbiddenConfig = ["modules", "master_admins", "lang"]
async def lang(self, msg, command, args):
# Non authorized user
if msg.author.id not in self.guild.config["master_admins"]:
await msg.channel.send(tr.tr[self.guild.config["lang"]]["errors"]["PermissionError"])
return
else:
# No args
if len(args) == 0:
await msg.channel.send(tr.tr[self.guild.config["lang"]]["errors"]["NotEnoughParamError"])
return
# Unknown lang
elif args[0] not in tr.tr.keys():
await msg.channel.send(
tr.tr[self.guild.config["lang"]]["errors"]["LangNotFoundError"] \
.format(lang=args[0], prefix=self.guild.config["prefix"] * 2))
return
else:
# Normal case
self.guild.config["lang"] = args[0]
self.guild.save_config()
await msg.channel.send(tr.tr[self.guild.config["lang"]]["modules"]["config"]["lang"].format(lang=args[0]))
return
async def list_lang(self, msg, command, args):
embed = discord.Embed(title=tr.tr[self.guild.config["lang"]]["modules"]["config"]["list_lang"]["title"])
for lang in tr.tr.keys():
if lang == self.guild.config["lang"]:
embed.add_field(name="***" + lang + "***", value=tr.tr[lang]["description"])
else:
embed.add_field(name=lang, value=tr.tr[lang]["description"])
await msg.channel.send(embed=embed)
return
async def set(self, msg, command, args):
if msg.author.id not in self.guild.config["master_admins"]:
await msg.channel.send(tr.tr[self.guild.config["lang"]]["errors"]["PermissionError"])
return
else:
if args[0] not in self.guild.config.keys():
await msg.channel.send(tr.tr[self.guild.config["lang"]]["errors"]["UnknownConfigError"])
return
elif args[0] in self.forbiddenConfig:
await msg.channel.send(tr.tr[self.guild.config["lang"]]["errors"]["ForbiddenConfigError"])
return
else:
self.guild.config[args[0]] = args[1]
async def list(self, msg, command, args):
embed = discord.Embed(title=tr.tr[self.guild.config["lang"]]["modules"]["config"]["list"]["title"])
for param, description in tr.tr[self.guild.config["lang"]]["modules"]["config"]["list"]["params"].items():
embed.add_field(name=param, value=description)
await msg.channel.send(embed=embed)
async def add_master_admin(self, msg, command, args):
# Non authorized user
if msg.author.id not in self.guild.config["master_admins"]:
await msg.channel.send(tr.tr[self.guild.config["lang"]]["errors"]["PermissionError"])
return
else:
if len(msg.mentions) == 0:
await msg.send(tr.tr[self.guild.config["lang"]]["errors"]["NoMentionsError"])
return
else:
for user in msg.mentions:
if user.id not in self.guild.config["master_admins"]:
self.guild.config["master_admins"].append(user.id)
await msg.channel.send(tr.tr[self.guild.config["lang"]]["modules"]["config"]["add_master_admin"]\
.format(user=user.mention))
self.guild.save_config()
return
async def del_master_admin(self, msg, command, args):
# Non authorized user
if msg.author.id not in self.guild.config["master_admins"]:
await msg.channel.send(tr.tr[self.guild.config["lang"]]["errors"]["PermissionError"])
return
else:
if len(msg.mentions) == 0:
await msg.send(tr.tr[self.guild.config["lang"]]["errors"]["NoMentionsError"])
return
else:
for user in msg.mentions:
while user.id in self.guild.config["master_admins"]:
self.guild.config["master_admins"].remove(user.id)
await msg.channel.send(tr.tr[self.guild.config["lang"]]["modules"]["config"]["del_master_admin"] \
.format(user=user.mention))
self.guild.save_config()
return
async def on_message(self, msg):
if msg.content.startswith(self.guild.config["prefix"] * 2):
command, *args = msg.content.lstrip(self.guild.config["prefix"]).split(" ")
if command == "lang":
await self.lang(msg, command, args)
elif command == "list_lang":
await self.list_lang(msg, command, args)
elif command == "set":
await self.set(msg, command, args)
elif command == "list":
await self.list(msg, command, args)
elif command == "add_master_admin":
await self.add_master_admin(msg, command, args)
elif command == "del_master_admin":
await self.del_master_admin(msg, command, args)
return