0.3 - AutoRole Emoji zu nachricht nach Anlegen einer Regel hinzufügen (#63) #110

Merged
edraft merged 2 commits from #63 into 0.3 2022-11-11 07:26:28 +01:00
Showing only changes of commit ef41ce03d3 - Show all commits

View File

@ -7,7 +7,7 @@ from cpl_discord.container import TextChannel
from cpl_discord.service import DiscordBotServiceABC
from cpl_query.extension import List
from cpl_translation import TranslatePipe
from discord import app_commands
from discord import app_commands, Guild
from discord.ext import commands
from discord.ext.commands import Context
@ -258,13 +258,27 @@ class AutoRoleGroup(DiscordCommandABC):
self._logger.trace(__name__, f'Finished command auto-role rule add')
return
if self._auto_roles.get_auto_role_rules_by_auto_role_id(auto_role).where(lambda r: r.emoji_name == emoji.name and int(role_id) == role.id).count() > 0:
if self._auto_roles.get_auto_role_rules_by_auto_role_id(auto_role).where(lambda r: r.emoji_name == emoji.name and int(role_id) == role.id).first_or_default() is not None:
await self._message_service.send_ctx_msg(ctx, self._t.transform('modules.auto_role.add.error.already_exists').format(auto_role))
self._logger.trace(__name__, f'Finished command auto-role rule add')
return
self._auto_roles.add_auto_role_rule(AutoRoleRule(auto_role, emoji_name, int(role_id)))
self._db_context.save_changes()
rule = self._auto_roles.get_auto_role_rules_by_auto_role_id(auto_role).where(lambda r: r.emoji_name == emoji.name and int(role_id) == role.id).single()
try:
message = await ctx.fetch_message(auto_role_from_db.discord_message_id)
guild: Guild = self._bot.guilds.where(lambda g: g == ctx.guild).single()
emoji = List(discord.Emoji, guild.emojis).where(lambda x: x.name == rule.emoji_name).single()
if emoji is None:
self._logger.debug(__name__, f'Emoji {rule.emoji_name} not found')
edraft marked this conversation as resolved
Review

Evtl den Anwender benachrichtigen dass der gegebene Emoji nicht gefunden wurde.
Anmerken, dass der Emoji evtl von einem anderen Server kommt.

Evtl den Anwender benachrichtigen dass der gegebene Emoji nicht gefunden wurde. Anmerken, dass der Emoji evtl von einem anderen Server kommt.
Review

war tatsächlich nicht meine absicht, ich meine der nutzer sieht ja, dass das emoji fehlt. Und bei interactions ist drauf zu achten, dass man möglichst wenig nachrichten schreibt um zu antworten. Im bestfall nur eine.

war tatsächlich nicht meine absicht, ich meine der nutzer sieht ja, dass das emoji fehlt. Und bei interactions ist drauf zu achten, dass man möglichst wenig nachrichten schreibt um zu antworten. Im bestfall nur eine.
return
await message.add_reaction(emoji)
self._logger.debug(__name__, f'Added reaction {rule.emoji_name} to message: {auto_role_from_db.discord_message_id}')
except Exception as e:
self._logger.error(__name__, f'Cannot add reaction {rule.emoji_name} to message: {auto_role_from_db.discord_message_id}', e)
await self._message_service.send_ctx_msg(ctx, self._t.transform('modules.auto_role.rule.add.success').format(emoji, role.name, auto_role))
self._logger.trace(__name__, f'Finished command auto-role rule add')