UNPKG

botpanel.js

Version:

A simple library for integrating Discord bots with Bot Panel

136 lines (116 loc) 3.53 kB
//import { Client } from './'; export const BP_VERSION = '1.1.0'; export enum OperationCodes { /** Request to authenticate */ AUTHENTICATE = 0, /** Authentication successful */ AUTH_SUCCESS = 1, /** Error received from the WebSocket */ ERROR = 2, APPLICATION_STATUS = 3, // reserved for browser clients /** Guild is being accessed from the dashboard */ GUILD_INTERACTION = 4, /** Response to GUILD_INTERACTION with guild data and info */ REQUEST_GUILD_DATA = 5, /** Guild data modified by user */ MODIFY_GUILD_DATA = 6, /** Acknowledges MODIFY_GUILD_DATA */ ACKNOWLEDGE_INTERACTION = 7, HEARTBEAT = 8 } export enum ComponentType { Text = 'Text', Number = 'Number', Checkbox = 'Checkbox', Select = 'Select', TextChannelSelect = 'Text Channel Select', VoiceChannelSelect = 'Voice Channel Select', CategorySelect = 'Category Select', RoleSelect = 'Role Select' } export enum ElementType { TextChannel = 'textChannels', VoiceChannel = 'voiceChannels', Category = 'categories', Role = 'roles' } export type GuildData = number | string | Array<string> export interface ServerMessage { op: number; d: object; } export interface ServerResponseError { error: string } export interface ServerResponseAuthSuccess { name: string, heartbeatInterval: number } export interface InteractionInfo { interactionId: string, guildId: string } export interface GuildRequestResponse { interactionId?: string, /** Object of guild data for the dashboard. */ data?: { [key: string]: GuildData }, /** Bot is in the guild? */ inGuild: boolean, /** Formatted list of the guild's text channels */ textChannels?: Array<GuildElement>, /** Formatted list of the guild's voice channels */ voiceChannels?: Array<GuildElement>, /** Formatted list of the guild's category channels */ categories?: Array<GuildElement>, /** Formatted list of the guild's roles */ roles?: Array<GuildElement>, /** Object of variables for use in the client dashboard */ variables?: { [key: string]: DynamicSelectOption[] | number | string } } export interface InteractionResponse { interactionId: string, success: boolean, key: GuildDataChangeInfo['varname'], value: GuildDataChangeInfo['data'] } export interface GuildRequestInfo extends InteractionInfo { include: Array<'categories' | 'textChannels' | 'voiceChannels' | 'roles'> } export interface GuildDataChangeInfo extends InteractionInfo { varname: string, data: GuildData, userId: string, inputType: ComponentType.Text | ComponentType.Number | ComponentType.Checkbox | ComponentType.Select } export interface GuildElement { id: string, name: string, position?: number, managed?: boolean } export interface DynamicSelectOption { icon?: string, name: string, value: string } export interface AuthenticationData { /** ID of the client */ id: string, /** Secret key of the client (do not share this) */ secret: string, /** Custom WebSocket server URL (you should only use a trusted server) */ wss?: string, /** (Using this option may cause errors; not supported) */ wssVersionOverride?: string, connectAs?: 'application', // "browser" not supported } // BotPanel.js Custom export interface ClientDebugOptions { logHeartbeat?: boolean, disableAutoReconnect?: boolean } export interface AcknowledgementData { success?: boolean, message?: string | undefined, newValue?: string | number | Array<string> }