Added level icons
This commit is contained in:
@@ -2,6 +2,10 @@ from datetime import datetime
|
||||
from typing import Optional
|
||||
|
||||
from cpl_core.database import TableABC
|
||||
from cpl_core.dependency_injection import ServiceProviderABC
|
||||
from cpl_discord.service import DiscordBotServiceABC
|
||||
from cpl_query.extension import List
|
||||
from discord import Role
|
||||
|
||||
from bot_data.model.server import Server
|
||||
|
||||
@@ -33,6 +37,13 @@ class Level(TableABC):
|
||||
def id(self) -> int:
|
||||
return self._id
|
||||
|
||||
@property
|
||||
@ServiceProviderABC.inject
|
||||
def icon_url(self, bot: DiscordBotServiceABC) -> str:
|
||||
guild = bot.get_guild(self.server.discord_id)
|
||||
role = List(Role, guild.roles).where(lambda x: x.name == self._name).first_or_default()
|
||||
return None if role is None else role.icon
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
return self._name
|
||||
|
@@ -1,5 +1,6 @@
|
||||
type Level implements TableWithHistoryQuery {
|
||||
id: ID
|
||||
iconURL: String
|
||||
name: String
|
||||
color: String
|
||||
minXp: Int
|
||||
|
@@ -1,6 +1,5 @@
|
||||
from cpl_core.database.context import DatabaseContextABC
|
||||
|
||||
from bot_data.model.level import Level
|
||||
from bot_data.model.level_history import LevelHistory
|
||||
from bot_graphql.abc.data_query_with_history_abc import DataQueryWithHistoryABC
|
||||
|
||||
@@ -9,33 +8,13 @@ class LevelQuery(DataQueryWithHistoryABC):
|
||||
def __init__(self, db: DatabaseContextABC):
|
||||
DataQueryWithHistoryABC.__init__(self, "Level", "LevelsHistory", LevelHistory, db)
|
||||
|
||||
self.set_field("id", self.resolve_id)
|
||||
self.set_field("name", self.resolve_name)
|
||||
self.set_field("color", self.resolve_color)
|
||||
self.set_field("minXp", self.resolve_min_xp)
|
||||
self.set_field("permissions", self.resolve_permissions)
|
||||
self.set_field("server", self.resolve_server)
|
||||
|
||||
@staticmethod
|
||||
def resolve_id(level: Level, *_):
|
||||
return level.id
|
||||
|
||||
@staticmethod
|
||||
def resolve_name(level: Level, *_):
|
||||
return level.name
|
||||
|
||||
@staticmethod
|
||||
def resolve_color(level: Level, *_):
|
||||
return level.color
|
||||
|
||||
@staticmethod
|
||||
def resolve_min_xp(level: Level, *_):
|
||||
return level.min_xp
|
||||
|
||||
@staticmethod
|
||||
def resolve_permissions(level: Level, *_):
|
||||
return level.permissions
|
||||
|
||||
@staticmethod
|
||||
def resolve_server(level: Level, *_):
|
||||
return level.server
|
||||
self.set_field("id", lambda x, *_: x.id)
|
||||
self.set_field(
|
||||
"iconURL",
|
||||
lambda x, *_: "https://cdn.discordapp.com/emojis/1170348708894875659.webp?size=32&quality=lossless",
|
||||
)
|
||||
self.set_field("name", lambda x, *_: x.name)
|
||||
self.set_field("color", lambda x, *_: x.color)
|
||||
self.set_field("minXp", lambda x, *_: x.min_xp)
|
||||
self.set_field("permissions", lambda x, *_: x.permissions)
|
||||
self.set_field("server", lambda x, *_: x.server)
|
||||
|
Reference in New Issue
Block a user