Browse Source

Used the preexisting convert dict to help convert IDs to str when saving JSON and vise versa un-deterministically. I only made it for UX. I'm an accidental genius. Oh and cleaned up a lil.

tags/v1.8.0
Roxie Gibson 6 years ago
parent
commit
00320b6d5f
3 changed files with 34 additions and 55 deletions
  1. +1
    -1
      roxbot/__init__.py
  2. +1
    -1
      roxbot/err_handle.py
  3. +32
    -53
      roxbot/guild_settings.py

+ 1
- 1
roxbot/__init__.py View File

[Found a bug or need to report an issue? Report it here](https://github.com/RainbowRoxxers/roxbot/issues/new) [Found a bug or need to report an issue? Report it here](https://github.com/RainbowRoxxers/roxbot/issues/new)
[Say Thanks](https://saythanks.io/to/Roxxers)""" [Say Thanks](https://saythanks.io/to/Roxxers)"""
__author__ = "Roxanne Gibson" __author__ = "Roxanne Gibson"
__version__ = "1.7.1"
__version__ = "1.8.0"

+ 1
- 1
roxbot/err_handle.py View File

self.bot = bot_client self.bot = bot_client
self.dev = False # For debugging self.dev = False # For debugging


async def on_error(self, event, *args, **kwargs):
async def on_error(self, event):
if self.dev: if self.dev:
traceback.print_exc() traceback.print_exc()
else: else:

+ 32
- 53
roxbot/guild_settings.py View File

} }





def _open_config(): def _open_config():
""" """
Opens the guild settings file Opens the guild settings file
with open('roxbot/settings/servers.json', 'r') as config_file: with open('roxbot/settings/servers.json', 'r') as config_file:
return json.load(config_file) return json.load(config_file)



def _write_changes(config): def _write_changes(config):
""" """
Writes given config to disk. Writes given config to disk.
with open('roxbot/settings/servers.json', 'w') as conf_file: with open('roxbot/settings/servers.json', 'w') as conf_file:
json.dump(config, conf_file) json.dump(config, conf_file)



def backup(config, name): def backup(config, name):
with open('roxbot/settings/backups/{}.json'.format(name), "w") as f: with open('roxbot/settings/backups/{}.json'.format(name), "w") as f:
json.dump(config, f) json.dump(config, f)



def remove_guild(guild): def remove_guild(guild):
settings = _open_config() settings = _open_config()
settings.pop(str(guild.id)) settings.pop(str(guild.id))
_write_changes(settings) _write_changes(settings)



def add_guild(guild): def add_guild(guild):
settings = _open_config() settings = _open_config()
settings[str(guild.id)] = guild_template["example"] settings[str(guild.id)] = guild_template["example"]
_write_changes(settings) _write_changes(settings)



def error_check(servers): def error_check(servers):
settings = _open_config() settings = _open_config()
for server in servers: for server in servers:
"WARNING: The settings file for {} was missing the {} setting in the {} cog. This has been fixed with the template version. It is disabled by default.".format( "WARNING: The settings file for {} was missing the {} setting in the {} cog. This has been fixed with the template version. It is disabled by default.".format(
server.name.upper(), setting.upper(), cog_setting.upper())) server.name.upper(), setting.upper(), cog_setting.upper()))



def get_all(guilds): def get_all(guilds):
""" """
Returns a list of GuildSettings for all guilds the bot can see. Returns a list of GuildSettings for all guilds the bot can see.
guild_list.append(guild) guild_list.append(guild)
return guild_list return guild_list



def get(guild): def get(guild):
""" """
Gets a single GuildSettings Object representing the settings of that guild Gets a single GuildSettings Object representing the settings of that guild
""" """
return GuildSettings(guild) return GuildSettings(guild)



def get_guild(guilds, wanted_guild): def get_guild(guilds, wanted_guild):
for guild in guilds: for guild in guilds:
if guild.id == wanted_guild.id: if guild.id == wanted_guild.id:
return guild return guild
return None return None



