[Core] Server based prefixes (#492)

Added `[p]set serverprefix`
`Bot.command_prefix` is now a callable that returns the prefixes set for the server. If none are set, it returns the global ones.
This commit is contained in:
Twentysix
2016-12-01 02:30:51 +01:00
committed by GitHub
parent 8b7ba988f4
commit d628bacef5
6 changed files with 127 additions and 62 deletions

View File

@@ -13,7 +13,9 @@ class Settings:
self.default_settings = {
"EMAIL": "EmailHere", "PASSWORD": "", "OWNER": "id_here",
"PREFIXES": [],
"default": {"ADMIN_ROLE": "Transistor", "MOD_ROLE": "Process"},
"default": {"ADMIN_ROLE": "Transistor",
"MOD_ROLE": "Process",
"PREFIXES": []},
"LOGIN_TYPE": "email"}
if not dataIO.is_valid_json(self.path):
self.bot_settings = self.default_settings
@@ -46,7 +48,9 @@ class Settings:
admin = self.bot_settings["ADMIN_ROLE"]
del self.bot_settings["MOD_ROLE"]
del self.bot_settings["ADMIN_ROLE"]
self.bot_settings["default"] = {"MOD_ROLE": mod, "ADMIN_ROLE": admin}
self.bot_settings["default"] = {"MOD_ROLE": mod,
"ADMIN_ROLE": admin,
"PREFIXES" : []}
self.save_settings()
@property
@@ -171,6 +175,25 @@ class Settings:
self.bot_settings[server.id]["MOD_ROLE"] = value
self.save_settings()
def get_server_prefixes(self, server):
if server is None or server.id not in self.bot_settings:
return self.prefixes
return self.bot_settings[server.id].get("PREFIXES", [])
def set_server_prefixes(self, server, prefixes):
if server is None:
return
assert isinstance(server, discord.Server)
if server.id not in self.bot_settings:
self.add_server(server.id)
self.bot_settings[server.id]["PREFIXES"] = prefixes
self.save_settings()
def get_prefixes(self, server):
"""Returns server's prefixes if set, otherwise global ones"""
p = self.get_server_prefixes(server)
return p if p else self.prefixes
def add_server(self, sid):
self.bot_settings[sid] = self.bot_settings["default"].copy()
self.save_settings()