Added logic to add reaction after creating auto role rule in WI #259

This commit is contained in:
2023-03-27 10:16:14 +02:00
parent 75ad07477a
commit 3c8a092f40
5 changed files with 62 additions and 20 deletions

View File

@@ -1,5 +1,7 @@
from cpl_core.database.context import DatabaseContextABC
from cpl_discord.service import DiscordBotServiceABC
from bot_core.abc.client_utils_abc import ClientUtilsABC
from bot_data.abc.auto_role_repository_abc import AutoRoleRepositoryABC
from bot_data.abc.server_repository_abc import ServerRepositoryABC
from bot_data.model.auto_role_rule import AutoRoleRule
@@ -10,15 +12,19 @@ from bot_graphql.abc.query_abc import QueryABC
class AutoRoleRuleMutation(QueryABC):
def __init__(
self,
bot: DiscordBotServiceABC,
servers: ServerRepositoryABC,
auto_roles: AutoRoleRepositoryABC,
db: DatabaseContextABC,
client_utils: ClientUtilsABC,
):
QueryABC.__init__(self, "AutoRoleRuleMutation")
self._bot = bot
self._servers = servers
self._auto_roles = auto_roles
self._db = db
self._client_utils = client_utils
self.set_field("createAutoRoleRule", self.resolve_create_auto_role_rule)
self.set_field("updateAutoRoleRule", self.resolve_update_auto_role_rule)
@@ -40,6 +46,14 @@ class AutoRoleRuleMutation(QueryABC):
and x.role_id == int(input["roleId"])
)
self._bot.loop.create_task(
self._client_utils.react_to_message_by_auto_role_rule(
auto_role_rule.auto_role.discord_channel_id,
auto_role_rule.auto_role.discord_message_id,
auto_role_rule,
self._bot.get_guild(auto_role_rule.auto_role.server.discord_id),
)
)
return self._auto_roles.get_auto_role_rules_by_auto_role_id(auto_role_rule.auto_role.id).where(get_new).last()
def resolve_update_auto_role_rule(self, *_, input: dict):
@@ -53,6 +67,14 @@ class AutoRoleRuleMutation(QueryABC):
self._db.save_changes()
auto_role_rule = self._auto_roles.get_auto_role_rule_by_id(input["id"])
self._bot.loop.create_task(
self._client_utils.react_to_message_by_auto_role_rule(
auto_role_rule.auto_role.discord_channel_id,
auto_role_rule.auto_role.discord_message_id,
auto_role_rule,
self._bot.get_guild(auto_role_rule.auto_role.server.discord_id),
)
)
return auto_role_rule
def resolve_delete_auto_role_rule(self, *_, id: int):