rm voice
This commit is contained in:
		
							parent
							
								
									361baa39eb
								
							
						
					
					
						commit
						921d7323a3
					
				
					 1 changed files with 0 additions and 112 deletions
				
			
		|  | @ -1,112 +0,0 @@ | ||||||
| import { Guild } from '../structures/guild.ts' |  | ||||||
| import { |  | ||||||
|   VoiceChannel, |  | ||||||
|   VoiceServerData |  | ||||||
| } from '../structures/guildVoiceChannel.ts' |  | ||||||
| import { VoiceOpcodes } from '../types/voice.ts' |  | ||||||
| import { Collection } from '../utils/collection.ts' |  | ||||||
| import { HarmonyEventEmitter } from '../utils/events.ts' |  | ||||||
| import { Client } from './client.ts' |  | ||||||
| 
 |  | ||||||
| export interface VoiceOptions { |  | ||||||
|   channel: VoiceChannel |  | ||||||
|   data: VoiceServerData |  | ||||||
|   manager: VoiceConnectionsManager |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| export class VoiceConnectionsManager { |  | ||||||
|   client: Client |  | ||||||
|   connections: Collection<string, VoiceConnection> = new Collection() |  | ||||||
| 
 |  | ||||||
|   constructor(client: Client) { |  | ||||||
|     this.client = client |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   async establish(options: VoiceOptions): Promise<VoiceConnection> { |  | ||||||
|     if (this.connections.has(options.channel.guild.id) === true) |  | ||||||
|       throw new Error('Voice Connection already established') |  | ||||||
|     const conn = new VoiceConnection(this, options) |  | ||||||
|     this.connections.set(options.channel.guild.id, conn) |  | ||||||
|     await conn.connect() |  | ||||||
|     return conn |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // eslint-disable-next-line @typescript-eslint/consistent-type-definitions
 |  | ||||||
| export type VoiceConnectionEvents = { |  | ||||||
|   ready: [] |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /** Represents a Voice Connection made through a Voice Channel */ |  | ||||||
| export class VoiceConnection extends HarmonyEventEmitter<VoiceConnectionEvents> { |  | ||||||
|   client: Client |  | ||||||
|   ws?: WebSocket |  | ||||||
|   guild: Guild |  | ||||||
|   channel: VoiceChannel |  | ||||||
|   data: VoiceServerData |  | ||||||
|   manager: VoiceConnectionsManager |  | ||||||
|   ssrc?: number |  | ||||||
|   ip?: string |  | ||||||
|   port?: number |  | ||||||
| 
 |  | ||||||
|   constructor(manager: VoiceConnectionsManager, options: VoiceOptions) { |  | ||||||
|     super() |  | ||||||
|     this.client = manager.client |  | ||||||
|     this.manager = manager |  | ||||||
|     this.channel = options.channel |  | ||||||
|     this.guild = options.channel.guild |  | ||||||
|     this.data = options.data |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   /** Connect to Voice Server */ |  | ||||||
|   async connect(): Promise<VoiceConnection> { |  | ||||||
|     this.ws = new WebSocket(`wss://${this.data.endpoint}`) |  | ||||||
|     this.ws.binaryType = 'arraybuffer' |  | ||||||
|     this.ws.onopen = this.onopen.bind(this) |  | ||||||
|     this.ws.onclose = this.onclose.bind(this) |  | ||||||
|     this.ws.onmessage = this.onmessage.bind(this) |  | ||||||
|     this.ws.onerror = this.onerror.bind(this) |  | ||||||
|     return this |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   private send(data: { op: VoiceOpcodes; d: any }): void { |  | ||||||
|     this.ws?.send(JSON.stringify(data)) |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   private sendIdentify(): void { |  | ||||||
|     this.send({ |  | ||||||
|       op: VoiceOpcodes.IDENTIFY, |  | ||||||
|       d: { |  | ||||||
|         server_id: this.guild.id, |  | ||||||
|         user_id: this.client.user?.id, |  | ||||||
|         session_id: this.data.sessionID, |  | ||||||
|         token: this.data.token |  | ||||||
|       } |  | ||||||
|     }) |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   private onopen(): void { |  | ||||||
|     this.sendIdentify() |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   private onclose(): void {} |  | ||||||
| 
 |  | ||||||
|   private onmessage(e: MessageEvent): void { |  | ||||||
|     const data = JSON.parse(e.data) |  | ||||||
|     if (typeof data !== 'object') return |  | ||||||
| 
 |  | ||||||
|     switch (data.op) { |  | ||||||
|       case VoiceOpcodes.READY: |  | ||||||
|         this.ssrc = data.d.ssrc |  | ||||||
|         this.ip = data.d.ip |  | ||||||
|         this.port = data.d.port |  | ||||||
|         this.emit('ready') |  | ||||||
|         break |  | ||||||
| 
 |  | ||||||
|       default: |  | ||||||
|         break |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   private onerror(): void {} |  | ||||||
| } |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue