debug logs

This commit is contained in:
DjDeveloperr 2021-03-29 09:39:37 +05:30
parent 3f7372d6a7
commit 010a48c7f0
4 changed files with 51 additions and 22 deletions

View file

@ -414,4 +414,5 @@ export type ClientEvents = {
commandMissingArgs: [ctx: CommandContext] commandMissingArgs: [ctx: CommandContext]
commandUsed: [ctx: CommandContext] commandUsed: [ctx: CommandContext]
commandError: [ctx: CommandContext, err: Error] commandError: [ctx: CommandContext, err: Error]
gatewayError: [err: ErrorEvent, shards: [number, number]]
} }

View file

@ -174,8 +174,8 @@ export class Gateway extends HarmonyEventEmitter<GatewayTypedEvents> {
} }
case GatewayOpcodes.RECONNECT: { case GatewayOpcodes.RECONNECT: {
this.emit('reconnectRequired') this.emit('reconnectRequired')
// eslint-disable-next-line @typescript-eslint/no-floating-promises this.debug('Received OpCode RECONNECT')
this.reconnect() await this.reconnect()
break break
} }
default: default:
@ -191,8 +191,7 @@ export class Gateway extends HarmonyEventEmitter<GatewayTypedEvents> {
switch (code) { switch (code) {
case GatewayCloseCodes.UNKNOWN_ERROR: case GatewayCloseCodes.UNKNOWN_ERROR:
this.debug('API has encountered Unknown Error. Reconnecting...') this.debug('API has encountered Unknown Error. Reconnecting...')
// eslint-disable-next-line @typescript-eslint/no-floating-promises await this.reconnect()
this.reconnect()
break break
case GatewayCloseCodes.UNKNOWN_OPCODE: case GatewayCloseCodes.UNKNOWN_OPCODE:
throw new Error( throw new Error(
@ -206,20 +205,17 @@ export class Gateway extends HarmonyEventEmitter<GatewayTypedEvents> {
throw new Error('Invalid Token provided!') throw new Error('Invalid Token provided!')
case GatewayCloseCodes.INVALID_SEQ: case GatewayCloseCodes.INVALID_SEQ:
this.debug('Invalid Seq was sent. Reconnecting.') this.debug('Invalid Seq was sent. Reconnecting.')
// eslint-disable-next-line @typescript-eslint/no-floating-promises await this.reconnect()
this.reconnect()
break break
case GatewayCloseCodes.RATE_LIMITED: case GatewayCloseCodes.RATE_LIMITED:
throw new Error("You're ratelimited. Calm down.") throw new Error("You're ratelimited. Calm down.")
case GatewayCloseCodes.SESSION_TIMED_OUT: case GatewayCloseCodes.SESSION_TIMED_OUT:
this.debug('Session Timeout. Reconnecting.') this.debug('Session Timeout. Reconnecting.')
// eslint-disable-next-line @typescript-eslint/no-floating-promises await this.reconnect(true)
this.reconnect(true)
break break
case GatewayCloseCodes.INVALID_SHARD: case GatewayCloseCodes.INVALID_SHARD:
this.debug('Invalid Shard was sent. Reconnecting.') this.debug('Invalid Shard was sent. Reconnecting.')
// eslint-disable-next-line @typescript-eslint/no-floating-promises await this.reconnect()
this.reconnect()
break break
case GatewayCloseCodes.SHARDING_REQUIRED: case GatewayCloseCodes.SHARDING_REQUIRED:
throw new Error("Couldn't connect. Sharding is required!") throw new Error("Couldn't connect. Sharding is required!")
@ -257,6 +253,7 @@ export class Gateway extends HarmonyEventEmitter<GatewayTypedEvents> {
error.name = 'ErrorEvent' error.name = 'ErrorEvent'
console.log(error) console.log(error)
this.emit('error', error, event) this.emit('error', error, event)
this.client.emit('gatewayError', event, this.shards)
} }
private enqueueIdentify(forceNew?: boolean): void { private enqueueIdentify(forceNew?: boolean): void {
@ -388,8 +385,8 @@ export class Gateway extends HarmonyEventEmitter<GatewayTypedEvents> {
channel === undefined channel === undefined
? null ? null
: typeof channel === 'string' : typeof channel === 'string'
? channel ? channel
: channel?.id, : channel?.id,
self_mute: voiceOptions.mute === undefined ? false : voiceOptions.mute, self_mute: voiceOptions.mute === undefined ? false : voiceOptions.mute,
self_deaf: voiceOptions.deaf === undefined ? false : voiceOptions.deaf self_deaf: voiceOptions.deaf === undefined ? false : voiceOptions.deaf
} }
@ -402,6 +399,7 @@ export class Gateway extends HarmonyEventEmitter<GatewayTypedEvents> {
async reconnect(forceNew?: boolean): Promise<void> { async reconnect(forceNew?: boolean): Promise<void> {
this.emit('reconnecting') this.emit('reconnecting')
this.debug('Reconnecting... (force new: ' + String(forceNew) + ')')
clearInterval(this.heartbeatIntervalID) clearInterval(this.heartbeatIntervalID)
if (forceNew === true) { if (forceNew === true) {
@ -429,6 +427,7 @@ export class Gateway extends HarmonyEventEmitter<GatewayTypedEvents> {
} }
close(code: number = 1000, reason?: string): void { close(code: number = 1000, reason?: string): void {
this.debug(`Closing with code ${code}${reason !== undefined && reason !== '' ? ` and reason ${reason}` : ''}`)
return this.websocket?.close(code, reason) return this.websocket?.close(code, reason)
} }

View file

@ -175,15 +175,15 @@ export class Interaction extends SnowflakeBase {
type: data.type ?? InteractionResponseType.CHANNEL_MESSAGE_WITH_SOURCE, type: data.type ?? InteractionResponseType.CHANNEL_MESSAGE_WITH_SOURCE,
data: data:
data.type === undefined || data.type === undefined ||
data.type === InteractionResponseType.CHANNEL_MESSAGE_WITH_SOURCE || data.type === InteractionResponseType.CHANNEL_MESSAGE_WITH_SOURCE ||
data.type === InteractionResponseType.CHANNEL_MESSAGE data.type === InteractionResponseType.CHANNEL_MESSAGE
? { ? {
content: data.content ?? '', content: data.content ?? '',
embeds: data.embeds, embeds: data.embeds,
tts: data.tts ?? false, tts: data.tts ?? false,
flags, flags,
allowed_mentions: data.allowedMentions ?? undefined allowed_mentions: data.allowedMentions ?? undefined
} }
: undefined : undefined
} }
@ -313,9 +313,10 @@ export class Interaction extends SnowflakeBase {
(option as WebhookMessageOptions)?.embed !== undefined (option as WebhookMessageOptions)?.embed !== undefined
? [(option as WebhookMessageOptions).embed] ? [(option as WebhookMessageOptions).embed]
: (option as WebhookMessageOptions)?.embeds !== undefined : (option as WebhookMessageOptions)?.embeds !== undefined
? (option as WebhookMessageOptions).embeds ? (option as WebhookMessageOptions).embeds
: undefined, : undefined,
file: (option as WebhookMessageOptions)?.file, file: (option as WebhookMessageOptions)?.file,
files: (option as WebhookMessageOptions)?.files,
tts: (option as WebhookMessageOptions)?.tts, tts: (option as WebhookMessageOptions)?.tts,
allowed_mentions: (option as WebhookMessageOptions)?.allowedMentions allowed_mentions: (option as WebhookMessageOptions)?.allowedMentions
} }

28
src/test/debug.ts Normal file
View file

@ -0,0 +1,28 @@
import { Client, event } from '../../mod.ts'
import { TOKEN } from './config.ts'
class MyClient extends Client {
constructor() {
super({
token: TOKEN,
intents: [],
})
}
@event()
ready(): void {
console.log('Connected!')
}
debug(title: string, msg: string): void {
console.log(`[${title}] ${msg}`)
if (title === 'Gateway' && msg === 'Initializing WebSocket...') {
try { throw new Error("Stack") } catch (e) {
console.log(e.stack)
}
}
}
}
const client = new MyClient()
client.connect()