Browse Source

Fixed two errors with guildsettings managment. Limited to guild working as intended and adding guilds on guildjoin

tags/v2.0.0
Roxie Gibson 5 years ago
parent
commit
5ad2392312
2 changed files with 26 additions and 24 deletions
  1. +3
    -3
      main.py
  2. +23
    -21
      roxbot/guild_settings.py

+ 3
- 3
main.py View File



@bot.event @bot.event
async def on_guild_join(guild): async def on_guild_join(guild):
gs.add_guild(guild)
gs.add_guild(guild, bot.cogs)




@bot.event @bot.event


return await ctx.channel.send(embed=em) return await ctx.channel.send(embed=em)



@commands.command(pass_context=False, hidden=True) @commands.command(pass_context=False, hidden=True)
async def settings(): async def settings():
# This is to block any customcommand or command from being made with the same name. # This is to block any customcommand or command from being made with the same name.
if __name__ == "__main__": if __name__ == "__main__":
# Pre-Boot checks # Pre-Boot checks
if not os.path.isfile("roxbot/settings/preferences.ini"): if not os.path.isfile("roxbot/settings/preferences.ini"):
print(
"PREFERENCE FILE MISSING. Something has gone wrong. Please make sure there is a file called 'preferences.ini' in the settings folder")
print("PREFERENCE FILE MISSING. Please make sure there is a file called 'preferences.ini' in the settings folder")
exit(0) exit(0)


start_time = time.time() start_time = time.time()

+ 23
- 21
roxbot/guild_settings.py View File

print('Directory not copied. Error: %s' % e) print('Directory not copied. Error: %s' % e)




def remove_guild(guild):
"""Removes given guild from settings folders and saves changes."""
shutil.rmtree('roxbot/settings/server/{}'.format(guild.id))


def add_guild(guild, cogs):
"""Adds given guild to settings folder saves changes."""
_make_server_folder(guild, cogs)


def _make_cog_json_file(server_id, name, data): def _make_cog_json_file(server_id, name, data):
with open("roxbot/settings/servers/{}/{}.json".format(server_id, name), "w") as fp: with open("roxbot/settings/servers/{}/{}.json".format(server_id, name), "w") as fp:
return json.dump(data, fp) return json.dump(data, fp)



def _check_for_missing_cog(server_id, name, cog): def _check_for_missing_cog(server_id, name, cog):
try: try:
if cog.settings and (cog.settings.get("limited_to_guild", server_id) == server_id):
try:
cog.settings.pop("limited_to_guild")
except KeyError:
pass # limited_to_guild is a arg that can be passed to limit a cog to one server.
if cog.settings:
settings = cog.settings.copy()
limited = settings.get("limited_to_guild")
if limited:
if limited != server_id:
return False
else:
settings.pop("limited_to_guild")

if "{}.json".format(name) not in os.listdir("roxbot/settings/servers/{}".format(server_id)): if "{}.json".format(name) not in os.listdir("roxbot/settings/servers/{}".format(server_id)):
_make_cog_json_file(server_id, name, cog.settings)
_make_cog_json_file(server_id, name, settings)
return True return True
except AttributeError: except AttributeError:
pass # If Cog has no settings pass # If Cog has no settings


else: else:
for server in servers: for server in servers:
# Server ID made a string for ease of use
server_id = str(server.id)

# Check for missing server # Check for missing server
if server_id not in os.listdir("roxbot/settings/servers/"):
if str(server.id) not in os.listdir("roxbot/settings/servers/"):
_make_server_folder(server, cogs) _make_server_folder(server, cogs)
print("WARNING: The settings folder for {} was not found. The defaults have been created.".format(str(server))) print("WARNING: The settings folder for {} was not found. The defaults have been created.".format(str(server)))


# Check for missing cog settings # Check for missing cog settings
for name, cog in cogs.items(): for name, cog in cogs.items():
resp = _check_for_missing_cog(server_id, name, cog)
resp = _check_for_missing_cog(str(server.id), name, cog)
if resp: if resp:
print("WARNING: The settings folder for {} is missing the file {}. The defaults have been created.".format(str(server), name)) print("WARNING: The settings folder for {} is missing the file {}. The defaults have been created.".format(str(server), name))




def remove_guild(guild):
"""Removes given guild from settings folders and saves changes."""
shutil.rmtree('roxbot/settings/server/{}'.format(guild.id))


def add_guild(guild, cogs):
"""Adds given guild to settings folder saves changes."""
_make_server_folder(guild, cogs)


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

Loading…
Cancel
Save