Added birthday to wi #401
This commit is contained in:
		| @@ -9,6 +9,7 @@ type ServerConfig implements TableWithHistoryQuery { | ||||
|     xpPerOntimeHour: Int | ||||
|     xpPerEventParticipation: Int | ||||
|     xpPerAchievement: Int | ||||
|     xpForBirthday: Int | ||||
|     afkCommandChannelId: String | ||||
|     helpVoiceChannelId: String | ||||
|     teamChannelId: String | ||||
| @@ -41,6 +42,7 @@ type ServerConfigHistory implements HistoryTableQuery { | ||||
|     xpPerOntimeHour: Int | ||||
|     xpPerEventParticipation: Int | ||||
|     xpPerAchievement: Int | ||||
|     xpForBirthday: Int | ||||
|     afkCommandChannelId: String | ||||
|     helpVoiceChannelId: String | ||||
|     teamChannelId: String | ||||
| @@ -91,6 +93,7 @@ input ServerConfigInput { | ||||
|     xpPerOntimeHour: Int | ||||
|     xpPerEventParticipation: Int | ||||
|     xpPerAchievement: Int | ||||
|     xpForBirthday: Int | ||||
|     afkCommandChannelId: String | ||||
|     helpVoiceChannelId: String | ||||
|     teamChannelId: String | ||||
|   | ||||
| @@ -5,6 +5,7 @@ type User implements TableWithHistoryQuery { | ||||
|     xp: Int | ||||
|     messageCount: Int | ||||
|     reactionCount: Int | ||||
|     birthday: String | ||||
|     ontime: Float | ||||
|     level: Level | ||||
|  | ||||
| @@ -62,6 +63,7 @@ type UserMutation { | ||||
| input UserInput { | ||||
|     id: ID | ||||
|     xp: Int | ||||
|     birthday: String | ||||
|     levelId: ID | ||||
|     userWarnings: [UserWarningInput] | ||||
| } | ||||
| @@ -1,6 +1,9 @@ | ||||
| from datetime import datetime | ||||
|  | ||||
| from cpl_core.database.context import DatabaseContextABC | ||||
| from cpl_discord.service import DiscordBotServiceABC | ||||
|  | ||||
| from bot_api.route.route import Route | ||||
| from bot_data.abc.level_repository_abc import LevelRepositoryABC | ||||
| from bot_data.abc.server_repository_abc import ServerRepositoryABC | ||||
| from bot_data.abc.user_repository_abc import UserRepositoryABC | ||||
| @@ -42,18 +45,26 @@ class UserMutation(QueryABC): | ||||
|  | ||||
|     def resolve_update_user(self, *_, input: dict): | ||||
|         user = self._users.get_user_by_id(input["id"]) | ||||
|         self._can_user_mutate_data(user.server, UserRoleEnum.moderator) | ||||
|  | ||||
|         new_xp = None | ||||
|         if "levelId" in input: | ||||
|             level = self._levels.get_level_by_id(input["levelId"]) | ||||
|             if user.level.id != level.id: | ||||
|                 new_xp = level.min_xp | ||||
|         auth_user = Route.get_user() | ||||
|         member = self._bot.get_guild(user.server.discord_id).get_member( | ||||
|             auth_user.users.where(lambda x: x.server.id == user.server.id).single().discord_id | ||||
|         ) | ||||
|         if member.id != user.discord_id: | ||||
|             self._can_user_mutate_data(user.server, UserRoleEnum.moderator) | ||||
|  | ||||
|         user.xp = new_xp if new_xp is not None else input["xp"] if "xp" in input else user.xp | ||||
|             new_xp = None | ||||
|             if "levelId" in input: | ||||
|                 level = self._levels.get_level_by_id(input["levelId"]) | ||||
|                 if user.level.id != level.id: | ||||
|                     new_xp = level.min_xp | ||||
|  | ||||
|         if "userWarnings" in input: | ||||
|             self._update_user_warning(user, input["userWarnings"]) | ||||
|             if "userWarnings" in input: | ||||
|                 self._update_user_warning(user, input["userWarnings"]) | ||||
|  | ||||
|             user.xp = new_xp if new_xp is not None else input["xp"] if "xp" in input else user.xp | ||||
|  | ||||
|         user.birthday = datetime.strptime(input["birthday"], "%d.%m.%Y") if "birthday" in input else user.birthday | ||||
|  | ||||
|         self._users.update_user(user) | ||||
|         self._db.save_changes() | ||||
|   | ||||
| @@ -20,6 +20,7 @@ class ServerConfigQuery(DataQueryWithHistoryABC): | ||||
|         self.set_field("xpPerOntimeHour", lambda config, *_: config.xp_per_ontime_hour) | ||||
|         self.set_field("xpPerEventParticipation", lambda config, *_: config.xp_per_event_participation) | ||||
|         self.set_field("xpPerAchievement", lambda config, *_: config.xp_per_achievement) | ||||
|         self.set_field("xpForBirthday", lambda config, *_: config.xp_for_birthday) | ||||
|         self.set_field("afkCommandChannelId", lambda config, *_: config.afk_command_channel_id) | ||||
|         self.set_field("helpVoiceChannelId", lambda config, *_: config.help_voice_channel_id) | ||||
|         self.set_field("teamChannelId", lambda config, *_: config.team_channel_id) | ||||
|   | ||||
| @@ -50,6 +50,7 @@ class UserQuery(DataQueryWithHistoryABC): | ||||
|         self.set_field("xp", self.resolve_xp) | ||||
|         self.set_field("messageCount", lambda x, *_: x.message_count) | ||||
|         self.set_field("reactionCount", lambda x, *_: x.reaction_count) | ||||
|         self.set_field("birthday", lambda x, *_: x.birthday) | ||||
|         self.set_field("ontime", self.resolve_ontime) | ||||
|         self.set_field("level", self.resolve_level) | ||||
|         self.add_collection( | ||||
|   | ||||
		Reference in New Issue
	
	Block a user