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