Add xp for achievement #268_achievements

This commit is contained in:
2023-07-17 11:09:34 +02:00
parent 23d6216029
commit d4dd55944a
3 changed files with 17 additions and 1 deletions

View File

@@ -8,11 +8,13 @@ from cpl_translation import TranslatePipe
from bot_core.configuration.server_settings import ServerSettings
from bot_core.service.message_service import MessageService
from bot_data.abc.achievement_repository_abc import AchievementRepositoryABC
from bot_data.abc.user_repository_abc import UserRepositoryABC
from bot_data.model.achievement import Achievement
from bot_data.model.user import User
from bot_data.model.user_got_achievement import UserGotAchievement
from modules.achievements.achievement_attribute_resolver import AchievementAttributeResolver
from modules.achievements.model.achievement_attribute import AchievementAttribute
from modules.base.configuration.base_server_settings import BaseServerSettings
class AchievementService:
@@ -22,6 +24,7 @@ class AchievementService:
logger: LoggerABC,
bot: DiscordBotServiceABC,
achievements: AchievementRepositoryABC,
users: UserRepositoryABC,
db: DatabaseContextABC,
message_service: MessageService,
resolver: AchievementAttributeResolver,
@@ -31,6 +34,7 @@ class AchievementService:
self._logger = logger
self._bot = bot
self._achievements = achievements
self._users = users
self._db = db
self._message_service = message_service
self._t = t
@@ -92,8 +96,15 @@ class AchievementService:
self._achievements.add_user_got_achievement(UserGotAchievement(user, achievement, user.server))
self._db.save_changes()
await self._give_user_xp(user)
await self._send_achievement_notification(user.server.discord_id, user.discord_id, achievement.name)
async def _give_user_xp(self, user: User):
settings: BaseServerSettings = self._config.get_configuration(f"BaseServerSettings_{user.server.discord_id}")
user.xp += settings.xp_per_achievement
self._users.update_user(user)
self._db.save_changes()
async def _send_achievement_notification(self, guild_id: int, member_id: int, achievement_name: str):
member = self._bot.get_guild(guild_id).get_member(member_id)