1.1.0 #352
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user