0.3 - AutoRole Emoji zu nachricht nach Anlegen einer Regel hinzufügen (#63) #110
@ -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
|
||||
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')
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user
Evtl den Anwender benachrichtigen dass der gegebene Emoji nicht gefunden wurde.
Anmerken, dass der Emoji evtl von einem anderen Server kommt.
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.