class GuildSettings(object): class GuildSettings(object):
""" """
An Object to store all settings for one guild. An Object to store all settings for one guild.
for setting in list_settings: for setting in list_settings:
yield setting yield setting


def refresh(self):
settings = _open_config()[str(self.id)]

# TODO: Make this not deterministic in future.
settings["logging"]["channel"] = int(settings["logging"]["channel"])
settings["greets"]["welcome-channel"] = int(settings["greets"]["welcome-channel"])
settings["goodbyes"]["goodbye-channel"] = int(settings["goodbyes"]["goodbye-channel"])
for role in settings["self_assign"]["roles"]:
index = settings["self_assign"]["roles"].index(role)
settings["self_assign"]["roles"][index] = int(role)
settings["twitch"]["channel"] = int(settings["twitch"]["channel"])
for user in settings["twitch"]["whitelist"]:
index = settings["twitch"]["whitelist"].index(user)
settings["twitch"]["whitelist"][index] = int(user)
for channel in settings["nsfw"]["channels"]:
index = settings["nsfw"]["channels"].index(channel)
settings["nsfw"]["channels"][index] = int(channel)
for admin in settings["perm_roles"]["admin"]:
index = settings["perm_roles"]["admin"].index(admin)
settings["perm_roles"]["admin"][index] = int(admin)
for mod in settings["perm_roles"]["mod"]:
index = settings["perm_roles"]["mod"].index(mod)
settings["perm_roles"]["mod"][index] = int(mod)
for user in settings["warnings"]:
for warning in settings["warnings"][user]:
index = settings["warnings"][user].index(warning)
warning["warned-by"] = int(warning["warned-by"])
settings["warnings"][user][index] = warning
@staticmethod
def _convert(settings, option="int"):
for key, setting in settings.items():
if setting.get("convert"):
for x in setting["convert"].keys():
if setting["convert"][x] != "bool":
if isinstance(setting[x], list):
for y, value in enumerate(setting[x]):
if option == "str":
setting[x][y] = str(value)
else:
setting[x][y] = int(value)
else:
if option == "str":
setting[x] = str(setting[x])
else:
setting[x] = int(setting[x])
settings[key] = setting
return settings return settings


def refresh(self):
settings = _open_config()[str(self.id)]
self._convert(settings)
return settings


def get_settings(self): def get_settings(self):
self.logging = self.settings["logging"] self.logging = self.settings["logging"]
else: else:
self.settings = changed_dict self.settings = changed_dict
settings = self.settings.copy() settings = self.settings.copy()
settings["logging"]["channel"] = str(settings["logging"]["channel"])
settings["greets"]["welcome-channel"] = str(settings["greets"]["welcome-channel"])
settings["goodbyes"]["goodbye-channel"] = str(settings["goodbyes"]["goodbye-channel"])
for role in settings["self_assign"]["roles"]:
index = settings["self_assign"]["roles"].index(role)
settings["self_assign"]["roles"][index] = str(role)
settings["twitch"]["channel"] = str(settings["twitch"]["channel"])
for user in settings["twitch"]["whitelist"]:
index = settings["twitch"]["whitelist"].index(user)
settings["twitch"]["whitelist"][index] = str(user)
for channel in settings["nsfw"]["channels"]:
index = settings["nsfw"]["channels"].index(channel)
settings["nsfw"]["channels"][index] = str(channel)
for admin in settings["perm_roles"]["admin"]:
index = settings["perm_roles"]["admin"].index(admin)
settings["perm_roles"]["admin"][index] = str(admin)
for mod in settings["perm_roles"]["mod"]:
index = settings["perm_roles"]["mod"].index(mod)
settings["perm_roles"]["mod"][index] = str(mod)
for user in settings["warnings"]:
for warning in settings["warnings"][user]:
index = settings["warnings"][user].index(warning)
warning["warned-by"] = str(warning["warned-by"])
settings["warnings"][user][index] = warning
self._convert(settings, "str")
json = _open_config() json = _open_config()
json[str(self.id)] = settings json[str(self.id)] = settings
_write_changes(json) _write_changes(json)

Loading…
Cancel
Save