Lib name change
This commit is contained in:
		
							parent
							
								
									8ff3ef9f71
								
							
						
					
					
						commit
						41656e2bfe
					
				
					 1 changed files with 33 additions and 31 deletions
				
			
		|  | @ -12,8 +12,8 @@ import { | ||||||
| } from '../types/gateway.ts' | } from '../types/gateway.ts' | ||||||
| import { gatewayHandlers } from './handlers/index.ts' | import { gatewayHandlers } from './handlers/index.ts' | ||||||
| import { GATEWAY_BOT } from '../types/endpoint.ts' | import { GATEWAY_BOT } from '../types/endpoint.ts' | ||||||
| import { GatewayCache } from "../managers/gatewayCache.ts" | import { GatewayCache } from '../managers/gatewayCache.ts' | ||||||
| import { ClientActivityPayload } from "../structures/presence.ts" | import { ClientActivityPayload } from '../structures/presence.ts' | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * Handles Discord gateway connection. |  * Handles Discord gateway connection. | ||||||
|  | @ -36,7 +36,7 @@ class Gateway { | ||||||
|   client: Client |   client: Client | ||||||
|   cache: GatewayCache |   cache: GatewayCache | ||||||
| 
 | 
 | ||||||
|   constructor(client: Client, token: string, intents: GatewayIntents[]) { |   constructor (client: Client, token: string, intents: GatewayIntents[]) { | ||||||
|     this.token = token |     this.token = token | ||||||
|     this.intents = intents |     this.intents = intents | ||||||
|     this.client = client |     this.client = client | ||||||
|  | @ -53,12 +53,12 @@ class Gateway { | ||||||
|     this.websocket.onerror = this.onerror.bind(this) |     this.websocket.onerror = this.onerror.bind(this) | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   private onopen(): void { |   private onopen (): void { | ||||||
|     this.connected = true |     this.connected = true | ||||||
|     this.debug('Connected to Gateway!') |     this.debug('Connected to Gateway!') | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   private async onmessage(event: MessageEvent): Promise<void> { |   private async onmessage (event: MessageEvent): Promise<void> { | ||||||
|     let data = event.data |     let data = event.data | ||||||
|     if (data instanceof ArrayBuffer) { |     if (data instanceof ArrayBuffer) { | ||||||
|       data = new Uint8Array(data) |       data = new Uint8Array(data) | ||||||
|  | @ -140,7 +140,7 @@ class Gateway { | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   private onclose(event: CloseEvent): void { |   private onclose (event: CloseEvent): void { | ||||||
|     this.debug(`Connection Closed with code: ${event.code}`) |     this.debug(`Connection Closed with code: ${event.code}`) | ||||||
| 
 | 
 | ||||||
|     if (event.code === GatewayCloseCodes.UNKNOWN_ERROR) { |     if (event.code === GatewayCloseCodes.UNKNOWN_ERROR) { | ||||||
|  | @ -184,12 +184,12 @@ class Gateway { | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   private onerror(event: Event | ErrorEvent): void { |   private onerror (event: Event | ErrorEvent): void { | ||||||
|     const eventError = event as ErrorEvent |     const eventError = event as ErrorEvent | ||||||
|     console.log(eventError) |     console.log(eventError) | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   private async sendIdentify(forceNewSession?: boolean): Promise<void> { |   private async sendIdentify (forceNewSession?: boolean): Promise<void> { | ||||||
|     if (this.client.bot === true) { |     if (this.client.bot === true) { | ||||||
|       this.debug('Fetching /gateway/bot...') |       this.debug('Fetching /gateway/bot...') | ||||||
|       const info = await this.client.rest.get(GATEWAY_BOT()) |       const info = await this.client.rest.get(GATEWAY_BOT()) | ||||||
|  | @ -219,8 +219,8 @@ class Gateway { | ||||||
|         token: this.token, |         token: this.token, | ||||||
|         properties: { |         properties: { | ||||||
|           $os: Deno.build.os, |           $os: Deno.build.os, | ||||||
|           $browser: 'discord.deno', // TODO: Change lib name
 |           $browser: 'harmony', // TODO: Change lib name
 | ||||||
|           $device: 'discord.deno' |           $device: 'harmony' | ||||||
|         }, |         }, | ||||||
|         compress: true, |         compress: true, | ||||||
|         shard: [0, 1], // TODO: Make sharding possible
 |         shard: [0, 1], // TODO: Make sharding possible
 | ||||||
|  | @ -234,23 +234,23 @@ class Gateway { | ||||||
| 
 | 
 | ||||||
|     if (this.client.bot === false) { |     if (this.client.bot === false) { | ||||||
|       // TODO: Complete Selfbot support
 |       // TODO: Complete Selfbot support
 | ||||||
|       this.debug("Modify Identify Payload for Self-bot..") |       this.debug('Modify Identify Payload for Self-bot..') | ||||||
|       // delete payload.d['intents']
 |       // delete payload.d['intents']
 | ||||||
|       // payload.d.intents = Intents.None
 |       // payload.d.intents = Intents.None
 | ||||||
|       payload.d.presence = null |       payload.d.presence = null | ||||||
|       payload.d.properties = { |       payload.d.properties = { | ||||||
|         $os: "Windows", |         $os: 'Windows', | ||||||
|         $browser: "Firefox", |         $browser: 'Firefox', | ||||||
|         $device: "" |         $device: '' | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|       this.debug("Warn: Support for selfbots is incomplete") |       this.debug('Warn: Support for selfbots is incomplete') | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     this.send(payload) |     this.send(payload) | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   private async sendResume(): Promise<void> { |   private async sendResume (): Promise<void> { | ||||||
|     this.debug(`Preparing to resume with Session: ${this.sessionID}`) |     this.debug(`Preparing to resume with Session: ${this.sessionID}`) | ||||||
|     if (this.sequenceID === undefined) { |     if (this.sequenceID === undefined) { | ||||||
|       const cached = await this.cache.get('seq') |       const cached = await this.cache.get('seq') | ||||||
|  | @ -268,11 +268,11 @@ class Gateway { | ||||||
|     this.send(resumePayload) |     this.send(resumePayload) | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   debug(msg: string): void { |   debug (msg: string): void { | ||||||
|     this.client.debug('Gateway', msg) |     this.client.debug('Gateway', msg) | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   async reconnect(forceNew?: boolean): Promise<void> { |   async reconnect (forceNew?: boolean): Promise<void> { | ||||||
|     clearInterval(this.heartbeatIntervalID) |     clearInterval(this.heartbeatIntervalID) | ||||||
|     if (forceNew === undefined || !forceNew) |     if (forceNew === undefined || !forceNew) | ||||||
|       await this.cache.delete('session_id') |       await this.cache.delete('session_id') | ||||||
|  | @ -280,7 +280,7 @@ class Gateway { | ||||||
|     this.initWebsocket() |     this.initWebsocket() | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   initWebsocket(): void { |   initWebsocket (): void { | ||||||
|     this.websocket = new WebSocket( |     this.websocket = new WebSocket( | ||||||
|       // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
 |       // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
 | ||||||
|       `${DISCORD_GATEWAY_URL}/?v=${DISCORD_API_VERSION}&encoding=json`, |       `${DISCORD_GATEWAY_URL}/?v=${DISCORD_API_VERSION}&encoding=json`, | ||||||
|  | @ -293,39 +293,41 @@ class Gateway { | ||||||
|     this.websocket.onerror = this.onerror.bind(this) |     this.websocket.onerror = this.onerror.bind(this) | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   close(): void { |   close (): void { | ||||||
|     this.websocket.close(1000) |     this.websocket.close(1000) | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   send(data: GatewayResponse): boolean { |   send (data: GatewayResponse): boolean { | ||||||
|     if (this.websocket.readyState !== this.websocket.OPEN) return false |     if (this.websocket.readyState !== this.websocket.OPEN) return false | ||||||
|     this.websocket.send(JSON.stringify({ |     this.websocket.send( | ||||||
|  |       JSON.stringify({ | ||||||
|         op: data.op, |         op: data.op, | ||||||
|         d: data.d, |         d: data.d, | ||||||
|       s: typeof data.s === "number" ? data.s : null, |         s: typeof data.s === 'number' ? data.s : null, | ||||||
|       t: data.t === undefined ? null : data.t, |         t: data.t === undefined ? null : data.t | ||||||
|     })) |       }) | ||||||
|  |     ) | ||||||
|     return true |     return true | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   sendPresence(data: ClientActivityPayload): void { |   sendPresence (data: ClientActivityPayload): void { | ||||||
|     this.send({ |     this.send({ | ||||||
|       op: GatewayOpcodes.PRESENCE_UPDATE, |       op: GatewayOpcodes.PRESENCE_UPDATE, | ||||||
|       d: data |       d: data | ||||||
|     }) |     }) | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   sendHeartbeat(): void { |   sendHeartbeat (): void { | ||||||
|     const payload = { |     const payload = { | ||||||
|       op: GatewayOpcodes.HEARTBEAT, |       op: GatewayOpcodes.HEARTBEAT, | ||||||
|       d: this.sequenceID ?? null |       d: this.sequenceID ?? null | ||||||
|     }; |     } | ||||||
| 
 | 
 | ||||||
|     this.send(payload) |     this.send(payload) | ||||||
|     this.lastPingTimestamp = Date.now() |     this.lastPingTimestamp = Date.now() | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   heartbeat(): void { |   heartbeat (): void { | ||||||
|     if (this.heartbeatServerResponded) { |     if (this.heartbeatServerResponded) { | ||||||
|       this.heartbeatServerResponded = false |       this.heartbeatServerResponded = false | ||||||
|     } else { |     } else { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue