Compare commits

..

No commits in common. "5a312bf6602f0fed3e7dcf0dbb38137c43a2dda5" and "7ba0247519c57ac5ad8a6a58de9b193861ee9f01" have entirely different histories.

5 changed files with 20 additions and 63 deletions

View File

@ -2,11 +2,9 @@ from abc import ABC, abstractmethod
from datetime import datetime
from typing import Callable
import discord
from cpl_query.extension import List
from discord.ext.commands import Context
from bot_data.model.auto_role_rule import AutoRoleRule
from bot_data.model.user import User
from modules.base.configuration.base_server_settings import BaseServerSettings
@ -61,9 +59,3 @@ class ClientUtilsABC(ABC):
@abstractmethod
def get_ontime_for_user(self, user: User) -> float:
pass
@abstractmethod
async def react_to_message_by_auto_role_rule(
self, discord_channel_id: int, discord_message_id: int, rule: AutoRoleRule, guild: discord.Guild
):
pass

View File

@ -9,7 +9,6 @@ from cpl_core.time import TimeFormatSettings
from cpl_discord.service import DiscordBotServiceABC
from cpl_query.extension import List
from cpl_translation import TranslatePipe
from discord import Guild
from discord.ext.commands import Context
from bot_core.abc.client_utils_abc import ClientUtilsABC
@ -24,7 +23,6 @@ from bot_data.abc.user_joined_voice_channel_repository_abc import (
from bot_data.abc.user_message_count_per_hour_repository_abc import (
UserMessageCountPerHourRepositoryABC,
)
from bot_data.model.auto_role_rule import AutoRoleRule
from bot_data.model.user import User
from bot_data.model.user_message_count_per_hour import UserMessageCountPerHour
from modules.base.configuration.base_server_settings import BaseServerSettings
@ -194,27 +192,3 @@ class ClientUtilsService(ClientUtilsABC):
.sum(lambda join: (join.leaved_on - join.joined_on).total_seconds() / 3600),
2,
)
async def react_to_message_by_auto_role_rule(
self, discord_channel_id: int, discord_message_id: int, rule: AutoRoleRule, guild: discord.Guild
):
try:
guild: Guild = self._bot.guilds.where(lambda g: g == guild).single()
channel = guild.get_channel(discord_channel_id)
message = await channel.fetch_message(discord_message_id)
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")
return
await message.add_reaction(emoji)
self._logger.debug(
__name__,
f"Added reaction {rule.emoji_name} to message: {discord_message_id}",
)
except Exception as e:
self._logger.error(
__name__,
f"Cannot add reaction {rule.emoji_name} to message: {discord_message_id}",
e,
)

View File

@ -1,7 +1,5 @@
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
@ -12,19 +10,15 @@ 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)
@ -46,14 +40,6 @@ 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):
@ -67,14 +53,6 @@ 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):

View File

@ -6,7 +6,7 @@ from cpl_discord.command import DiscordCommandABC
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
@ -312,12 +312,25 @@ class AutoRoleGroup(DiscordCommandABC):
.where(lambda r: r.emoji_name == emoji.name and int(role_id) == role.id)
.single()
)
try:
guild: Guild = self._bot.guilds.where(lambda g: g == ctx.guild).single()
channel = guild.get_channel(auto_role_from_db.discord_channel_id)
message = await channel.fetch_message(auto_role_from_db.discord_message_id)
emoji = List(discord.Emoji, guild.emojis).where(lambda x: x.name == rule.emoji_name).single()
# as task to run in background
self._bot.loop.create_task(
await self._client_utils.react_to_message_by_auto_role_rule(
auto_role_from_db.discord_channel_id, auto_role_from_db.discord_message_id, rule, ctx.guild
if emoji is None:
self._logger.debug(__name__, f"Emoji {rule.emoji_name} not found")
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(

View File

@ -225,7 +225,7 @@ export class AutoRolesRulesComponent implements OnInit, OnDestroy {
})).subscribe(result => {
this.isEditingNew = false;
this.spinner.hideSpinner();
this.toastService.success(this.translate.instant("view.server.auto_roles.rules.message.auto_role_rule_create"), this.translate.instant("view.server.auto_roles.rules.message.auto_role_rule_create_d", { id: result.autoRoleRule.createAutoRoleRule?.id }));
this.toastService.success(this.translate.instant("view.server.auto_roles.rules.message.auto_role_rule_created"), this.translate.instant("view.server.auto_roles.rules.message.auto_role_rule_create_d", { id: result.autoRoleRule.createAutoRoleRule?.id }));
this.loadNextPage();
});
return;