Formatted stuff #405
This commit is contained in:
@@ -108,17 +108,13 @@ class LevelGroup(DiscordCommandABC):
|
||||
|
||||
except Exception as e:
|
||||
self._logger.error(__name__, f"Level seeding failed", e)
|
||||
await self._message_service.send_ctx_msg(
|
||||
ctx, self._t.transform("modules.level.seeding_failed")
|
||||
)
|
||||
await self._message_service.send_ctx_msg(ctx, self._t.transform("modules.level.seeding_failed"))
|
||||
|
||||
async def _level_auto_complete(
|
||||
self, interaction: discord.Interaction, current: str
|
||||
) -> TList[app_commands.Choice[str]]:
|
||||
server = self._servers.get_server_by_discord_id(interaction.guild.id)
|
||||
levels = self._levels.get_levels_by_server_id(server.id).select(
|
||||
lambda l: l.name
|
||||
)
|
||||
levels = self._levels.get_levels_by_server_id(server.id).select(lambda l: l.name)
|
||||
return [
|
||||
app_commands.Choice(name=level, value=level)
|
||||
for level in self._client_utils.get_auto_complete_list(levels, current)
|
||||
@@ -138,20 +134,14 @@ class LevelGroup(DiscordCommandABC):
|
||||
if ctx.guild is None:
|
||||
return
|
||||
|
||||
server_config: ServerConfig = self._config.get_configuration(
|
||||
f"ServerConfig_{ctx.guild.id}"
|
||||
)
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(
|
||||
server_config.feature_flags, FeatureFlagsEnum.level_module
|
||||
):
|
||||
server_config: ServerConfig = self._config.get_configuration(f"ServerConfig_{ctx.guild.id}")
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(server_config.feature_flags, FeatureFlagsEnum.level_module):
|
||||
return
|
||||
|
||||
server = self._servers.get_server_by_discord_id(ctx.guild.id)
|
||||
levels = self._levels.get_levels_by_server_id(server.id)
|
||||
if levels.count() < 1:
|
||||
await self._message_service.send_ctx_msg(
|
||||
ctx, self._t.transform("modules.level.error.nothing_found")
|
||||
)
|
||||
await self._message_service.send_ctx_msg(ctx, self._t.transform("modules.level.error.nothing_found"))
|
||||
self._logger.trace(__name__, f"Finished command level list")
|
||||
return
|
||||
|
||||
@@ -173,9 +163,7 @@ class LevelGroup(DiscordCommandABC):
|
||||
value=level_name,
|
||||
inline=True,
|
||||
)
|
||||
embed.add_field(
|
||||
name=self._t.transform("modules.level.list.min_xp"), value=xp, inline=True
|
||||
)
|
||||
embed.add_field(name=self._t.transform("modules.level.list.min_xp"), value=xp, inline=True)
|
||||
embed.add_field(
|
||||
name=self._t.transform("modules.level.list.permission_int"),
|
||||
value=permissions,
|
||||
@@ -188,19 +176,13 @@ class LevelGroup(DiscordCommandABC):
|
||||
@commands.guild_only()
|
||||
@CommandChecks.check_is_ready()
|
||||
@CommandChecks.check_is_member_admin()
|
||||
async def create(
|
||||
self, ctx: Context, name: str, color: str, min_xp: int, permissions: int
|
||||
):
|
||||
async def create(self, ctx: Context, name: str, color: str, min_xp: int, permissions: int):
|
||||
self._logger.debug(__name__, f"Received command level create {ctx}")
|
||||
if ctx.guild is None:
|
||||
return
|
||||
|
||||
server_config: ServerConfig = self._config.get_configuration(
|
||||
f"ServerConfig_{ctx.guild.id}"
|
||||
)
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(
|
||||
server_config.feature_flags, FeatureFlagsEnum.level_module
|
||||
):
|
||||
server_config: ServerConfig = self._config.get_configuration(f"ServerConfig_{ctx.guild.id}")
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(server_config.feature_flags, FeatureFlagsEnum.level_module):
|
||||
return
|
||||
|
||||
try:
|
||||
@@ -226,26 +208,19 @@ class LevelGroup(DiscordCommandABC):
|
||||
self._logger.debug(__name__, f"Level with name {level.name} already exists")
|
||||
await self._message_service.send_ctx_msg(
|
||||
ctx,
|
||||
self._t.transform(
|
||||
"modules.level.error.level_with_name_already_exists"
|
||||
).format(level.name),
|
||||
self._t.transform("modules.level.error.level_with_name_already_exists").format(level.name),
|
||||
)
|
||||
elif (
|
||||
levels.where(lambda l: l.min_xp == level.min_xp).first_or_default()
|
||||
is not None
|
||||
):
|
||||
elif levels.where(lambda l: l.min_xp == level.min_xp).first_or_default() is not None:
|
||||
self._logger.debug(
|
||||
__name__,
|
||||
f"Level with min_xp {level.min_xp} already exists {level.name}",
|
||||
)
|
||||
found_level = levels.where(
|
||||
lambda l: l.min_xp == level.min_xp
|
||||
).first_or_default()
|
||||
found_level = levels.where(lambda l: l.min_xp == level.min_xp).first_or_default()
|
||||
await self._message_service.send_ctx_msg(
|
||||
ctx,
|
||||
self._t.transform(
|
||||
"modules.level.error.level_with_xp_already_exists"
|
||||
).format(found_level.name, found_level.min_xp),
|
||||
self._t.transform("modules.level.error.level_with_xp_already_exists").format(
|
||||
found_level.name, found_level.min_xp
|
||||
),
|
||||
)
|
||||
else:
|
||||
try:
|
||||
@@ -264,9 +239,7 @@ class LevelGroup(DiscordCommandABC):
|
||||
else:
|
||||
await self._message_service.send_ctx_msg(
|
||||
ctx,
|
||||
self._t.transform("modules.level.create.created").format(
|
||||
name, permissions
|
||||
),
|
||||
self._t.transform("modules.level.create.created").format(name, permissions),
|
||||
)
|
||||
await self._seed_levels(ctx)
|
||||
|
||||
@@ -303,19 +276,13 @@ class LevelGroup(DiscordCommandABC):
|
||||
if ctx.guild is None:
|
||||
return
|
||||
|
||||
server_config: ServerConfig = self._config.get_configuration(
|
||||
f"ServerConfig_{ctx.guild.id}"
|
||||
)
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(
|
||||
server_config.feature_flags, FeatureFlagsEnum.level_module
|
||||
):
|
||||
server_config: ServerConfig = self._config.get_configuration(f"ServerConfig_{ctx.guild.id}")
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(server_config.feature_flags, FeatureFlagsEnum.level_module):
|
||||
return
|
||||
|
||||
server = self._servers.get_server_by_discord_id(ctx.guild.id)
|
||||
level_from_db = (
|
||||
self._levels.get_levels_by_server_id(server.id)
|
||||
.where(lambda l: l.name == level)
|
||||
.single_or_default()
|
||||
self._levels.get_levels_by_server_id(server.id).where(lambda l: l.name == level).single_or_default()
|
||||
)
|
||||
if level_from_db is None:
|
||||
await self._message_service.send_ctx_msg(
|
||||
@@ -349,13 +316,9 @@ class LevelGroup(DiscordCommandABC):
|
||||
except Exception as e:
|
||||
await self._message_service.send_ctx_msg(
|
||||
ctx,
|
||||
self._t.transform("modules.level.edit.permission_invalid").format(
|
||||
permissions
|
||||
),
|
||||
)
|
||||
self._logger.error(
|
||||
__name__, f"Error parsing permissions {permissions}", e
|
||||
self._t.transform("modules.level.edit.permission_invalid").format(permissions),
|
||||
)
|
||||
self._logger.error(__name__, f"Error parsing permissions {permissions}", e)
|
||||
return
|
||||
|
||||
try:
|
||||
@@ -377,9 +340,7 @@ class LevelGroup(DiscordCommandABC):
|
||||
e,
|
||||
)
|
||||
else:
|
||||
await self._message_service.send_ctx_msg(
|
||||
ctx, self._t.transform("modules.level.edit.edited").format(level)
|
||||
)
|
||||
await self._message_service.send_ctx_msg(ctx, self._t.transform("modules.level.edit.edited").format(level))
|
||||
await self._seed_levels(ctx)
|
||||
|
||||
self._logger.trace(__name__, f"Finished command level edit")
|
||||
@@ -413,19 +374,13 @@ class LevelGroup(DiscordCommandABC):
|
||||
if ctx.guild is None:
|
||||
return
|
||||
|
||||
server_config: ServerConfig = self._config.get_configuration(
|
||||
f"ServerConfig_{ctx.guild.id}"
|
||||
)
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(
|
||||
server_config.feature_flags, FeatureFlagsEnum.level_module
|
||||
):
|
||||
server_config: ServerConfig = self._config.get_configuration(f"ServerConfig_{ctx.guild.id}")
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(server_config.feature_flags, FeatureFlagsEnum.level_module):
|
||||
return
|
||||
|
||||
server = self._servers.get_server_by_discord_id(ctx.guild.id)
|
||||
level_from_db = (
|
||||
self._levels.get_levels_by_server_id(server.id)
|
||||
.where(lambda l: l.name == level)
|
||||
.first_or_default()
|
||||
self._levels.get_levels_by_server_id(server.id).where(lambda l: l.name == level).first_or_default()
|
||||
)
|
||||
if level_from_db is None:
|
||||
self._logger.debug(__name__, f"level {level} not found")
|
||||
@@ -440,9 +395,7 @@ class LevelGroup(DiscordCommandABC):
|
||||
self._levels.delete_level(level_from_db)
|
||||
self._db.save_changes()
|
||||
guild: Guild = self._bot.guilds.where(lambda g: g == ctx.guild).single()
|
||||
role: Role = guild.roles.where(
|
||||
lambda r: r.name == level
|
||||
).single_or_default()
|
||||
role: Role = guild.roles.where(lambda r: r.name == level).single_or_default()
|
||||
if role is not None:
|
||||
await role.delete()
|
||||
self._logger.info(__name__, f"Removed level {level}")
|
||||
@@ -471,12 +424,8 @@ class LevelGroup(DiscordCommandABC):
|
||||
if ctx.guild is None:
|
||||
return
|
||||
|
||||
server_config: ServerConfig = self._config.get_configuration(
|
||||
f"ServerConfig_{ctx.guild.id}"
|
||||
)
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(
|
||||
server_config.feature_flags, FeatureFlagsEnum.level_module
|
||||
):
|
||||
server_config: ServerConfig = self._config.get_configuration(f"ServerConfig_{ctx.guild.id}")
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(server_config.feature_flags, FeatureFlagsEnum.level_module):
|
||||
return
|
||||
|
||||
if member.bot:
|
||||
@@ -485,16 +434,12 @@ class LevelGroup(DiscordCommandABC):
|
||||
server = self._servers.get_server_by_discord_id(ctx.guild.id)
|
||||
user = self._users.get_user_by_discord_id_and_server_id(member.id, server.id)
|
||||
level = self._level_service.get_level(user)
|
||||
levels = self._levels.get_levels_by_server_id(server.id).order_by(
|
||||
lambda l: l.min_xp
|
||||
)
|
||||
levels = self._levels.get_levels_by_server_id(server.id).order_by(lambda l: l.min_xp)
|
||||
|
||||
if level == levels.first():
|
||||
await self._message_service.send_ctx_msg(
|
||||
ctx,
|
||||
self._t.transform("modules.level.down.already_first").format(
|
||||
member.mention
|
||||
),
|
||||
self._t.transform("modules.level.down.already_first").format(member.mention),
|
||||
)
|
||||
self._logger.trace(__name__, f"Finished command level down")
|
||||
return
|
||||
@@ -506,15 +451,11 @@ class LevelGroup(DiscordCommandABC):
|
||||
self._db.save_changes()
|
||||
await self._message_service.send_ctx_msg(
|
||||
ctx,
|
||||
self._t.transform("modules.level.down.success").format(
|
||||
member.mention, new_level.name
|
||||
),
|
||||
self._t.transform("modules.level.down.success").format(member.mention, new_level.name),
|
||||
)
|
||||
await self._level_service.set_level(user)
|
||||
except Exception as e:
|
||||
self._logger.error(
|
||||
__name__, f"Cannot level down {member.name} with level {level.name}", e
|
||||
)
|
||||
self._logger.error(__name__, f"Cannot level down {member.name} with level {level.name}", e)
|
||||
await self._message_service.send_ctx_msg(
|
||||
ctx,
|
||||
self._t.transform("modules.level.down.failed").format(member.mention),
|
||||
@@ -531,12 +472,8 @@ class LevelGroup(DiscordCommandABC):
|
||||
if ctx.guild is None:
|
||||
return
|
||||
|
||||
server_config: ServerConfig = self._config.get_configuration(
|
||||
f"ServerConfig_{ctx.guild.id}"
|
||||
)
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(
|
||||
server_config.feature_flags, FeatureFlagsEnum.level_module
|
||||
):
|
||||
server_config: ServerConfig = self._config.get_configuration(f"ServerConfig_{ctx.guild.id}")
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(server_config.feature_flags, FeatureFlagsEnum.level_module):
|
||||
return
|
||||
|
||||
if member.bot:
|
||||
@@ -545,16 +482,12 @@ class LevelGroup(DiscordCommandABC):
|
||||
server = self._servers.get_server_by_discord_id(ctx.guild.id)
|
||||
user = self._users.get_user_by_discord_id_and_server_id(member.id, server.id)
|
||||
level = self._level_service.get_level(user)
|
||||
levels = self._levels.get_levels_by_server_id(server.id).order_by(
|
||||
lambda l: l.min_xp
|
||||
)
|
||||
levels = self._levels.get_levels_by_server_id(server.id).order_by(lambda l: l.min_xp)
|
||||
|
||||
if level.name == levels.last().name:
|
||||
await self._message_service.send_ctx_msg(
|
||||
ctx,
|
||||
self._t.transform("modules.level.up.already_last").format(
|
||||
member.mention
|
||||
),
|
||||
self._t.transform("modules.level.up.already_last").format(member.mention),
|
||||
)
|
||||
self._logger.trace(__name__, f"Finished command level up")
|
||||
return
|
||||
@@ -566,15 +499,11 @@ class LevelGroup(DiscordCommandABC):
|
||||
self._db.save_changes()
|
||||
await self._message_service.send_ctx_msg(
|
||||
ctx,
|
||||
self._t.transform("modules.level.up.success").format(
|
||||
member.mention, new_level.name
|
||||
),
|
||||
self._t.transform("modules.level.up.success").format(member.mention, new_level.name),
|
||||
)
|
||||
await self._level_service.set_level(user)
|
||||
except Exception as e:
|
||||
self._logger.error(
|
||||
__name__, f"Cannot level up {member.name} with level {level.name}", e
|
||||
)
|
||||
self._logger.error(__name__, f"Cannot level up {member.name} with level {level.name}", e)
|
||||
await self._message_service.send_ctx_msg(
|
||||
ctx, self._t.transform("modules.level.up.failed").format(member.mention)
|
||||
)
|
||||
@@ -590,12 +519,8 @@ class LevelGroup(DiscordCommandABC):
|
||||
if ctx.guild is None:
|
||||
return
|
||||
|
||||
server_config: ServerConfig = self._config.get_configuration(
|
||||
f"ServerConfig_{ctx.guild.id}"
|
||||
)
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(
|
||||
server_config.feature_flags, FeatureFlagsEnum.level_module
|
||||
):
|
||||
server_config: ServerConfig = self._config.get_configuration(f"ServerConfig_{ctx.guild.id}")
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(server_config.feature_flags, FeatureFlagsEnum.level_module):
|
||||
return
|
||||
|
||||
if member.bot:
|
||||
@@ -604,11 +529,7 @@ class LevelGroup(DiscordCommandABC):
|
||||
server = self._servers.get_server_by_discord_id(ctx.guild.id)
|
||||
user = self._users.get_user_by_discord_id_and_server_id(member.id, server.id)
|
||||
current_level = self._level_service.get_level(user)
|
||||
new_level = (
|
||||
self._levels.get_levels_by_server_id(server.id)
|
||||
.where(lambda l: l.name == level)
|
||||
.single_or_default()
|
||||
)
|
||||
new_level = self._levels.get_levels_by_server_id(server.id).where(lambda l: l.name == level).single_or_default()
|
||||
|
||||
if new_level is None:
|
||||
await self._message_service.send_ctx_msg(
|
||||
@@ -620,9 +541,7 @@ class LevelGroup(DiscordCommandABC):
|
||||
if current_level.name == level:
|
||||
await self._message_service.send_ctx_msg(
|
||||
ctx,
|
||||
self._t.transform("modules.level.set.already_level").format(
|
||||
member.mention, level
|
||||
),
|
||||
self._t.transform("modules.level.set.already_level").format(member.mention, level),
|
||||
)
|
||||
self._logger.trace(__name__, f"Finished command level set")
|
||||
return
|
||||
@@ -633,15 +552,11 @@ class LevelGroup(DiscordCommandABC):
|
||||
self._db.save_changes()
|
||||
await self._message_service.send_ctx_msg(
|
||||
ctx,
|
||||
self._t.transform("modules.level.set.success").format(
|
||||
member.mention, new_level.name
|
||||
),
|
||||
self._t.transform("modules.level.set.success").format(member.mention, new_level.name),
|
||||
)
|
||||
await self._level_service.set_level(user)
|
||||
except Exception as e:
|
||||
self._logger.error(
|
||||
__name__, f"Cannot set level {level} for {member.name}", e
|
||||
)
|
||||
self._logger.error(__name__, f"Cannot set level {level} for {member.name}", e)
|
||||
await self._message_service.send_ctx_msg(
|
||||
ctx,
|
||||
self._t.transform("modules.level.set.failed").format(member.mention),
|
||||
@@ -650,9 +565,7 @@ class LevelGroup(DiscordCommandABC):
|
||||
self._logger.trace(__name__, f"Finished command level set")
|
||||
|
||||
@set.autocomplete("level")
|
||||
async def set_autocomplete(
|
||||
self, interaction: discord.Interaction, current: str
|
||||
) -> TList[app_commands.Choice[str]]:
|
||||
async def set_autocomplete(self, interaction: discord.Interaction, current: str) -> TList[app_commands.Choice[str]]:
|
||||
return await self._level_auto_complete(interaction, current)
|
||||
|
||||
@level.command()
|
||||
@@ -664,12 +577,8 @@ class LevelGroup(DiscordCommandABC):
|
||||
if ctx.guild is None:
|
||||
return
|
||||
|
||||
server_config: ServerConfig = self._config.get_configuration(
|
||||
f"ServerConfig_{ctx.guild.id}"
|
||||
)
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(
|
||||
server_config.feature_flags, FeatureFlagsEnum.level_module
|
||||
):
|
||||
server_config: ServerConfig = self._config.get_configuration(f"ServerConfig_{ctx.guild.id}")
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(server_config.feature_flags, FeatureFlagsEnum.level_module):
|
||||
return
|
||||
|
||||
await self._seed_levels(ctx)
|
||||
|
@@ -11,9 +11,7 @@ from modules.level.service.level_service import LevelService
|
||||
|
||||
|
||||
class LevelOnMemberJoinEvent(OnMemberJoinABC):
|
||||
def __init__(
|
||||
self, config: ConfigurationABC, logger: MessageLogger, level: LevelService
|
||||
):
|
||||
def __init__(self, config: ConfigurationABC, logger: MessageLogger, level: LevelService):
|
||||
OnMemberJoinABC.__init__(self)
|
||||
self._config = config
|
||||
self._logger = logger
|
||||
@@ -22,12 +20,8 @@ class LevelOnMemberJoinEvent(OnMemberJoinABC):
|
||||
@EventChecks.check_is_ready()
|
||||
async def on_member_join(self, member: discord.Member):
|
||||
self._logger.debug(__name__, f"Module {type(self)} started")
|
||||
server_config: ServerConfig = self._config.get_configuration(
|
||||
f"ServerConfig_{member.guild.id}"
|
||||
)
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(
|
||||
server_config.feature_flags, FeatureFlagsEnum.level_module
|
||||
):
|
||||
server_config: ServerConfig = self._config.get_configuration(f"ServerConfig_{member.guild.id}")
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(server_config.feature_flags, FeatureFlagsEnum.level_module):
|
||||
return
|
||||
|
||||
await self._level.check_level(member)
|
||||
|
@@ -11,9 +11,7 @@ from modules.level.service.level_service import LevelService
|
||||
|
||||
|
||||
class LevelOnMessageEvent(OnMessageABC):
|
||||
def __init__(
|
||||
self, config: ConfigurationABC, logger: MessageLogger, level: LevelService
|
||||
):
|
||||
def __init__(self, config: ConfigurationABC, logger: MessageLogger, level: LevelService):
|
||||
OnMessageABC.__init__(self)
|
||||
self._config = config
|
||||
self._logger = logger
|
||||
@@ -28,12 +26,8 @@ class LevelOnMessageEvent(OnMessageABC):
|
||||
if message.author.bot:
|
||||
return
|
||||
|
||||
server_config: ServerConfig = self._config.get_configuration(
|
||||
f"ServerConfig_{message.guild.id}"
|
||||
)
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(
|
||||
server_config.feature_flags, FeatureFlagsEnum.level_module
|
||||
):
|
||||
server_config: ServerConfig = self._config.get_configuration(f"ServerConfig_{message.guild.id}")
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(server_config.feature_flags, FeatureFlagsEnum.level_module):
|
||||
return
|
||||
|
||||
try:
|
||||
|
@@ -29,12 +29,8 @@ class LevelOnRawReactionAddEvent(OnRawReactionAddABC):
|
||||
@EventChecks.check_is_ready()
|
||||
async def on_raw_reaction_add(self, payload: RawReactionActionEvent):
|
||||
self._logger.debug(__name__, f"Module {type(self)} started")
|
||||
server_config: ServerConfig = self._config.get_configuration(
|
||||
f"ServerConfig_{payload.guild_id}"
|
||||
)
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(
|
||||
server_config.feature_flags, FeatureFlagsEnum.level_module
|
||||
):
|
||||
server_config: ServerConfig = self._config.get_configuration(f"ServerConfig_{payload.guild_id}")
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(server_config.feature_flags, FeatureFlagsEnum.level_module):
|
||||
return
|
||||
|
||||
try:
|
||||
|
@@ -29,12 +29,8 @@ class LevelOnRawReactionRemoveEvent(OnRawReactionRemoveABC):
|
||||
@EventChecks.check_is_ready()
|
||||
async def on_raw_reaction_remove(self, payload: RawReactionActionEvent):
|
||||
self._logger.debug(__name__, f"Module {type(self)} started")
|
||||
server_config: ServerConfig = self._config.get_configuration(
|
||||
f"ServerConfig_{payload.guild_id}"
|
||||
)
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(
|
||||
server_config.feature_flags, FeatureFlagsEnum.level_module
|
||||
):
|
||||
server_config: ServerConfig = self._config.get_configuration(f"ServerConfig_{payload.guild_id}")
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(server_config.feature_flags, FeatureFlagsEnum.level_module):
|
||||
return
|
||||
|
||||
try:
|
||||
|
@@ -11,9 +11,7 @@ from modules.level.service.level_service import LevelService
|
||||
|
||||
|
||||
class LevelOnVoiceStateUpdateEvent(OnVoiceStateUpdateABC):
|
||||
def __init__(
|
||||
self, config: ConfigurationABC, logger: LoggerABC, level: LevelService
|
||||
):
|
||||
def __init__(self, config: ConfigurationABC, logger: LoggerABC, level: LevelService):
|
||||
OnVoiceStateUpdateABC.__init__(self)
|
||||
self._config = config
|
||||
self._logger = logger
|
||||
@@ -29,12 +27,8 @@ class LevelOnVoiceStateUpdateEvent(OnVoiceStateUpdateABC):
|
||||
after: discord.VoiceState,
|
||||
):
|
||||
self._logger.debug(__name__, f"Module {type(self)} started")
|
||||
server_config: ServerConfig = self._config.get_configuration(
|
||||
f"ServerConfig_{member.guild.id}"
|
||||
)
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(
|
||||
server_config.feature_flags, FeatureFlagsEnum.level_module
|
||||
):
|
||||
server_config: ServerConfig = self._config.get_configuration(f"ServerConfig_{member.guild.id}")
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(server_config.feature_flags, FeatureFlagsEnum.level_module):
|
||||
return
|
||||
|
||||
await self._level.check_level(member)
|
||||
|
@@ -29,17 +29,13 @@ class LevelModule(ModuleABC):
|
||||
def __init__(self, dc: DiscordCollectionABC):
|
||||
ModuleABC.__init__(self, dc, FeatureFlagsEnum.level_module)
|
||||
|
||||
def configure_configuration(
|
||||
self, config: ConfigurationABC, env: ApplicationEnvironmentABC
|
||||
):
|
||||
def configure_configuration(self, config: ConfigurationABC, env: ApplicationEnvironmentABC):
|
||||
cwd = env.working_directory
|
||||
env.set_working_directory(os.path.dirname(os.path.realpath(__file__)))
|
||||
config.add_json_file(f"default-level.json", optional=False)
|
||||
env.set_working_directory(cwd)
|
||||
|
||||
def configure_services(
|
||||
self, services: ServiceCollectionABC, env: ApplicationEnvironmentABC
|
||||
):
|
||||
def configure_services(self, services: ServiceCollectionABC, env: ApplicationEnvironmentABC):
|
||||
services.add_transient(DataSeederABC, LevelSeeder)
|
||||
services.add_transient(LevelService)
|
||||
|
||||
@@ -47,19 +43,13 @@ class LevelModule(ModuleABC):
|
||||
services.add_transient(LevelGroup)
|
||||
|
||||
# events
|
||||
services.add_transient(
|
||||
DiscordEventTypesEnum.on_message.value, LevelOnMessageEvent
|
||||
)
|
||||
services.add_transient(DiscordEventTypesEnum.on_message.value, LevelOnMessageEvent)
|
||||
services.add_transient(
|
||||
DiscordEventTypesEnum.on_voice_state_update.value,
|
||||
LevelOnVoiceStateUpdateEvent,
|
||||
)
|
||||
services.add_transient(
|
||||
DiscordEventTypesEnum.on_member_join.value, LevelOnMemberJoinEvent
|
||||
)
|
||||
services.add_transient(
|
||||
DiscordEventTypesEnum.on_raw_reaction_add.value, LevelOnRawReactionAddEvent
|
||||
)
|
||||
services.add_transient(DiscordEventTypesEnum.on_member_join.value, LevelOnMemberJoinEvent)
|
||||
services.add_transient(DiscordEventTypesEnum.on_raw_reaction_add.value, LevelOnRawReactionAddEvent)
|
||||
services.add_transient(
|
||||
DiscordEventTypesEnum.on_raw_reaction_remove.value,
|
||||
LevelOnRawReactionRemoveEvent,
|
||||
|
@@ -46,10 +46,7 @@ class LevelSeeder(DataSeederABC):
|
||||
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 None
|
||||
):
|
||||
if guild.roles.where(lambda r: r.name == level.name).first_or_default() is None:
|
||||
await guild.create_role(
|
||||
name=level.name,
|
||||
colour=Colour(int(level.color, 16)),
|
||||
@@ -60,11 +57,7 @@ class LevelSeeder(DataSeederABC):
|
||||
self._logger.debug(__name__, f"Created role {level.name}")
|
||||
|
||||
levels = self._levels.find_levels_by_server_id(server.id)
|
||||
if (
|
||||
levels is None
|
||||
or levels.where(lambda l: l.name == level.name).first_or_default()
|
||||
is None
|
||||
):
|
||||
if levels is None or levels.where(lambda l: l.name == level.name).first_or_default() is None:
|
||||
self._levels.add_level(level)
|
||||
self._logger.debug(__name__, f"Saved level {level.name}")
|
||||
self._db.save_changes()
|
||||
@@ -78,21 +71,12 @@ class LevelSeeder(DataSeederABC):
|
||||
async def seed(self):
|
||||
# create levels
|
||||
for guild in self._bot.guilds:
|
||||
server_config: ServerConfig = self._config.get_configuration(
|
||||
f"ServerConfig_{guild.id}"
|
||||
)
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(
|
||||
server_config.feature_flags, FeatureFlagsEnum.level_module
|
||||
):
|
||||
server_config: ServerConfig = self._config.get_configuration(f"ServerConfig_{guild.id}")
|
||||
if not FeatureFlagsSettings.get_flag_from_dict(server_config.feature_flags, FeatureFlagsEnum.level_module):
|
||||
continue
|
||||
|
||||
created_default = False
|
||||
if (
|
||||
guild.roles.where(
|
||||
lambda r: r.name == self._level_header
|
||||
).first_or_default()
|
||||
is None
|
||||
):
|
||||
if guild.roles.where(lambda r: r.name == self._level_header).first_or_default() is None:
|
||||
await guild.create_role(name=self._level_header)
|
||||
|
||||
server = self._servers.find_server_by_discord_id(guild.id)
|
||||
@@ -118,20 +102,13 @@ class LevelSeeder(DataSeederABC):
|
||||
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
|
||||
)
|
||||
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:
|
||||
continue
|
||||
|
||||
new_position = position_above_levels - (
|
||||
levels.index_of(
|
||||
levels.where(lambda l: l.name == role.name).single()
|
||||
)
|
||||
+ 1
|
||||
levels.index_of(levels.where(lambda l: l.name == role.name).single()) + 1
|
||||
)
|
||||
if new_position <= 0:
|
||||
new_position = 1
|
||||
@@ -142,9 +119,7 @@ class LevelSeeder(DataSeederABC):
|
||||
)
|
||||
await role.edit(position=new_position)
|
||||
except Exception as e:
|
||||
self._logger.error(
|
||||
__name__, f"Cannot change position of {role.name}", e
|
||||
)
|
||||
self._logger.error(__name__, f"Cannot change position of {role.name}", e)
|
||||
|
||||
for m in guild.members:
|
||||
await self._level.check_level(m)
|
||||
|
@@ -43,9 +43,7 @@ class LevelService:
|
||||
if user.xp < 0:
|
||||
return levels_by_server.order_by(lambda l: l.min_xp).first()
|
||||
|
||||
levels = levels_by_server.order_by(lambda l: l.min_xp).where(
|
||||
lambda l: user.xp >= l.min_xp
|
||||
)
|
||||
levels = levels_by_server.order_by(lambda l: l.min_xp).where(lambda l: user.xp >= l.min_xp)
|
||||
|
||||
if levels.count() == 0:
|
||||
return levels_by_server.order_by(lambda l: l.min_xp).last()
|
||||
@@ -53,12 +51,8 @@ class LevelService:
|
||||
return levels.last()
|
||||
|
||||
async def set_level(self, user: User):
|
||||
level_names = self._levels.get_levels_by_server_id(user.server.id).select(
|
||||
lambda l: l.name
|
||||
)
|
||||
guild: Guild = self._bot.guilds.where(
|
||||
lambda g: g.id == user.server.discord_id
|
||||
).single()
|
||||
level_names = self._levels.get_levels_by_server_id(user.server.id).select(lambda l: l.name)
|
||||
guild: Guild = self._bot.guilds.where(lambda g: g.id == user.server.discord_id).single()
|
||||
member: Member = guild.members.where(lambda m: m.id == user.discord_id).single()
|
||||
|
||||
level = self.get_level(user)
|
||||
@@ -69,39 +63,25 @@ class LevelService:
|
||||
notification_needed = False
|
||||
for role in member.roles.where(lambda r: r.name in level_names.to_list()):
|
||||
try:
|
||||
self._logger.debug(
|
||||
__name__, f"Try to remove role {role.name} from {member.name}"
|
||||
)
|
||||
self._logger.debug(__name__, f"Try to remove role {role.name} from {member.name}")
|
||||
await member.remove_roles(role)
|
||||
notification_needed = True
|
||||
self._logger.info(
|
||||
__name__, f"Removed role {role.name} from {member.name}"
|
||||
)
|
||||
self._logger.info(__name__, f"Removed role {role.name} from {member.name}")
|
||||
except Exception as e:
|
||||
self._logger.error(
|
||||
__name__, f"Removing role {role.name} from {member.name} failed!", e
|
||||
)
|
||||
self._logger.error(__name__, f"Removing role {role.name} from {member.name} failed!", e)
|
||||
|
||||
try:
|
||||
self._logger.debug(
|
||||
__name__, f"Try to add role {level_role.name} to {member.name}"
|
||||
)
|
||||
self._logger.debug(__name__, f"Try to add role {level_role.name} to {member.name}")
|
||||
await member.add_roles(level_role)
|
||||
self._logger.info(__name__, f"Add role {level_role.name} to {member.name}")
|
||||
except Exception as e:
|
||||
self._logger.error(
|
||||
__name__, f"Adding role {level_role.name} to {member.name} failed!", e
|
||||
)
|
||||
self._logger.error(__name__, f"Adding role {level_role.name} to {member.name} failed!", e)
|
||||
|
||||
if notification_needed:
|
||||
settings: ServerConfig = self._config.get_configuration(
|
||||
f"ServerConfig_{guild.id}"
|
||||
)
|
||||
settings: ServerConfig = self._config.get_configuration(f"ServerConfig_{guild.id}")
|
||||
await self._message_service.send_channel_message(
|
||||
self._bot.get_channel(settings.notification_chat_id),
|
||||
self._t.transform("modules.level.new_level_message").format(
|
||||
member.mention, level.name
|
||||
),
|
||||
self._t.transform("modules.level.new_level_message").format(member.mention, level.name),
|
||||
is_persistent=True,
|
||||
)
|
||||
|
||||
@@ -112,9 +92,7 @@ class LevelService:
|
||||
server = self._servers.get_server_by_discord_id(member.guild.id)
|
||||
user = self._users.find_user_by_discord_id_and_server_id(member.id, server.id)
|
||||
if user is None:
|
||||
self._logger.warn(
|
||||
__name__, f"User not found {member.guild.name}@{member.name}"
|
||||
)
|
||||
self._logger.warn(__name__, f"User not found {member.guild.name}@{member.name}")
|
||||
return
|
||||
|
||||
await self.set_level(user)
|
||||
|
Reference in New Issue
Block a user