You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
discordbot.js/lib/web/schema.graphqls

430 lines
7.3 KiB
GraphQL

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
}