forked from sh-edraft.de/sh_discord_bot
		
	Fixed level stuff #90
This commit is contained in:
		| @@ -1,3 +1,4 @@ | ||||
| import discord | ||||
| from cpl_discord.container import Guild, Role | ||||
| from cpl_discord.service import DiscordBotServiceABC | ||||
| from cpl_query.extension import List | ||||
| @@ -26,14 +27,20 @@ class LevelSeeder(DataSeederABC): | ||||
|         self._default_levels = levels.levels.order_by_descending(lambda l: l.min_xp) | ||||
|  | ||||
|     async def _create_level(self, level: Level, guild: Guild, server: Server): | ||||
|         level.server = server | ||||
|         try: | ||||
|             if guild.roles.where(lambda r: r.name == level.name).first_or_default() is not None: | ||||
|                 return | ||||
|  | ||||
|             await guild.create_role(name=level.name, colour=Colour(int(level.color, 16)), hoist=False, mentionable=True, permissions=Permissions(level.permissions)) | ||||
|             self._logger.info(__name__, f'Created level {level.name}') | ||||
|             level.server = server | ||||
|             self._levels.add_level(level) | ||||
|  | ||||
|             if self._levels.find_levels_by_server_id(server.server_id).where(lambda l: l == level).first_or_default() is not None: | ||||
|                 self._levels.add_level(level) | ||||
|         except discord.errors.Forbidden as e: | ||||
|             self._logger.error(__name__, f'Creating level failed', e) | ||||
|             level.permissions = 0 | ||||
|             self._levels.update_level(level) | ||||
|         except Exception as e: | ||||
|             self._logger.error(__name__, f'Creating level failed', e) | ||||
|  | ||||
| @@ -66,6 +73,7 @@ class LevelSeeder(DataSeederABC): | ||||
|             if created_default: | ||||
|                 continue | ||||
|  | ||||
|             levels = levels.order_by_descending(lambda l: l.min_xp) | ||||
|             position_above_levels = guild.roles.where(lambda r: r.name == self._level_header).single().position | ||||
|             for role in guild.roles.order_by_descending(lambda r: r.position): | ||||
|                 if levels.where(lambda l: l.name == role.name).count() == 0: | ||||
|   | ||||
| @@ -76,7 +76,7 @@ class LevelService: | ||||
|         level_settings: LevelServerSettings = self._config.get_configuration(f'LevelServerSettings_{guild.id}') | ||||
|         await self._message_service.send_channel_message( | ||||
|             self._bot.get_channel(level_settings.changed_level_notification_channel), | ||||
|             self._t.transform('modules.level.new_level_message'.format(member.id, level.name)), | ||||
|             self._t.transform('modules.level.new_level_message').format(member.id, level.name), | ||||
|             is_persistent=True | ||||
|         ) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user