Compare commits
	
		
			7 Commits
		
	
	
		
			1.0.7
			...
			3a078271ff
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 3a078271ff | |||
| ba5f83f3d0 | |||
| 9f614e8a31 | |||
| 6e0d4a5144 | |||
| c7a1069c0c | |||
| dc0c6ca6a0 | |||
| 9201cbf357 | 
 Submodule kdb-bot/src/bot/config updated: 0c94637537...7063c9e7c0
									
								
							| @@ -2,6 +2,7 @@ from typing import Callable | ||||
|  | ||||
| from ariadne import ObjectType | ||||
| from cpl_core.dependency_injection import ServiceProviderABC | ||||
| from cpl_core.type import T | ||||
| from cpl_discord.service import DiscordBotServiceABC | ||||
| from cpl_query.extension import List | ||||
|  | ||||
| @@ -66,7 +67,7 @@ class QueryABC(ObjectType): | ||||
|         self.set_field(f"{name}Count", lambda *args: wrapper(*args).count()) | ||||
|  | ||||
|     @ServiceProviderABC.inject | ||||
|     def _can_user_see_element(self, user: AuthUser, element, services: ServiceProviderABC) -> bool: | ||||
|     def _can_user_see_element(self, user: AuthUser, element: T, services: ServiceProviderABC) -> bool: | ||||
|         permissions: PermissionService = services.get_service(PermissionService) | ||||
|         bot: DiscordBotServiceABC = services.get_service(DiscordBotServiceABC) | ||||
|  | ||||
| @@ -82,12 +83,12 @@ class QueryABC(ObjectType): | ||||
|                     break | ||||
|  | ||||
|         elif type(element) == AutoRoleRule: | ||||
|             element: AutoRole = element | ||||
|             element: AutoRoleRule = element | ||||
|             for u in user.users: | ||||
|                 u: User = u | ||||
|                 guild = bot.get_guild(u.server.discord_id) | ||||
|                 member = guild.get_member(u.discord_id) | ||||
|                 if permissions.is_member_moderator(member) and u.server.id == element.server.id: | ||||
|                 if permissions.is_member_moderator(member) and u.server.id == element.auto_role.server.id: | ||||
|                     access = True | ||||
|                     break | ||||
|  | ||||
|   | ||||
| @@ -26,7 +26,11 @@ class BaseOnScheduledEventUpdateEvent(OnScheduledEventUpdateABC): | ||||
|  | ||||
|         # save started event | ||||
|         if before.status != after.status and after.status == EventStatus.active: | ||||
|             self._events.add_event(ActiveEvent(after)) | ||||
|             active_event = ActiveEvent(after) | ||||
|             self._events.add_event(active_event) | ||||
|  | ||||
|             for member in after.channel.members: | ||||
|                 self._events.give_xp_for_event_participation(member, active_event) | ||||
|         # delete stopped event | ||||
|         if before.status != after.status and ( | ||||
|             after.status.value == EventStatus.cancelled.value or after.status.value == EventStatus.completed.value | ||||
|   | ||||
| @@ -1,36 +1,20 @@ | ||||
| import discord | ||||
| from cpl_core.configuration import ConfigurationABC | ||||
| from cpl_core.database.context import DatabaseContextABC | ||||
| from cpl_core.logging import LoggerABC | ||||
| from cpl_discord.events import OnVoiceStateUpdateABC | ||||
|  | ||||
| from bot_core.helper.event_checks import EventChecks | ||||
| from bot_data.abc.server_repository_abc import ServerRepositoryABC | ||||
| from bot_data.abc.user_repository_abc import UserRepositoryABC | ||||
| from modules.base.abc.base_helper_abc import BaseHelperABC | ||||
| from modules.base.configuration.base_server_settings import BaseServerSettings | ||||
| from modules.base.service.event_service import EventService | ||||
|  | ||||
|  | ||||
| class BaseOnVoiceStateUpdateEventScheduledEventBonus(OnVoiceStateUpdateABC): | ||||
|     def __init__( | ||||
|         self, | ||||
|         config: ConfigurationABC, | ||||
|         logger: LoggerABC, | ||||
|         base_helper: BaseHelperABC, | ||||
|         servers: ServerRepositoryABC, | ||||
|         users: UserRepositoryABC, | ||||
|         events: EventService, | ||||
|         db: DatabaseContextABC, | ||||
|     ): | ||||
|         OnVoiceStateUpdateABC.__init__(self) | ||||
|         self._config = config | ||||
|         self._logger = logger | ||||
|         self._base_helper = base_helper | ||||
|         self._servers = servers | ||||
|         self._users = users | ||||
|         self._events = events | ||||
|         self._db = db | ||||
|  | ||||
|         self._logger.info(__name__, f"Module {type(self)} loaded") | ||||
|  | ||||
| @@ -51,16 +35,6 @@ class BaseOnVoiceStateUpdateEventScheduledEventBonus(OnVoiceStateUpdateABC): | ||||
|             self._logger.debug(__name__, f"Module {type(self)} stopped") | ||||
|             return | ||||
|  | ||||
|         server = self._servers.get_server_by_discord_id(member.guild.id) | ||||
|         user = self._users.get_user_by_discord_id_and_server_id(member.id, server.id) | ||||
|         if active_event.participants.any(lambda x: x.id == user.id): | ||||
|             self._logger.debug(__name__, f"Module {type(self)} stopped") | ||||
|             return | ||||
|  | ||||
|         settings: BaseServerSettings = self._base_helper.get_config(server.discord_id) | ||||
|         user.xp += settings.xp_per_event_participation | ||||
|         self._users.update_user(user) | ||||
|         self._db.save_changes() | ||||
|         active_event.participants.append(user) | ||||
|         self._events.give_xp_for_event_participation(member, active_event) | ||||
|  | ||||
|         self._logger.debug(__name__, f"Module {type(self)} stopped") | ||||
|   | ||||
| @@ -1,13 +1,35 @@ | ||||
| from typing import Optional | ||||
|  | ||||
| import discord | ||||
| from cpl_core.configuration import ConfigurationABC | ||||
| from cpl_core.database.context import DatabaseContextABC | ||||
| from cpl_core.logging import LoggerABC | ||||
| from cpl_query.extension import List | ||||
|  | ||||
| from bot_data.abc.server_repository_abc import ServerRepositoryABC | ||||
| from bot_data.abc.user_repository_abc import UserRepositoryABC | ||||
| from modules.base.configuration.base_server_settings import BaseServerSettings | ||||
| from modules.base.model.active_event import ActiveEvent | ||||
| from modules.base.service.base_helper_service import BaseHelperService | ||||
|  | ||||
|  | ||||
| class EventService: | ||||
|     def __init__(self): | ||||
|     def __init__( | ||||
|         self, | ||||
|         config: ConfigurationABC, | ||||
|         logger: LoggerABC, | ||||
|         base_helper: BaseHelperService, | ||||
|         servers: ServerRepositoryABC, | ||||
|         users: UserRepositoryABC, | ||||
|         db: DatabaseContextABC, | ||||
|     ): | ||||
|         self._config = config | ||||
|         self._logger = logger | ||||
|         self._base_helper = base_helper | ||||
|         self._servers = servers | ||||
|         self._users = users | ||||
|         self._db = db | ||||
|  | ||||
|         self._active_events = List(ActiveEvent) | ||||
|  | ||||
|     def add_event(self, event: ActiveEvent): | ||||
| @@ -29,3 +51,16 @@ class EventService: | ||||
|             return | ||||
|  | ||||
|         self._active_events.remove(event) | ||||
|  | ||||
|     def give_xp_for_event_participation(self, member: discord.Member, active_event: ActiveEvent): | ||||
|         server = self._servers.get_server_by_discord_id(member.guild.id) | ||||
|         user = self._users.get_user_by_discord_id_and_server_id(member.id, server.id) | ||||
|         if active_event.participants.any(lambda x: x.id == user.id): | ||||
|             self._logger.debug(__name__, f"Module {type(self)} stopped") | ||||
|             return | ||||
|  | ||||
|         settings: BaseServerSettings = self._base_helper.get_config(server.discord_id) | ||||
|         user.xp += settings.xp_per_event_participation | ||||
|         self._users.update_user(user) | ||||
|         self._db.save_changes() | ||||
|         active_event.participants.append(user) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user