Browse Source

simplifed parse settings function to be way more sane. Made printsettings output nicer.

tags/v2.0.0
Roxie Gibson 5 years ago
parent
commit
8323f3a102
1 changed files with 31 additions and 50 deletions
  1. +31
    -50
      roxbot/system.py

+ 31
- 50
roxbot/system.py View File

@@ -184,69 +184,50 @@ class System:
settingcontent = ""
setting = settings_to_copy.copy()
convert = setting.get("convert", None)

if convert is not None and not raw:
for x in convert.keys():
converter = None
convert_type = None
if convert[x] == "bool":
if setting[x] == 0:
setting[x] = "False"
setting[x] = False
else:
setting[x] = "True"
setting[x] = True
elif convert[x] == "channel":
if isinstance(setting[x], list):
if len(setting[x]) >= 60:
setting[x] = "There is too many channels to display."
else:
new_channels = []
for channel in setting[x]:
try:
new_channels.append(self.bot.get_channel(channel).mention)
except AttributeError:
new_channels.append(channel)
setting[x] = new_channels
else:
try:
setting[x] = self.bot.get_channel(setting[x]).mention
except AttributeError:
pass
converter = ctx.guild.get_channel
convert_type = "channel"
elif convert[x] == "role":
converter = ctx.guild.get_role
convert_type = "role"
elif convert[x] in ("user", "member"):
converter = ctx.guild.get_member
convert_type = "member"
elif convert[x] == "hide":
converter = None
setting[x] = "This is hidden. Please use other commands to get this data."
else:
convert_type = None
converter = None

if converter:
if isinstance(setting[x], list):
if len(setting[x]) >= 60:
setting[x] = "There is too many roles to display."
setting[x] = "There is too many {}s to display. Please use other commands to get this data.".format(convert_type)
else:
new_roles = []
for role_id in setting[x]:
new_entries = []
for entry in setting[x]:
try:
new_roles.append(discord.utils.get(ctx.guild.roles, id=role_id).name)
new_entries.append(converter(entry))
except AttributeError:
new_roles.append(role_id)
setting[x] = new_roles
new_entries.append(entry)
setting[x] = new_entries
else:
try:
setting[x] = discord.utils.get(ctx.guild.roles, id=setting[x]).name
setting[x] = converter(setting[x])
except AttributeError:
pass
elif convert[x] == "user":
if isinstance(setting[x], list):
if len(setting[x]) >= 60:
setting[x] = "There is too many users to display."
else:
new_users = []
for user_id in setting[x]:

user = self.bot.get_user(user_id)
if user is None:
new_users.append(str(user_id))
else:
new_users.append(str(user))
setting[x] = new_users
else:
user = self.bot.get_user(setting[x])
if user is None:
setting[x] = str(setting[x])
else:
setting[x] = str(user)
elif convert[x] == "hide":
setting[x] = "This is hidden. Please use other commands to get this data."

for x in setting.items():
if x[0] != "convert":
settingcontent += str(x).strip("()") + "\n"
@@ -258,12 +239,12 @@ class System:
"""OWNER OR ADMIN ONLY: Prints the servers settings file."""
config = roxbot.guild_settings.get(ctx.guild)
settings = dict(config.settings.copy()) # Make a copy of settings so we don't change the actual settings.
paginator = commands.Paginator(prefix="```md")
paginator = commands.Paginator(prefix="```py")
paginator.add_line("{} settings for {}.\n".format(self.bot.user.name, ctx.message.guild.name))
if option in settings:
raw = bool(ctx.invoked_with == "printsettingsraw")
settingcontent = self.parse_setting(ctx, settings[option], raw=raw)
paginator.add_line("**{}**".format(option))
paginator.add_line("@{}".format(option))
paginator.add_line(settingcontent)
for page in paginator.pages:
await ctx.send(page)
@@ -271,7 +252,7 @@ class System:
for setting in settings:
raw = bool(ctx.invoked_with == "printsettingsraw")
settingcontent = self.parse_setting(ctx, settings[setting], raw=raw)
paginator.add_line("**{}**".format(setting))
paginator.add_line("@{}".format(setting))
paginator.add_line(settingcontent)
for page in paginator.pages:
await ctx.send(page)

Loading…
Cancel
Save