Removed additions to api
parent
ed1cb1a812
commit
b8a0d124fe
@ -1,145 +0,0 @@
|
||||
const graphql = require('graphql'),
|
||||
fs = require('fs');
|
||||
|
||||
class BotGraphql {
|
||||
constructor(bot) {
|
||||
this.schema = graphql.buildSchema(fs.readFileSync('.lib/web/schema.graphqls', 'utf-8'));
|
||||
this.root = {
|
||||
Query: new Query(bot)
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Easyer managing of page info
|
||||
*/
|
||||
class PageInfo {
|
||||
/**
|
||||
* constructor.
|
||||
* @param total {Number} - the total number of entries
|
||||
* @param perPage {Number} - the number of entries per page
|
||||
* @param currentPage {Number} - the current page's index
|
||||
* @param lastPage {Number} - the index of the last page
|
||||
* @param hasNext {Boolean} - is there a next page?
|
||||
*/
|
||||
constructor(total, perPage, currentPage, lastPage, hasNext) {
|
||||
this.total = total;
|
||||
this.perPage = perPage;
|
||||
this.currentPage = currentPage;
|
||||
this.lastPage = lastPage;
|
||||
this.hasNext = hasNext;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generic edge
|
||||
*/
|
||||
class Edge {
|
||||
/**
|
||||
* contructor.
|
||||
* @param node {Object} - the node belonging to the edge
|
||||
* @param edgeProps {Object} - additional properties of the edge
|
||||
*/
|
||||
constructor(node, edgeProps) {
|
||||
this.node = node;
|
||||
Object.assign(this, edgeProps);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generic connection
|
||||
*/
|
||||
class Connection {
|
||||
/**
|
||||
* constructor.
|
||||
* @param edges {Array<Edge>} - the edges of the connection
|
||||
* @param pageInfo {PageInfo} - page info for the connection
|
||||
*/
|
||||
constructor(edges, pageInfo) {
|
||||
this.edges = edges;
|
||||
this.nodes = this.edges.map(x => x.node);
|
||||
this.pageInfo = pageInfo;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Manages pagination
|
||||
*/
|
||||
class Paginator {
|
||||
/**
|
||||
* constructor.
|
||||
* @param edges {Array<Object>} - the edges for the pages
|
||||
* @param perPage {Number} - the number of entries per page
|
||||
*/
|
||||
constructor(edges, perPage) {
|
||||
this._entries = edges;
|
||||
this.perPage = perPage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the specific page
|
||||
* @param page {Number} - the page's number
|
||||
* @param [perPage] {Number} - the number of entries per page
|
||||
* @returns {Connection}
|
||||
*/
|
||||
getPage(page, perPage) {
|
||||
perPage = perPage || this.perPage;
|
||||
let startIndex = (page - 1) * perPage;
|
||||
let endIndex = startIndex + perPage;
|
||||
let lastPage = Math.ceil(this._entries.length / perPage);
|
||||
return new Connection(
|
||||
this._entries.slice(startIndex, endIndex) || [],
|
||||
new PageInfo(this._entries.length, perPage, page, lastPage, page !== lastPage)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the entries of the Paginator.
|
||||
* @param entries
|
||||
*/
|
||||
updateEntries(entries) {
|
||||
this._entries = entries;
|
||||
}
|
||||
}
|
||||
|
||||
class MusicPlayer {
|
||||
constructor(guildHandler) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class Guild {
|
||||
constructor(guild) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class Client {
|
||||
constructor(bot) {
|
||||
this._bot = bot;
|
||||
this._client = bot.client;
|
||||
this.guildPaginator = new Paginator()
|
||||
}
|
||||
|
||||
_getGuildEdges() {
|
||||
let guildHandlerPaginator = Array.from(this._client.guilds.values()).map(x => new Edge(
|
||||
|
||||
));
|
||||
return Array.from(this._client.guilds.values()).map(x => new Edge(
|
||||
new Guild(x),
|
||||
{
|
||||
musicPlayer: new MusicPlayer(this._bot.getGuildHandler(x)),
|
||||
new Connection(
|
||||
bot.getGuildHandler(x).savedMedia
|
||||
)
|
||||
}
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
class Query {
|
||||
constructor(bot) {
|
||||
this._bot = bot;
|
||||
this.client = new Client(bot);
|
||||
}
|
||||
}
|
@ -1,440 +0,0 @@
|
||||
const graphql = require('graphql');
|
||||
|
||||
let pageInfoType = new graphql.GraphQLObjectType({
|
||||
name: 'PageInfo',
|
||||
fields: {
|
||||
total: {
|
||||
type: graphql.assertNonNullType(graphql.GraphQLInt),
|
||||
description: 'total number of pages'
|
||||
},
|
||||
perPage: {
|
||||
type: graphql.assertNonNullType(graphql.GraphQLInt),
|
||||
description: 'number of entries per page'
|
||||
},
|
||||
currentPage: {
|
||||
type: graphql.assertNonNullType(graphql.GraphQLInt),
|
||||
description: 'current page'
|
||||
},
|
||||
lastPage: {
|
||||
type: graphql.assertNonNullType(graphql.GraphQLInt),
|
||||
description: 'last page'
|
||||
},
|
||||
hasNextPage: {
|
||||
type: graphql.assertNonNullType(graphql.GraphQLBoolean),
|
||||
description: 'does the connection have a next page'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
let mediaEntryType = new graphql.GraphQLObjectType({
|
||||
|
||||
name: 'MediaEntry',
|
||||
fields: {
|
||||
id: {
|
||||
type: graphql.GraphQLID,
|
||||
description: 'id of the media entry'
|
||||
},
|
||||
url: {
|
||||
type: graphql.GraphQLString,
|
||||
description: 'url to the YouTube video'
|
||||
},
|
||||
name: {
|
||||
type: graphql.GraphQLString,
|
||||
description: 'title of the YouTube video'
|
||||
},
|
||||
thumbnail: {
|
||||
type: graphql.GraphQLString,
|
||||
description: 'thumbnail of the YouTube video'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
let mediaEntryEdgeType = new graphql.GraphQLObjectType({
|
||||
name: 'MediaEntryEdge',
|
||||
fields: {
|
||||
id: {
|
||||
type: graphql.GraphQLID,
|
||||
description: 'the connection id'
|
||||
},
|
||||
position: {
|
||||
type: graphql.GraphQLInt,
|
||||
description: 'position in the queue'
|
||||
},
|
||||
node: {
|
||||
type: mediaEntryType,
|
||||
description: 'the media entry node'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
let mediaEntryConnectionType = new graphql.GraphQLObjectType({
|
||||
name: 'MediaEntryConnection',
|
||||
fields: {
|
||||
edges: {
|
||||
type: graphql.GraphQLList(mediaEntryEdgeType)
|
||||
},
|
||||
nodes: {
|
||||
type: graphql.GraphQLList(mediaEntryType)
|
||||
},
|
||||
pageInfo: {
|
||||
type: graphql.assertNonNullType(pageInfoType),
|
||||
description: 'pagination information'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
let musicPlayerType = new graphql.GraphQLObjectType({
|
||||
|
||||
name: 'MusicPlayer',
|
||||
fields: {
|
||||
queue: {
|
||||
type: new graphql.GraphQLList(mediaEntryConnectionType),
|
||||
description: 'media entries in the music queue'
|
||||
},
|
||||
queueCount: {
|
||||
type: graphql.GraphQLInt,
|
||||
description: 'number of media entries in the queue'
|
||||
},
|
||||
songStartTime: {
|
||||
type: graphql.GraphQLString
|
||||
},
|
||||
playing: {
|
||||
type: graphql.GraphQLBoolean
|
||||
},
|
||||
volume: {
|
||||
type: graphql.GraphQLFloat
|
||||
},
|
||||
repeat: {
|
||||
type: graphql.GraphQLBoolean
|
||||
},
|
||||
currentSong: {
|
||||
type: mediaEntryType
|
||||
},
|
||||
quality: {
|
||||
type: graphql.GraphQLString
|
||||
},
|
||||
voiceChannel: {
|
||||
type: graphql.GraphQLString
|
||||
},
|
||||
connected: {
|
||||
type: graphql.GraphQLBoolean
|
||||
},
|
||||
paused: {
|
||||
type: graphql.GraphQLBoolean
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
let presenceType = new graphql.GraphQLObjectType({
|
||||
|
||||
name: 'Presence',
|
||||
fields: {
|
||||
game: {
|
||||
type: graphql.GraphQLString
|
||||
},
|
||||
status: {
|
||||
type: graphql.GraphQLString
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
let userType = new graphql.GraphQLObjectType({
|
||||
|
||||
name: 'User',
|
||||
fields: {
|
||||
id: {
|
||||
type: graphql.GraphQLID
|
||||
},
|
||||
discordId: {
|
||||
type: graphql.GraphQLID
|
||||
},
|
||||
name: {
|
||||
type: graphql.GraphQLString
|
||||
},
|
||||
avatar: {
|
||||
type: graphql.GraphQLString
|
||||
},
|
||||
bot: {
|
||||
type: graphql.GraphQLBoolean
|
||||
},
|
||||
tag: {
|
||||
type: graphql.GraphQLString
|
||||
},
|
||||
presence: {
|
||||
type: presenceType
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
let guildMemberType = new graphql.GraphQLObjectType({
|
||||
name: 'GuildMember',
|
||||
fields: {
|
||||
id: {
|
||||
type: graphql.assertNonNullType(graphql.GraphQLID),
|
||||
description: 'id of the guild member'
|
||||
},
|
||||
discordId: {
|
||||
type: graphql.GraphQLID
|
||||
},
|
||||
user: {
|
||||
type: userType,
|
||||
description: 'the user instance of the guild member'
|
||||
},
|
||||
nickname: {
|
||||
type: graphql.GraphQLString,
|
||||
description: 'the nickname of the guild member'
|
||||
},
|
||||
roles: {
|
||||
type: graphql.GraphQLList(roleType),
|
||||
description: 'the roles of the guild member'
|
||||
},
|
||||
highestRole: {
|
||||
type: roleType,
|
||||
description: 'the highest role of the guild member'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
let userRoleEdgeType = new graphql.GraphQLObjectType({
|
||||
name: 'userRoleEdge',
|
||||
fields: {
|
||||
id: {
|
||||
type: graphql.GraphQLID,
|
||||
description: 'the connection id'
|
||||
},
|
||||
node: {
|
||||
type: guildMemberType,
|
||||
description: 'guild member edge of the role'
|
||||
},
|
||||
isHighest: {
|
||||
type: graphql.GraphQLBoolean,
|
||||
description: 'is the role the highest of the guild member'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
let userRoleConnectionType = new graphql.GraphQLObjectType({
|
||||
name: 'UserRoleConnection',
|
||||
fields: {
|
||||
edges: {
|
||||
type: graphql.GraphQLList(userRoleEdgeType)
|
||||
},
|
||||
nodes: {
|
||||
type: graphql.GraphQLList(userType)
|
||||
},
|
||||
pageInfoType: {
|
||||
type: graphql.assertNonNullType(pageInfoType),
|
||||
description: 'pagination information'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
let roleType = new graphql.GraphQLObjectType({
|
||||
|
||||
name: 'Role',
|
||||
fields: {
|
||||
id: {
|
||||
type: graphql.GraphQLID
|
||||
},
|
||||
discordId: {
|
||||
type: graphql.GraphQLID
|
||||
},
|
||||
name: {
|
||||
type: graphql.GraphQLString
|
||||
},
|
||||
color: {
|
||||
type: graphql.GraphQLString
|
||||
},
|
||||
members: {
|
||||
type: userRoleConnectionType
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
let userGuildConnectionType = new graphql.GraphQLObjectType({
|
||||
name: 'UserGuildConnection',
|
||||
fields: {
|
||||
edges: {
|
||||
type: graphql.GraphQLList(guildMemberType)
|
||||
},
|
||||
nodes: {
|
||||
type: graphql.GraphQLList(userType)
|
||||
},
|
||||
pageInfoType: {
|
||||
type: graphql.assertNonNullType(pageInfoType),
|
||||
description: 'pagination information'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
let guildType = new graphql.GraphQLObjectType({
|
||||
|
||||
name: 'Guild',
|
||||
fields: {
|
||||
id: {
|
||||
type: graphql.GraphQLID
|
||||
},
|
||||
discordId: {
|
||||
type: graphql.GraphQLID
|
||||
},
|
||||
name: {
|
||||
type: graphql.GraphQLString
|
||||
},
|
||||
owner: {
|
||||
type: guildMemberType
|
||||
},
|
||||
members: {
|
||||
type: userGuildConnectionType
|
||||
},
|
||||
memberCount: {
|
||||
type: graphql.GraphQLInt
|
||||
},
|
||||
roles: {
|
||||
type: graphql.GraphQLList(roleType),
|
||||
description: 'the roles of the guild'
|
||||
},
|
||||
icon: {
|
||||
type: graphql.GraphQLString
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
let guildEdgeType = new graphql.GraphQLObjectType({
|
||||
name: 'GuildEdge',
|
||||
fields: {
|
||||
id: {
|
||||
type: graphql.GraphQLID,
|
||||
description: 'id of the connection'
|
||||
},
|
||||
node: {
|
||||
type: guildType
|
||||
},
|
||||
musicPlayer: {
|
||||
type: musicPlayerType,
|
||||
description: 'guilds music player'
|
||||
},
|
||||
savedMedia: {
|
||||
type: mediaEntryConnectionType,
|
||||
description: 'saved media entries'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
let guildConnectionType = new graphql.GraphQLObjectType({
|
||||
name: 'GuildConnection',
|
||||
edges: {
|
||||
type: guildEdgeType
|
||||
},
|
||||
nodes: {
|
||||
type: graphql.GraphQLList(guildType)
|
||||
},
|
||||
pageInfo: {
|
||||
type: pageInfoType,
|
||||
description: 'pagination information'
|
||||
}
|
||||
});
|
||||
|
||||
let clientType = new graphql.GraphQLObjectType({
|
||||
name: 'Client',
|
||||
fields: {
|
||||
guilds: {
|
||||
type: [guildType]
|
||||
},
|
||||
guildCount: {
|
||||
type: graphql.GraphQLInt
|
||||
},
|
||||
voiceConnectionCount: {
|
||||
type: graphql.GraphQLInt
|
||||
},
|
||||
user: {
|
||||
type: userType
|
||||
},
|
||||
ping: {
|
||||
type: graphql.GraphQLFloat
|
||||
},
|
||||
status: {
|
||||
type: graphql.GraphQLInt
|
||||
},
|
||||
uptime: {
|
||||
type: graphql.GraphQLInt
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
let logLevelEnum = new graphql.GraphQLEnumType({
|
||||
name: 'LogLevel',
|
||||
description: 'log levels of log entries',
|
||||
values: {
|
||||
SILLY: {
|
||||
value: 'silly'
|
||||
},
|
||||
DEBUG: {
|
||||
value: 'debug'
|
||||
},
|
||||
VERBOSE: {
|
||||
value: 'verbose'
|
||||
},
|
||||
INFO: {
|
||||
value: 'info'
|
||||
},
|
||||
WARN: {
|
||||
value: 'warn'
|
||||
},
|
||||
ERROR: {
|
||||
value: 'error'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
let logEntryType = new graphql.GraphQLObjectType({
|
||||
name: 'LogEntry',
|
||||
fields: {
|
||||
id: {
|
||||
type: graphql.assertNonNullType(graphql.GraphQLID),
|
||||
description: 'id of the log entry'
|
||||
},
|
||||
message: {
|
||||
type: graphql.GraphQLString,
|
||||
description: 'log entry content'
|
||||
},
|
||||
level: {
|
||||
type: logLevelEnum,
|
||||
description: 'log level of the log entry'
|
||||
},
|
||||
timestamp: {
|
||||
type: graphql.GraphQLString,
|
||||
description: 'timestamp of the log entry'
|
||||
},
|
||||
module: {
|
||||
type: graphql.GraphQLString,
|
||||
description: 'module that logged the entry'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
const queryType = new graphql.GraphQLObjectType({
|
||||
|
||||
name: 'Query',
|
||||
fields: {
|
||||
client: {
|
||||
type: clientType,
|
||||
description: 'client instance of the bot'
|
||||
},
|
||||
presences: {
|
||||
type: graphql.assertNonNullType(graphql.GraphQLList(presenceType)),
|
||||
description: 'presences of the bot'
|
||||
},
|
||||
prefix: {
|
||||
type: graphql.GraphQLString,
|
||||
description: 'prefix of the bot'
|
||||
},
|
||||
logs: {
|
||||
type: graphql.GraphQLList(logEntryType),
|
||||
description: 'log entries of the bot'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Object.assign(exports, {
|
||||
queryType: queryType
|
||||
});
|
@ -1,429 +0,0 @@
|
||||
enum LogLevel {
|
||||
SILLY
|
||||
DEBUG
|
||||
VERBOSE
|
||||
INFO
|
||||
WARN
|
||||
ERROR
|
||||
}
|
||||
|
||||
type PageInfo {
|
||||
|
||||
# the total number of entries on all pages
|
||||
total: Int
|
||||
|
||||
# the number of entries per page
|
||||
perPage: Int
|
||||
|
||||
# the current page
|
||||
currentPage: Int
|
||||
|
||||
# the last page
|
||||
lastPage: Int
|
||||
|
||||
# If there is a next page
|
||||
hasNextPage: Boolean
|
||||
}
|
||||
|
||||
type MediaEntry {
|
||||
|
||||
# the id of the media entry
|
||||
id: ID!
|
||||
|
||||
# the url to the YouTube video
|
||||
url: String!
|
||||
|
||||
# the title of the YouTube video
|
||||
name: String!
|
||||
|
||||
# the url of the YouTube video's thumbnail
|
||||
thumbnail: String!
|
||||
}
|
||||
|
||||
type MediaEntryEdge {
|
||||
|
||||
# the id of the edge
|
||||
id: ID!
|
||||
|
||||
node: MediaEntry
|
||||
|
||||
# the position of the entry in the queue
|
||||
position: Int
|
||||
}
|
||||
|
||||
type MediaEntryConnection {
|
||||
|
||||
edges: [MediaEntryEdge]
|
||||
|
||||
nodes: [MediaEntry]
|
||||
|
||||
# the pagination information
|
||||
pageInfo: PageInfo
|
||||
}
|
||||
|
||||
type MusicPlayer {
|
||||
|
||||
# the content of the music players queue
|
||||
#
|
||||
# Arguments
|
||||
# id: get the media entry by id
|
||||
# page: get the page by number
|
||||
# perPage: the number of entries per page
|
||||
queue(
|
||||
id: ID,
|
||||
page: Int,
|
||||
perPage: Int
|
||||
): MediaEntryConnection
|
||||
|
||||
# the current position in the song
|
||||
songPosition: Int
|
||||
|
||||
# if the music player is currently playing
|
||||
playing: Boolean!
|
||||
|
||||
# the volume of the music player
|
||||
volume: Float
|
||||
|
||||
# if the music player plays on repeat
|
||||
repeat: Boolean
|
||||
|
||||
# the currently playing song
|
||||
currentSong: MediaEntry
|
||||
|
||||
# the quality of the music that is played (YouTube quality)
|
||||
quality: String
|
||||
|
||||
# the name of the voice channel the music player is playing in
|
||||
voiceChannel: String
|
||||
|
||||
# if the music player is connected to a voice channel
|
||||
connected: Boolean!
|
||||
|
||||
# if the music player is paused
|
||||
paused: Boolean!
|
||||
}
|
||||
|
||||
type User {
|
||||
|
||||
# the id of the user
|
||||
id: ID!
|
||||
|
||||
# the discord id of the user
|
||||
discordId: String
|
||||
|
||||
# the name of the user
|
||||
name: String!
|
||||
|
||||
# the url of the users avatar
|
||||
avatar: String
|
||||
|
||||
# if the user is a bot
|
||||
bot: Boolean
|
||||
|
||||
# the discord tag of the user
|
||||
tag: String!
|
||||
|
||||
# the current presence of the user
|
||||
presence: Presence
|
||||
}
|
||||
|
||||
type Role {
|
||||
|
||||
# the id of the role
|
||||
id: ID!
|
||||
|
||||
# the discord id of the role
|
||||
discordId: String
|
||||
|
||||
# the name of the role
|
||||
name: String
|
||||
|
||||
# the color of the role
|
||||
color: String
|
||||
}
|
||||
|
||||
type GuildMemberRoleEdge {
|
||||
|
||||
# the id of the edge
|
||||
id: ID!
|
||||
|
||||
node: GuildMember
|
||||
|
||||
# if the role is the highest of the guild member
|
||||
isHighest: Boolean
|
||||
}
|
||||
|
||||
type GuildMemberRoleConnection {
|
||||
|
||||
edges: [GuildMemberRoleEdge]
|
||||
|
||||
nodes: [GuildMember]
|
||||
|
||||
# the pagination information
|
||||
pageInfo: PageInfo
|
||||
}
|
||||
|
||||
type GuildRoleEdge {
|
||||
|
||||
# the id of the edge
|
||||
id: ID!
|
||||
|
||||
node: Role
|
||||
|
||||
# the members in the role
|
||||
#
|
||||
# Arguments
|
||||
# id: get the member by id
|
||||
# page: get the page by number
|
||||
# perPage: the number of entries per page
|
||||
members(
|
||||
id: ID,
|
||||
page: Int,
|
||||
perPage: Int
|
||||
): GuildMemberRoleConnection
|
||||
}
|
||||
|
||||
type GuildRoleConnection{
|
||||
|
||||
edges: [GuildRoleEdge]
|
||||
|
||||
nodes: [Role]
|
||||
|
||||
# the pagination information
|
||||
pageInfo: PageInfo
|
||||
}
|
||||
|
||||
type GuildMember {
|
||||
|
||||
# the id of the guild member
|
||||
id: ID!
|
||||
|
||||
# the discord id of the guild member
|
||||
discordId: String
|
||||
|
||||
# the user associated with the guild member
|
||||
user: User
|
||||
|
||||
# the nickname of the guild member
|
||||
nickname: String
|
||||
|
||||
# the roles of the guild member
|
||||
roles(
|
||||
first: Int = 10,
|
||||
offset: Int = 0,
|
||||
id: String
|
||||
): [Role]
|
||||
|
||||
# the highest role of the guild member
|
||||
highestRole: Role
|
||||
}
|
||||
|
||||
type GuildMemberEdge {
|
||||
|
||||
# the id of the edge
|
||||
id: ID!
|
||||
|
||||
node: GuildMember
|
||||
|
||||
# if the guild member is the server owner
|
||||
isOwner: Boolean
|
||||
}
|
||||
|
||||
type GuildMemberConnection{
|
||||
|
||||
edges: [GuildMemberEdge]
|
||||
|
||||
nodes: [GuildMember]
|
||||
|
||||
# the pagination information
|
||||
pageInfo: PageInfo
|
||||
}
|
||||
|
||||
type Guild {
|
||||
|
||||
# the id of the guild
|
||||
id: ID!
|
||||
|
||||
# the discord id of the guild
|
||||
discordId: ID
|
||||
|
||||
# the guild's name
|
||||
name: String
|
||||
|
||||
# the owner of the guild
|
||||
owner: GuildMember
|
||||
|
||||
# the members in the guild
|
||||
#
|
||||
# Arguments
|
||||
# id: get the member by id
|
||||
# page: get the page by number
|
||||
# perPage: the number of entries per page
|
||||
members(
|
||||
id: ID,
|
||||
page: Int,
|
||||
perPage: Int
|
||||
): GuildMemberConnection
|
||||
|
||||
# the roles of the guild
|
||||
#
|
||||
# Arguments
|
||||
# id: get the role by id
|
||||
# page: get the page by number
|
||||
# perPage: the number of entries per page
|
||||
roles(
|
||||
id: ID,
|
||||
page: Int,
|
||||
perPage: Int
|
||||
): GuildRoleConnection
|
||||
|
||||
# the url of the guild icon
|
||||
icon: String
|
||||
}
|
||||
|
||||
type GuildEdge {
|
||||
|
||||
# the id of the edge
|
||||
id: ID!
|
||||
|
||||
node: Guild
|
||||
|
||||
# the music player associated with the guild
|
||||
musicPlayer: MusicPlayer
|
||||
|
||||
# the saved media of the guild
|
||||
savedMedia: mediaEntryConnection
|
||||
}
|
||||
|
||||
type GuildConnection {
|
||||
|
||||
edges: [GuildEdge]
|
||||
|
||||
nodes: [Guild]
|
||||
|
||||
# the pagination information
|
||||
pageInfo: PageInfo
|
||||
}
|
||||
|
||||
type Client {
|
||||
|
||||
# the guilds the client has joined
|
||||
#
|
||||
# Arguments
|
||||
# id: get the guild by id
|
||||
# page: get the page by number
|
||||
# perPage: the number of entries per page
|
||||
guilds (
|
||||
id: ID,
|
||||
page: Int,
|
||||
perPage: Int
|
||||
): GuildConnection
|
||||
|
||||
# the number of voice connections
|
||||
voiceConnectionCount: Int
|
||||
|
||||
# the bot user
|
||||
user: User
|
||||
|
||||
# the current average ping
|
||||
ping: Float
|
||||
|
||||
# the websocket status
|
||||
status: Int
|
||||
|
||||
# the total uptime
|
||||
uptime: Int
|
||||
}
|
||||
|
||||
type LogEntry {
|
||||
|
||||
# the id of the log entry
|
||||
id: ID!
|
||||
|
||||
# the message of the log entry
|
||||
message: String
|
||||
|
||||
# the level of the log entry
|
||||
level: Level
|
||||
|
||||
# the timestamp of the log entry
|
||||
timestamp: String
|
||||
|
||||
# the module that created the log entry
|
||||
module: String
|
||||
}
|
||||
|
||||
type Query {
|
||||
|
||||
# The bots client
|
||||
client: Client
|
||||
|
||||
# the presences in the presence rotation
|
||||
presences: [String]!
|
||||
|
||||
# the prefix for commands
|
||||
prefix: String
|
||||
|
||||
# The log entries generated in the current runtime.
|
||||
#
|
||||
# Arguments
|
||||
# first: the number of entries to get
|
||||
# offset: the offset of the entries
|
||||
# id: get the log entry by id
|
||||
# last: oposite of first - the latest entries
|
||||
# level: filter by loglevel
|
||||
logs(
|
||||
first: Int,
|
||||
offset: Int = 0,
|
||||
id: String,
|
||||
last: Int = 10,
|
||||
level: LogLevel
|
||||
): [LogEntry]
|
||||
}
|
||||
|
||||
type Mutation {
|
||||
|
||||
# adds media to the queue
|
||||
#
|
||||
# Arguments
|
||||
# guildId: the id of the guild
|
||||
# url: the url to the media YouTube video
|
||||
addMediaToQueue(
|
||||
guildId: ID!,
|
||||
url: String!
|
||||
): MusicPlayer
|
||||
|
||||
# removes media from the queue
|
||||
#
|
||||
# Arguments
|
||||
# guildId: the id of the guild
|
||||
# entryId: the id of the media entry to remove
|
||||
removeMediaFromQueue(
|
||||
guildId: ID!,
|
||||
entryId: ID!
|
||||
): MusicPlayer
|
||||
|
||||
# skips to the next song
|
||||
#
|
||||
# Arguments
|
||||
# guildId: the id of the guild
|
||||
skipSong(guildId: ID!): MusicPlayer
|
||||
|
||||
# toggles between pause and play
|
||||
#
|
||||
# Arguments
|
||||
# guildId: the id of the guild
|
||||
togglePause(guildId: ID!): MusicPlayer
|
||||
|
||||
# toggles repeat
|
||||
#
|
||||
# Arguments
|
||||
# guildId: the id of the guild
|
||||
toggleRepeat(guildId: ID!): MusicPlayer
|
||||
|
||||
# stops the music
|
||||
#
|
||||
# Arguments
|
||||
# guildId: the id of the guild
|
||||
stopMusic(guildId: ID!): MusicPlayer
|
||||
}
|
Loading…
Reference in New Issue