export SlashModule
This commit is contained in:
parent
3dcf57c658
commit
844a408c74
6 changed files with 147 additions and 5 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -113,3 +113,5 @@ src/test/config.ts
|
|||
|
||||
# macOS is shit xD
|
||||
**/.DS_Store
|
||||
|
||||
src/test/music.mp3
|
1
mod.ts
1
mod.ts
|
@ -20,6 +20,7 @@ export {
|
|||
ExtensionCommands,
|
||||
ExtensionsManager
|
||||
} from './src/models/extensions.ts'
|
||||
export { SlashModule } from './src/models/slashModule.ts'
|
||||
export { CommandClient, command } from './src/models/commandClient.ts'
|
||||
export type { CommandClientOptions } from './src/models/commandClient.ts'
|
||||
export { BaseManager } from './src/managers/base.ts'
|
||||
|
|
|
@ -15,6 +15,8 @@ export class VoiceState extends Base {
|
|||
sessionID: string
|
||||
deaf: boolean
|
||||
mute: boolean
|
||||
selfDeaf: boolean
|
||||
selfMute: boolean
|
||||
stream?: boolean
|
||||
video: boolean
|
||||
suppress: boolean
|
||||
|
@ -38,8 +40,8 @@ export class VoiceState extends Base {
|
|||
this.guild = _data.guild
|
||||
this.deaf = data.deaf
|
||||
this.mute = data.mute
|
||||
this.deaf = data.self_deaf
|
||||
this.mute = data.self_mute
|
||||
this.selfDeaf = data.self_deaf
|
||||
this.selfMute = data.self_mute
|
||||
this.stream = data.self_stream
|
||||
this.video = data.self_video
|
||||
this.suppress = data.suppress
|
||||
|
@ -52,6 +54,8 @@ export class VoiceState extends Base {
|
|||
this.mute = data.mute ?? this.mute
|
||||
this.deaf = data.self_deaf ?? this.deaf
|
||||
this.mute = data.self_mute ?? this.mute
|
||||
this.selfDeaf = data.self_deaf ?? this.selfDeaf
|
||||
this.selfMute = data.self_mute ?? this.selfMute
|
||||
this.stream = data.self_stream ?? this.stream
|
||||
this.video = data.self_video ?? this.video
|
||||
this.suppress = data.suppress ?? this.suppress
|
||||
|
|
137
src/test/music.ts
Normal file
137
src/test/music.ts
Normal file
|
@ -0,0 +1,137 @@
|
|||
import {
|
||||
CommandClient,
|
||||
event,
|
||||
Intents,
|
||||
command,
|
||||
CommandContext,
|
||||
Extension,
|
||||
Collection
|
||||
} from '../../mod.ts'
|
||||
import { LL_IP, LL_PASS, LL_PORT, TOKEN } from './config.ts'
|
||||
import {
|
||||
Manager,
|
||||
Player
|
||||
} from 'https://raw.githubusercontent.com/DjDeveloperr/lavaclient-deno/master/mod.ts'
|
||||
|
||||
export const nodes = [
|
||||
{
|
||||
id: 'main',
|
||||
host: LL_IP,
|
||||
port: LL_PORT,
|
||||
password: LL_PASS
|
||||
}
|
||||
]
|
||||
|
||||
class MyClient extends CommandClient {
|
||||
manager: Manager
|
||||
|
||||
constructor() {
|
||||
super({
|
||||
prefix: ['.'],
|
||||
caseSensitive: false
|
||||
})
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
||||
const client = this
|
||||
|
||||
this.manager = new Manager(nodes, {
|
||||
send(id, payload) {
|
||||
// Sharding not added yet
|
||||
client.gateway?.send(payload)
|
||||
}
|
||||
})
|
||||
|
||||
this.manager.on('socketError', ({ id }, error) =>
|
||||
console.error(`${id} ran into an error`, error)
|
||||
)
|
||||
this.manager.on('socketReady', (node) =>
|
||||
console.log(`${node.id} connected.`)
|
||||
)
|
||||
|
||||
this.on('raw', (evt: string, d: any) => {
|
||||
if (evt === 'VOICE_SERVER_UPDATE') this.manager.serverUpdate(d)
|
||||
else if (evt === 'VOICE_STATE_UPDATE') this.manager.stateUpdate(d)
|
||||
})
|
||||
}
|
||||
|
||||
@event()
|
||||
ready(): void {
|
||||
console.log(`Logged in as ${this.user?.tag}!`)
|
||||
this.manager.init(this.user?.id as string)
|
||||
}
|
||||
}
|
||||
|
||||
const players = new Collection<string, Player>()
|
||||
|
||||
class VCExtension extends Extension {
|
||||
name = 'VC'
|
||||
subPrefix = 'vc'
|
||||
|
||||
@command()
|
||||
async join(ctx: CommandContext): Promise<any> {
|
||||
if (players.has(ctx.guild?.id as string) === true)
|
||||
return ctx.message.reply(`Already playing in this server!`)
|
||||
|
||||
ctx.argString = ctx.argString.slice(4).trim()
|
||||
|
||||
if (ctx.argString === '')
|
||||
return ctx.message.reply('You gave nothing to search.')
|
||||
|
||||
const userVS = await ctx.guild?.voiceStates.get(ctx.author.id)
|
||||
if (userVS === undefined) {
|
||||
ctx.message.reply("You're not in VC.")
|
||||
return
|
||||
}
|
||||
|
||||
const player = (ctx.client as MyClient).manager.create(
|
||||
ctx.guild?.id as string
|
||||
)
|
||||
|
||||
await player.connect(userVS.channel?.id as string, { selfDeaf: true })
|
||||
|
||||
ctx.message.reply(`Joined VC channel - ${userVS.channel?.name}!`)
|
||||
|
||||
players.set(ctx.guild?.id as string, player)
|
||||
|
||||
ctx.channel.send(`Loading...`)
|
||||
|
||||
ctx.channel.send(`Searching for ${ctx.argString}...`)
|
||||
|
||||
const { track, info } = await player.manager
|
||||
.search(`ytsearch:${ctx.argString}`)
|
||||
.then((e) => e.tracks[0])
|
||||
|
||||
await player.play(track)
|
||||
|
||||
ctx.channel.send(`Now playing ${info.title}!`)
|
||||
}
|
||||
|
||||
@command()
|
||||
async leave(ctx: CommandContext): Promise<any> {
|
||||
const userVS = await ctx.guild?.voiceStates.get(
|
||||
(ctx.client.user?.id as unknown) as string
|
||||
)
|
||||
if (userVS === undefined) {
|
||||
ctx.message.reply("I'm not in VC.")
|
||||
return
|
||||
}
|
||||
userVS.channel?.leave()
|
||||
ctx.message.reply(`Left VC channel - ${userVS.channel?.name}!`)
|
||||
|
||||
if (players.has(ctx.guild?.id as string) !== true)
|
||||
return ctx.message.reply('Not playing anything in this server.')
|
||||
|
||||
const player = (players.get(ctx.guild?.id as string) as unknown) as Player
|
||||
await player.stop()
|
||||
await player.destroy()
|
||||
|
||||
players.delete(ctx.guild?.id as string)
|
||||
ctx.message.reply('Stopped player')
|
||||
}
|
||||
}
|
||||
|
||||
const client = new MyClient()
|
||||
|
||||
client.extensions.load(VCExtension)
|
||||
|
||||
client.connect(TOKEN, Intents.None)
|
|
@ -1,7 +1,6 @@
|
|||
export const UserFlags = {
|
||||
DISCORD_EMPLOYEE: 1 << 0,
|
||||
PARTNERED_SERVER_OWNER: 1 << 1,
|
||||
DISCORD_PARTNER: 1 << 1,
|
||||
HYPESQUAD_EVENTS: 1 << 2,
|
||||
BUGHUNTER_LEVEL_1: 1 << 3,
|
||||
HOUSE_BRAVERY: 1 << 6,
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
// https://discord.com/developers/docs/topics/opcodes-and-status-codes#voice
|
||||
import { MemberPayload } from './guild.ts'
|
||||
|
||||
export enum VoiceOpcodes { // add VoiceOpcodes - UnderC -
|
||||
export enum VoiceOpcodes {
|
||||
IDENTIFY = 0,
|
||||
SELECT_PROTOCOL = 1,
|
||||
READY = 2,
|
||||
|
|
Loading…
Reference in a new issue