mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-16 03:23:29 +01:00
add disconnect event, document warn and debug events (#702)
* add documentation for events, and add a disconnect event, because i know people use that * generate docs, and fix a hastily copied docstring * fix permissions freak out
This commit is contained in:
committed by
Schuyler Cebulskie
parent
25531170ec
commit
7cb2e8eef7
File diff suppressed because one or more lines are too long
@@ -25,10 +25,14 @@ class ClientManager {
|
|||||||
* @param {function} reject Function to run when connection fails
|
* @param {function} reject Function to run when connection fails
|
||||||
*/
|
*/
|
||||||
connectToWebSocket(token, resolve, reject) {
|
connectToWebSocket(token, resolve, reject) {
|
||||||
this.client.emit('debug', `Authenticated using token ${token}`);
|
/**
|
||||||
|
* Emitted when there is debug information
|
||||||
|
* @event Client#debug
|
||||||
|
*/
|
||||||
|
this.client.emit(Constants.Events.DEBUG, `Authenticated using token ${token}`);
|
||||||
this.client.token = token;
|
this.client.token = token;
|
||||||
this.client.rest.methods.getGateway().then(gateway => {
|
this.client.rest.methods.getGateway().then(gateway => {
|
||||||
this.client.emit('debug', `Using gateway ${gateway}`);
|
this.client.emit(Constants.Events.DEBUG, `Using gateway ${gateway}`);
|
||||||
this.client.ws.connect(gateway);
|
this.client.ws.connect(gateway);
|
||||||
this.client.once(Constants.Events.READY, () => resolve(token));
|
this.client.once(Constants.Events.READY, () => resolve(token));
|
||||||
}).catch(reject);
|
}).catch(reject);
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ class VoiceConnectionPlayer extends EventEmitter {
|
|||||||
killStream(stream) {
|
killStream(stream) {
|
||||||
const streams = this.processMap.get(stream);
|
const streams = this.processMap.get(stream);
|
||||||
this._streamingData = this.dispatcher.streamingData;
|
this._streamingData = this.dispatcher.streamingData;
|
||||||
this.emit('debug', 'Cleaning up player after audio stream ended or encountered an error');
|
this.emit(Constants.Events.DEBUG, 'Cleaning up player after audio stream ended or encountered an error');
|
||||||
|
|
||||||
const dummyHandler = () => null;
|
const dummyHandler = () => null;
|
||||||
|
|
||||||
@@ -62,25 +62,25 @@ class VoiceConnectionPlayer extends EventEmitter {
|
|||||||
streams.pcmConverter.stdout.once('error', dummyHandler);
|
streams.pcmConverter.stdout.once('error', dummyHandler);
|
||||||
if (streams.inputStream.unpipe) {
|
if (streams.inputStream.unpipe) {
|
||||||
streams.inputStream.unpipe(streams.pcmConverter.stdin);
|
streams.inputStream.unpipe(streams.pcmConverter.stdin);
|
||||||
this.emit('debug', '- Unpiped input stream');
|
this.emit(Constants.Events.DEBUG, '- Unpiped input stream');
|
||||||
} else if (streams.inputStream.destroy) {
|
} else if (streams.inputStream.destroy) {
|
||||||
streams.inputStream.destroy();
|
streams.inputStream.destroy();
|
||||||
this.emit('debug', '- Couldn\'t unpipe input stream, so destroyed input stream');
|
this.emit(Constants.Events.DEBUG, '- Couldn\'t unpipe input stream, so destroyed input stream');
|
||||||
}
|
}
|
||||||
if (streams.pcmConverter.stdin) {
|
if (streams.pcmConverter.stdin) {
|
||||||
streams.pcmConverter.stdin.end();
|
streams.pcmConverter.stdin.end();
|
||||||
this.emit('debug', '- Ended input stream to PCM converter');
|
this.emit(Constants.Events.DEBUG, '- Ended input stream to PCM converter');
|
||||||
}
|
}
|
||||||
if (streams.pcmConverter && streams.pcmConverter.kill) {
|
if (streams.pcmConverter && streams.pcmConverter.kill) {
|
||||||
streams.pcmConverter.kill('SIGINT');
|
streams.pcmConverter.kill('SIGINT');
|
||||||
this.emit('debug', '- Killed the pcm converter');
|
this.emit(Constants.Events.DEBUG, '- Killed the pcm converter');
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
// if an error happened make sure the pcm converter is killed anyway
|
// if an error happened make sure the pcm converter is killed anyway
|
||||||
try {
|
try {
|
||||||
if (streams.pcmConverter && streams.pcmConverter.kill) {
|
if (streams.pcmConverter && streams.pcmConverter.kill) {
|
||||||
streams.pcmConverter.kill('SIGINT');
|
streams.pcmConverter.kill('SIGINT');
|
||||||
this.emit('debug', '- Killed the pcm converter after previous error (abnormal)');
|
this.emit(Constants.Events.DEBUG, '- Killed the pcm converter after previous error (abnormal)');
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return e;
|
return e;
|
||||||
|
|||||||
@@ -157,6 +157,11 @@ class WebSocketManager {
|
|||||||
* @param {Object} event The received websocket data
|
* @param {Object} event The received websocket data
|
||||||
*/
|
*/
|
||||||
eventClose(event) {
|
eventClose(event) {
|
||||||
|
/**
|
||||||
|
* Emitted whenever the client websocket is disconnected
|
||||||
|
* @event Client#disconnect
|
||||||
|
*/
|
||||||
|
if (!this.reconnecting) this.client.emit(Constants.Events.DISCONNECT);
|
||||||
if (event.code === 4004) throw new Error(Constants.Errors.BAD_LOGIN);
|
if (event.code === 4004) throw new Error(Constants.Errors.BAD_LOGIN);
|
||||||
if (!this.reconnecting && event.code !== 1000) this.tryReconnect();
|
if (!this.reconnecting && event.code !== 1000) this.tryReconnect();
|
||||||
}
|
}
|
||||||
@@ -224,7 +229,11 @@ class WebSocketManager {
|
|||||||
if (this.client.options.fetch_all_members) {
|
if (this.client.options.fetch_all_members) {
|
||||||
const promises = this.client.guilds.array().map(g => g.fetchMembers());
|
const promises = this.client.guilds.array().map(g => g.fetchMembers());
|
||||||
Promise.all(promises).then(() => this._emitReady()).catch(e => {
|
Promise.all(promises).then(() => this._emitReady()).catch(e => {
|
||||||
this.client.emit('warn', `Error on pre-ready guild member fetching - ${e}`);
|
/**
|
||||||
|
* Emitted when there is a warning
|
||||||
|
* @event Client#warn
|
||||||
|
*/
|
||||||
|
this.client.emit(Constants.Event.WARN, `Error on pre-ready guild member fetching - ${e}`);
|
||||||
this._emitReady();
|
this._emitReady();
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ class TypingStartHandler extends AbstractHandler {
|
|||||||
|
|
||||||
if (channel && user) {
|
if (channel && user) {
|
||||||
if (channel.type === 'voice') {
|
if (channel.type === 'voice') {
|
||||||
client.emit('warn', `Discord sent a typing packet to voice channel ${channel.id}`);
|
client.emit(Constants.Events.WARN, `Discord sent a typing packet to voice channel ${channel.id}`);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (channel._typing.has(user.id)) {
|
if (channel._typing.has(user.id)) {
|
||||||
|
|||||||
@@ -163,10 +163,12 @@ exports.Events = {
|
|||||||
MESSAGE_CREATE: 'message',
|
MESSAGE_CREATE: 'message',
|
||||||
MESSAGE_DELETE: 'messageDelete',
|
MESSAGE_DELETE: 'messageDelete',
|
||||||
MESSAGE_UPDATE: 'messageUpdate',
|
MESSAGE_UPDATE: 'messageUpdate',
|
||||||
|
DISCONNECT: 'disconnect',
|
||||||
RECONNECTING: 'reconnecting',
|
RECONNECTING: 'reconnecting',
|
||||||
GUILD_MEMBER_SPEAKING: 'guildMemberSpeaking',
|
GUILD_MEMBER_SPEAKING: 'guildMemberSpeaking',
|
||||||
MESSAGE_BULK_DELETE: 'messageDeleteBulk',
|
MESSAGE_BULK_DELETE: 'messageDeleteBulk',
|
||||||
CHANNEL_PINS_UPDATE: 'channelPinsUpdate',
|
CHANNEL_PINS_UPDATE: 'channelPinsUpdate',
|
||||||
|
DEBUG: 'debug',
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.WSEvents = {
|
exports.WSEvents = {
|
||||||
|
|||||||
Reference in New Issue
Block a user