[WIP] Improved auto roles #134
This commit is contained in:
Submodule kdb-bot/src/bot/config updated: eff27f4280...84d05a9c78
Submodule kdb-bot/src/bot_api/config updated: c712f856eb...81021418c2
29
kdb-bot/src/bot_graphql/model/discord.gql
Normal file
29
kdb-bot/src/bot_graphql/model/discord.gql
Normal file
@@ -0,0 +1,29 @@
|
||||
type Guild {
|
||||
id: ID
|
||||
name: String
|
||||
|
||||
channels: [Channel]
|
||||
roles: [Role]
|
||||
emojis: [Emoji]
|
||||
}
|
||||
|
||||
input GuildFilter {
|
||||
id: ID
|
||||
}
|
||||
|
||||
type Channel {
|
||||
id: String
|
||||
name: String
|
||||
type: String
|
||||
}
|
||||
|
||||
type Role {
|
||||
id: String
|
||||
name: String
|
||||
}
|
||||
|
||||
type Emoji {
|
||||
id: String
|
||||
name: String
|
||||
url: String
|
||||
}
|
@@ -28,4 +28,6 @@ type Query {
|
||||
|
||||
userCount: Int
|
||||
users(filter: UserFilter, page: Page, sort: Sort): [User]
|
||||
|
||||
guilds(filter: GuildFilter): [Guild]
|
||||
}
|
0
kdb-bot/src/bot_graphql/queries/discord/__init__.py
Normal file
0
kdb-bot/src/bot_graphql/queries/discord/__init__.py
Normal file
10
kdb-bot/src/bot_graphql/queries/discord/channel_query.py
Normal file
10
kdb-bot/src/bot_graphql/queries/discord/channel_query.py
Normal file
@@ -0,0 +1,10 @@
|
||||
from bot_graphql.abc.data_query_abc import DataQueryABC
|
||||
|
||||
|
||||
class ChannelQuery(DataQueryABC):
|
||||
def __init__(self):
|
||||
DataQueryABC.__init__(self, "Channel")
|
||||
|
||||
self.set_field("id", lambda c, *_: c.id)
|
||||
self.set_field("name", lambda c, *_: c.name)
|
||||
self.set_field("type", lambda c, *_: type(c))
|
10
kdb-bot/src/bot_graphql/queries/discord/emoji_query.py
Normal file
10
kdb-bot/src/bot_graphql/queries/discord/emoji_query.py
Normal file
@@ -0,0 +1,10 @@
|
||||
from bot_graphql.abc.data_query_abc import DataQueryABC
|
||||
|
||||
|
||||
class RoleQuery(DataQueryABC):
|
||||
def __init__(self):
|
||||
DataQueryABC.__init__(self, "Emoji")
|
||||
|
||||
self.set_field("id", lambda e, *_: e.id)
|
||||
self.set_field("name", lambda e, *_: e.name)
|
||||
self.set_field("url", lambda e, *_: e.url)
|
12
kdb-bot/src/bot_graphql/queries/discord/guild_query.py
Normal file
12
kdb-bot/src/bot_graphql/queries/discord/guild_query.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from bot_graphql.abc.data_query_abc import DataQueryABC
|
||||
|
||||
|
||||
class GuildQuery(DataQueryABC):
|
||||
def __init__(self):
|
||||
DataQueryABC.__init__(self, "Guild")
|
||||
|
||||
self.set_field("id", lambda g, *_: g.id)
|
||||
self.set_field("name", lambda g, *_: g.name)
|
||||
self.set_field("channels", lambda g, *_: g.channels)
|
||||
self.set_field("roles", lambda g, *_: g.roles)
|
||||
self.set_field("emojis", lambda g, *_: g.emojis)
|
9
kdb-bot/src/bot_graphql/queries/discord/role_query.py
Normal file
9
kdb-bot/src/bot_graphql/queries/discord/role_query.py
Normal file
@@ -0,0 +1,9 @@
|
||||
from bot_graphql.abc.data_query_abc import DataQueryABC
|
||||
|
||||
|
||||
class RoleQuery(DataQueryABC):
|
||||
def __init__(self):
|
||||
DataQueryABC.__init__(self, "Role")
|
||||
|
||||
self.set_field("id", lambda r, *_: r.id)
|
||||
self.set_field("name", lambda r, *_: r.name)
|
@@ -1,3 +1,5 @@
|
||||
from cpl_discord.service import DiscordBotServiceABC
|
||||
|
||||
from bot_data.abc.auto_role_repository_abc import AutoRoleRepositoryABC
|
||||
from bot_data.abc.client_repository_abc import ClientRepositoryABC
|
||||
from bot_data.abc.known_user_repository_abc import KnownUserRepositoryABC
|
||||
@@ -22,44 +24,46 @@ from bot_graphql.filter.user_joined_voice_channel_filter import UserJoinedVoiceC
|
||||
class Query(QueryABC):
|
||||
def __init__(
|
||||
self,
|
||||
bot: DiscordBotServiceABC,
|
||||
auto_roles: AutoRoleRepositoryABC,
|
||||
clients: ClientRepositoryABC,
|
||||
known_users: KnownUserRepositoryABC,
|
||||
levels: LevelRepositoryABC,
|
||||
servers: ServerRepositoryABC,
|
||||
user_joined_servers: UserJoinedServerRepositoryABC,
|
||||
user_joined_voice_channel: UserJoinedVoiceChannelRepositoryABC,
|
||||
user_joined_voice_channels: UserJoinedVoiceChannelRepositoryABC,
|
||||
user_joined_game_server: UserJoinedGameServerRepositoryABC,
|
||||
users: UserRepositoryABC,
|
||||
):
|
||||
QueryABC.__init__(self, "Query")
|
||||
self._auto_roles = auto_roles
|
||||
self._clients = clients
|
||||
self._known_users = known_users
|
||||
self._levels = levels
|
||||
self._servers = servers
|
||||
self._user_joined_servers = user_joined_servers
|
||||
self._user_joined_voice_channels = user_joined_voice_channel
|
||||
self._user_joined_game_server = user_joined_game_server
|
||||
self._users = users
|
||||
|
||||
self.add_collection("autoRole", lambda *_: self._auto_roles.get_auto_roles(), AutoRoleFilter)
|
||||
self.add_collection("autoRoleRule", lambda *_: self._auto_roles.get_auto_role_rules(), AutoRoleRuleFilter)
|
||||
self.add_collection("client", lambda *_: self._clients.get_clients(), ClientFilter)
|
||||
self.add_collection("knownUser", lambda *_: self._known_users.get_users())
|
||||
self.add_collection("level", lambda *_: self._levels.get_levels(), LevelFilter)
|
||||
self.add_collection("server", lambda *_: self._servers.get_servers(), ServerFilter)
|
||||
self._bot = bot
|
||||
|
||||
self.add_collection("autoRole", lambda *_: auto_roles.get_auto_roles(), AutoRoleFilter)
|
||||
self.add_collection("autoRoleRule", lambda *_: auto_roles.get_auto_role_rules(), AutoRoleRuleFilter)
|
||||
self.add_collection("client", lambda *_: clients.get_clients(), ClientFilter)
|
||||
self.add_collection("knownUser", lambda *_: known_users.get_users())
|
||||
self.add_collection("level", lambda *_: levels.get_levels(), LevelFilter)
|
||||
self.add_collection("server", lambda *_: servers.get_servers(), ServerFilter)
|
||||
self.add_collection(
|
||||
"userJoinedServer", lambda *_: self._user_joined_servers.get_user_joined_servers(), UserJoinedServerFilter
|
||||
"userJoinedServer", lambda *_: user_joined_servers.get_user_joined_servers(), UserJoinedServerFilter
|
||||
)
|
||||
self.add_collection(
|
||||
"userJoinedVoiceChannel",
|
||||
lambda *_: self._user_joined_voice_channels.get_user_joined_voice_channels(),
|
||||
lambda *_: user_joined_voice_channels.get_user_joined_voice_channels(),
|
||||
UserJoinedVoiceChannelFilter,
|
||||
)
|
||||
self.add_collection(
|
||||
"userJoinedGameServer",
|
||||
lambda *_: self._user_joined_game_server.get_user_joined_game_servers(),
|
||||
lambda *_: user_joined_game_server.get_user_joined_game_servers(),
|
||||
UserJoinedGameServerFilter,
|
||||
)
|
||||
self.add_collection("user", lambda *_: self._users.get_users(), UserFilter)
|
||||
self.add_collection("user", lambda *_: users.get_users(), UserFilter)
|
||||
|
||||
self.set_field("guilds", self._resolve_guilds)
|
||||
|
||||
def _resolve_guilds(self, *_, filter=None):
|
||||
if filter is None and "id" not in filter:
|
||||
return self._bot.guilds
|
||||
|
||||
return self._bot.guilds.where(lambda g: g.id == int(filter["id"]))
|
||||
|
Reference in New Issue
Block a user