diff --git a/src/client/Client.js b/src/client/Client.js
index 0d1900a8b..5b03c4435 100644
--- a/src/client/Client.js
+++ b/src/client/Client.js
@@ -97,8 +97,7 @@ class Client extends BaseClient {
this.channels = new ChannelStore(this);
/**
- * Presences that have been received for the client user's friends, mapped by user IDs
- * This is only filled when using a user account.
+ * Presences that have been received for the client user, mapped by user IDs
* @type {ClientPresenceStore}
*/
this.presences = new ClientPresenceStore(this);
@@ -106,7 +105,7 @@ class Client extends BaseClient {
Object.defineProperty(this, 'token', { writable: true });
if (!browser && !this.token && 'CLIENT_TOKEN' in process.env) {
/**
- * Authorization token for the logged in user/bot
+ * Authorization token for the logged in bot
* This should be kept private at all times.
* @type {?string}
*/
@@ -240,10 +239,6 @@ class Client extends BaseClient {
/**
* Logs the client in, establishing a websocket connection to Discord.
- * Both bot and regular user accounts are supported, but it is highly recommended to use a bot account whenever
- * possible. User accounts are subject to harsher ratelimits and other restrictions that don't apply to bot accounts.
- * Bot accounts also have access to many features that user accounts cannot utilise. User accounts that are found to
- * be abusing/overusing the API will be banned, locking you out of Discord entirely.
* @param {string} token Token of the account to log in with
* @returns {Promise} Token of the account used
* @example
@@ -262,27 +257,13 @@ class Client extends BaseClient {
/**
* Logs out, terminates the connection to Discord, and destroys the client.
- * @returns {Promise}
+ * @returns {void}
*/
destroy() {
super.destroy();
return this.manager.destroy();
}
- /**
- * Requests a sync of guild data with Discord.
- * This can be done automatically every 30 seconds by enabling {@link ClientOptions#sync}.
- * This is only available when using a user account.
- * @param {Guild[]|Collection} [guilds=this.guilds] An array or collection of guilds to sync
- */
- syncGuilds(guilds = this.guilds) {
- if (this.user.bot) return;
- this.ws.send({
- op: 12,
- d: guilds instanceof Collection ? guilds.keyArray() : guilds.map(g => g.id),
- });
- }
-
/**
* Obtains an invite from Discord.
* @param {InviteResolvable} invite Invite code or URL
@@ -369,22 +350,16 @@ class Client extends BaseClient {
}
/**
- * Obtains the OAuth Application of the bot from Discord.
- * @param {Snowflake} [id='@me'] ID of application to fetch
+ * Obtains the OAuth Application of this bot from Discord.
* @returns {Promise}
- * @example
- * client.fetchApplication('id')
- * .then(application => console.log(`Obtained application with name: ${application.name}`)
- * .catch(console.error);
*/
- fetchApplication(id = '@me') {
- return this.api.oauth2.applications(id).get()
+ fetchApplication() {
+ return this.api.oauth2.applications('@me').get()
.then(app => new ClientApplication(this, app));
}
/**
* Generates a link that can be used to invite the bot to a guild.
- * This is only available when using a bot account.
* @param {PermissionResolvable} [permissions] Permissions to request
* @returns {Promise}
* @example
diff --git a/src/client/ClientManager.js b/src/client/ClientManager.js
index 2a081e3a7..b283fd780 100644
--- a/src/client/ClientManager.js
+++ b/src/client/ClientManager.js
@@ -63,15 +63,7 @@ class ClientManager {
destroy() {
this.client.ws.destroy();
- if (!this.client.user) return Promise.resolve();
- if (this.client.user.bot) {
- this.client.token = null;
- return Promise.resolve();
- } else {
- return this.client.api.logout.post().then(() => {
- this.client.token = null;
- });
- }
+ if (this.client.user) this.client.token = null;
}
}
diff --git a/src/client/actions/ActionsManager.js b/src/client/actions/ActionsManager.js
index 9708d17b2..9e44f4260 100644
--- a/src/client/actions/ActionsManager.js
+++ b/src/client/actions/ActionsManager.js
@@ -20,8 +20,6 @@ class ActionsManager {
this.register(require('./GuildRoleDelete'));
this.register(require('./GuildRoleUpdate'));
this.register(require('./UserUpdate'));
- this.register(require('./UserNoteUpdate'));
- this.register(require('./GuildSync'));
this.register(require('./GuildEmojiCreate'));
this.register(require('./GuildEmojiDelete'));
this.register(require('./GuildEmojiUpdate'));
diff --git a/src/client/actions/GuildSync.js b/src/client/actions/GuildSync.js
deleted file mode 100644
index f7dbde6ad..000000000
--- a/src/client/actions/GuildSync.js
+++ /dev/null
@@ -1,29 +0,0 @@
-const Action = require('./Action');
-
-class GuildSync extends Action {
- handle(data) {
- const client = this.client;
-
- const guild = client.guilds.get(data.id);
- if (guild) {
- if (data.presences) {
- for (const presence of data.presences) guild.presences.add(presence);
- }
-
- if (data.members) {
- for (const syncMember of data.members) {
- const member = guild.members.get(syncMember.user.id);
- if (member) {
- member._patch(syncMember);
- } else {
- guild.members.add(syncMember, false);
- }
- }
- }
-
- if ('large' in data) guild.large = data.large;
- }
- }
-}
-
-module.exports = GuildSync;
diff --git a/src/client/actions/UserNoteUpdate.js b/src/client/actions/UserNoteUpdate.js
deleted file mode 100644
index 77bc14f8c..000000000
--- a/src/client/actions/UserNoteUpdate.js
+++ /dev/null
@@ -1,30 +0,0 @@
-const Action = require('./Action');
-const { Events } = require('../../util/Constants');
-
-class UserNoteUpdateAction extends Action {
- handle(data) {
- const client = this.client;
-
- const oldNote = client.user.notes.get(data.id);
- const note = data.note.length ? data.note : null;
-
- client.user.notes.set(data.id, note);
-
- client.emit(Events.USER_NOTE_UPDATE, data.id, oldNote, note);
-
- return {
- old: oldNote,
- updated: note,
- };
- }
-}
-
-/**
- * Emitted whenever a note is updated.
- * @event Client#userNoteUpdate
- * @param {User} user The user the note belongs to
- * @param {string} oldNote The note content before the update
- * @param {string} newNote The note content after the update
- */
-
-module.exports = UserNoteUpdateAction;
diff --git a/src/client/websocket/packets/WebSocketPacketManager.js b/src/client/websocket/packets/WebSocketPacketManager.js
index 186f234fd..f9d7b13ae 100644
--- a/src/client/websocket/packets/WebSocketPacketManager.js
+++ b/src/client/websocket/packets/WebSocketPacketManager.js
@@ -37,9 +37,6 @@ class WebSocketPacketManager {
this.register(WSEvents.CHANNEL_PINS_UPDATE, require('./handlers/ChannelPinsUpdate'));
this.register(WSEvents.PRESENCE_UPDATE, require('./handlers/PresenceUpdate'));
this.register(WSEvents.USER_UPDATE, require('./handlers/UserUpdate'));
- this.register(WSEvents.USER_NOTE_UPDATE, require('./handlers/UserNoteUpdate'));
- this.register(WSEvents.USER_SETTINGS_UPDATE, require('./handlers/UserSettingsUpdate'));
- this.register(WSEvents.USER_GUILD_SETTINGS_UPDATE, require('./handlers/UserGuildSettingsUpdate'));
this.register(WSEvents.VOICE_STATE_UPDATE, require('./handlers/VoiceStateUpdate'));
this.register(WSEvents.TYPING_START, require('./handlers/TypingStart'));
this.register(WSEvents.MESSAGE_CREATE, require('./handlers/MessageCreate'));
@@ -47,9 +44,6 @@ class WebSocketPacketManager {
this.register(WSEvents.MESSAGE_UPDATE, require('./handlers/MessageUpdate'));
this.register(WSEvents.MESSAGE_DELETE_BULK, require('./handlers/MessageDeleteBulk'));
this.register(WSEvents.VOICE_SERVER_UPDATE, require('./handlers/VoiceServerUpdate'));
- this.register(WSEvents.GUILD_SYNC, require('./handlers/GuildSync'));
- this.register(WSEvents.RELATIONSHIP_ADD, require('./handlers/RelationshipAdd'));
- this.register(WSEvents.RELATIONSHIP_REMOVE, require('./handlers/RelationshipRemove'));
this.register(WSEvents.MESSAGE_REACTION_ADD, require('./handlers/MessageReactionAdd'));
this.register(WSEvents.MESSAGE_REACTION_REMOVE, require('./handlers/MessageReactionRemove'));
this.register(WSEvents.MESSAGE_REACTION_REMOVE_ALL, require('./handlers/MessageReactionRemoveAll'));
diff --git a/src/client/websocket/packets/handlers/GuildSync.js b/src/client/websocket/packets/handlers/GuildSync.js
deleted file mode 100644
index 0b9f5aa86..000000000
--- a/src/client/websocket/packets/handlers/GuildSync.js
+++ /dev/null
@@ -1,11 +0,0 @@
-const AbstractHandler = require('./AbstractHandler');
-
-class GuildSyncHandler extends AbstractHandler {
- handle(packet) {
- const client = this.packetManager.client;
- const data = packet.d;
- client.actions.GuildSync.handle(data);
- }
-}
-
-module.exports = GuildSyncHandler;
diff --git a/src/client/websocket/packets/handlers/Ready.js b/src/client/websocket/packets/handlers/Ready.js
index 367406ba0..0e48e5586 100644
--- a/src/client/websocket/packets/handlers/Ready.js
+++ b/src/client/websocket/packets/handlers/Ready.js
@@ -9,9 +9,6 @@ class ReadyHandler extends AbstractHandler {
client.ws.heartbeat();
- data.user.user_settings = data.user_settings;
- data.user.user_guild_settings = data.user_guild_settings;
-
if (!ClientUser) ClientUser = require('../../../../structures/ClientUser');
const clientUser = new ClientUser(client, data.user);
client.user = clientUser;
@@ -20,27 +17,8 @@ class ReadyHandler extends AbstractHandler {
for (const guild of data.guilds) client.guilds.add(guild);
for (const privateDM of data.private_channels) client.channels.add(privateDM);
-
- for (const relation of data.relationships) {
- const user = client.users.add(relation.user);
- if (relation.type === 1) {
- client.user.friends.set(user.id, user);
- } else if (relation.type === 2) {
- client.user.blocked.set(user.id, user);
- }
- }
-
for (const presence of data.presences || []) client.presences.add(presence);
- if (data.notes) {
- for (const user in data.notes) {
- let note = data.notes[user];
- if (!note.length) note = null;
-
- client.user.notes.set(user, note);
- }
- }
-
if (!client.users.has('1')) {
client.users.add({
id: '1',
@@ -61,7 +39,6 @@ class ReadyHandler extends AbstractHandler {
client.setMaxListeners(data.guilds.length + 10);
client.once('ready', () => {
- client.syncGuilds();
client.setMaxListeners(10);
client.clearTimeout(t);
});
diff --git a/src/client/websocket/packets/handlers/RelationshipAdd.js b/src/client/websocket/packets/handlers/RelationshipAdd.js
deleted file mode 100644
index f416ff1d6..000000000
--- a/src/client/websocket/packets/handlers/RelationshipAdd.js
+++ /dev/null
@@ -1,19 +0,0 @@
-const AbstractHandler = require('./AbstractHandler');
-
-class RelationshipAddHandler extends AbstractHandler {
- handle(packet) {
- const client = this.packetManager.client;
- const data = packet.d;
- if (data.type === 1) {
- client.users.fetch(data.id).then(user => {
- client.user.friends.set(user.id, user);
- });
- } else if (data.type === 2) {
- client.users.fetch(data.id).then(user => {
- client.user.blocked.set(user.id, user);
- });
- }
- }
-}
-
-module.exports = RelationshipAddHandler;
diff --git a/src/client/websocket/packets/handlers/RelationshipRemove.js b/src/client/websocket/packets/handlers/RelationshipRemove.js
deleted file mode 100644
index b57326ad6..000000000
--- a/src/client/websocket/packets/handlers/RelationshipRemove.js
+++ /dev/null
@@ -1,19 +0,0 @@
-const AbstractHandler = require('./AbstractHandler');
-
-class RelationshipRemoveHandler extends AbstractHandler {
- handle(packet) {
- const client = this.packetManager.client;
- const data = packet.d;
- if (data.type === 2) {
- if (client.user.blocked.has(data.id)) {
- client.user.blocked.delete(data.id);
- }
- } else if (data.type === 1) {
- if (client.user.friends.has(data.id)) {
- client.user.friends.delete(data.id);
- }
- }
- }
-}
-
-module.exports = RelationshipRemoveHandler;
diff --git a/src/client/websocket/packets/handlers/UserGuildSettingsUpdate.js b/src/client/websocket/packets/handlers/UserGuildSettingsUpdate.js
deleted file mode 100644
index 6d92e76bb..000000000
--- a/src/client/websocket/packets/handlers/UserGuildSettingsUpdate.js
+++ /dev/null
@@ -1,21 +0,0 @@
-const AbstractHandler = require('./AbstractHandler');
-const { Events } = require('../../../../util/Constants');
-const ClientUserGuildSettings = require('../../../../structures/ClientUserGuildSettings');
-
-class UserGuildSettingsUpdateHandler extends AbstractHandler {
- handle(packet) {
- const client = this.packetManager.client;
- const settings = client.user.guildSettings.get(packet.d.guild_id);
- if (settings) settings.patch(packet.d);
- else client.user.guildSettings.set(packet.d.guild_id, new ClientUserGuildSettings(this.client, packet.d));
- client.emit(Events.USER_GUILD_SETTINGS_UPDATE, client.user.guildSettings.get(packet.d.guild_id));
- }
-}
-
-/**
- * Emitted whenever the client user's settings update.
- * @event Client#clientUserGuildSettingsUpdate
- * @param {ClientUserGuildSettings} clientUserGuildSettings The new client user guild settings
- */
-
-module.exports = UserGuildSettingsUpdateHandler;
diff --git a/src/client/websocket/packets/handlers/UserNoteUpdate.js b/src/client/websocket/packets/handlers/UserNoteUpdate.js
deleted file mode 100644
index 1e4777a39..000000000
--- a/src/client/websocket/packets/handlers/UserNoteUpdate.js
+++ /dev/null
@@ -1,12 +0,0 @@
-const AbstractHandler = require('./AbstractHandler');
-
-class UserNoteUpdateHandler extends AbstractHandler {
- handle(packet) {
- const client = this.packetManager.client;
- const data = packet.d;
-
- client.actions.UserNoteUpdate.handle(data);
- }
-}
-
-module.exports = UserNoteUpdateHandler;
diff --git a/src/client/websocket/packets/handlers/UserSettingsUpdate.js b/src/client/websocket/packets/handlers/UserSettingsUpdate.js
deleted file mode 100644
index ad322dca1..000000000
--- a/src/client/websocket/packets/handlers/UserSettingsUpdate.js
+++ /dev/null
@@ -1,18 +0,0 @@
-const AbstractHandler = require('./AbstractHandler');
-const { Events } = require('../../../../util/Constants');
-
-class UserSettingsUpdateHandler extends AbstractHandler {
- handle(packet) {
- const client = this.packetManager.client;
- client.user.settings.patch(packet.d);
- client.emit(Events.USER_SETTINGS_UPDATE, client.user.settings);
- }
-}
-
-/**
- * Emitted whenever the client user's settings update.
- * @event Client#clientUserSettingsUpdate
- * @param {ClientUserSettings} clientUserSettings The new client user settings
- */
-
-module.exports = UserSettingsUpdateHandler;
diff --git a/src/errors/Messages.js b/src/errors/Messages.js
index 6905cbbc5..97f6af280 100644
--- a/src/errors/Messages.js
+++ b/src/errors/Messages.js
@@ -6,8 +6,6 @@ const Messages = {
TOKEN_INVALID: 'An invalid token was provided.',
TOKEN_MISSING: 'Request to use token, but token was unavailable to the client.',
- FEATURE_USER_ONLY: 'Only user accounts are able to make use of this feature.',
-
WS_CONNECTION_TIMEOUT: 'The connection to the gateway timed out.',
WS_CONNECTION_EXISTS: 'There is already an existing WebSocket connection.',
WS_NOT_OPEN: (data = 'data') => `Websocket not open to send ${data}`,
diff --git a/src/index.js b/src/index.js
index b89d9ce56..aad9c9433 100644
--- a/src/index.js
+++ b/src/index.js
@@ -56,9 +56,6 @@ module.exports = {
// This is a getter so that it properly extends any custom User class
return require('./structures/ClientUser');
},
- ClientUserChannelOverride: require('./structures/ClientUserChannelOverride'),
- ClientUserGuildSettings: require('./structures/ClientUserGuildSettings'),
- ClientUserSettings: require('./structures/ClientUserSettings'),
Collector: require('./structures/interfaces/Collector'),
DMChannel: require('./structures/DMChannel'),
Emoji: require('./structures/Emoji'),
diff --git a/src/rest/RESTManager.js b/src/rest/RESTManager.js
index cf6227a8a..1d2f66e5e 100644
--- a/src/rest/RESTManager.js
+++ b/src/rest/RESTManager.js
@@ -25,7 +25,7 @@ class RESTManager {
getAuth() {
const token = this.client.token || this.client.accessToken;
- const prefixed = !!this.client.application || (this.client.user && this.client.user.bot);
+ const prefixed = !!this.client.application || this.client.user;
if (token && prefixed) return `${this.tokenPrefix} ${token}`;
else if (token) return token;
throw new Error('TOKEN_MISSING');
diff --git a/src/stores/GuildStore.js b/src/stores/GuildStore.js
index c42bf5e49..0cf9a1157 100644
--- a/src/stores/GuildStore.js
+++ b/src/stores/GuildStore.js
@@ -39,7 +39,7 @@ class GuildStore extends DataStore {
/**
* Creates a guild.
- * This is only available to bots in less than 10 guilds and user accounts.
+ * This is only available to bots in fewer than 10 guilds.
* @param {string} name The name of the guild
* @param {Object} [options] Options for the creating
* @param {string} [options.region] The region for the server, defaults to the closest one available
diff --git a/src/stores/MessageStore.js b/src/stores/MessageStore.js
index 07b85ea87..2d7049792 100644
--- a/src/stores/MessageStore.js
+++ b/src/stores/MessageStore.js
@@ -1,7 +1,6 @@
const DataStore = require('./DataStore');
const Collection = require('../util/Collection');
const Message = require('../structures/Message');
-const { Error } = require('../errors');
/**
* Stores messages for text-based channels.
@@ -80,12 +79,6 @@ class MessageStore extends DataStore {
}
async _fetchId(messageID) {
- if (!this.client.user.bot) {
- const messages = await this._fetchMany({ limit: 1, around: messageID });
- const msg = messages.get(messageID);
- if (!msg) throw new Error('MESSAGE_MISSING');
- return msg;
- }
const data = await this.client.api.channels[this.channel.id].messages[messageID].get();
return this.add(data);
}
diff --git a/src/stores/UserStore.js b/src/stores/UserStore.js
index 48e988405..d700877c5 100644
--- a/src/stores/UserStore.js
+++ b/src/stores/UserStore.js
@@ -45,7 +45,6 @@ class UserStore extends DataStore {
/**
* Obtains a user from Discord, or the user cache if it's already available.
- * This is only available when using a bot account.
* @param {Snowflake} id ID of the user
* @param {boolean} [cache=true] Whether to cache the new user object if it isn't already
* @returns {Promise}
diff --git a/src/structures/ClientApplication.js b/src/structures/ClientApplication.js
index b884dfd11..59dc82671 100644
--- a/src/structures/ClientApplication.js
+++ b/src/structures/ClientApplication.js
@@ -170,26 +170,6 @@ class ClientApplication extends Base {
} });
}
- /**
- * Resets the app's secret.
- * This is only available when using a user account.
- * @returns {Promise}
- */
- resetSecret() {
- return this.client.api.oauth2.applications[this.id].reset.post()
- .then(app => new ClientApplication(this.client, app));
- }
-
- /**
- * Resets the app's bot token.
- * This is only available when using a user account.
- * @returns {Promise}
- */
- resetToken() {
- return this.client.api.oauth2.applications[this.id].bot.reset.post()
- .then(app => new ClientApplication(this.client, Object.assign({}, this, { bot: app })));
- }
-
/**
* When concatenated with a string, this automatically returns the application's name instead of the
* ClientApplication object.
diff --git a/src/structures/ClientUser.js b/src/structures/ClientUser.js
index cce9957ad..31d966e6d 100644
--- a/src/structures/ClientUser.js
+++ b/src/structures/ClientUser.js
@@ -1,10 +1,5 @@
const Structures = require('../util/Structures');
-const Collection = require('../util/Collection');
-const ClientUserSettings = require('./ClientUserSettings');
-const ClientUserGuildSettings = require('./ClientUserGuildSettings');
-const Util = require('../util/Util');
const DataResolver = require('../util/DataResolver');
-const Guild = require('./Guild');
/**
* Represents the logged in client's Discord user.
@@ -20,75 +15,14 @@ class ClientUser extends Structures.get('User') {
*/
this.verified = data.verified;
- /**
- * The email of this account
- * This is only filled when using a user account.
- * @type {?string}
- */
- this.email = data.email;
this._typing = new Map();
/**
- * A Collection of friends for the logged in user
- * This is only filled when using a user account.
- * @type {Collection}
- */
- this.friends = new Collection();
-
- /**
- * A Collection of blocked users for the logged in user
- * This is only filled when using a user account.
- * @type {Collection}
- */
- this.blocked = new Collection();
-
- /**
- * A Collection of notes for the logged in user
- * This is only filled when using a user account.
- * @type {Collection}
- */
- this.notes = new Collection();
-
- /**
- * If the user has Discord premium (nitro)
- * This is only filled when using a user account.
- * @type {?boolean}
- */
- this.premium = typeof data.premium === 'boolean' ? data.premium : null;
-
- /**
- * If the user has MFA enabled on their account
- * This is only filled when using a user account.
+ * If the bot's {@link ClientApplication#owner Owner} has MFA enabled on their account
* @type {?boolean}
*/
this.mfaEnabled = typeof data.mfa_enabled === 'boolean' ? data.mfa_enabled : null;
- /**
- * If the user has ever used a mobile device on Discord
- * This is only filled when using a user account.
- * @type {?boolean}
- */
- this.mobile = typeof data.mobile === 'boolean' ? data.mobile : null;
-
- /**
- * Various settings for this user
- * This is only filled when using a user account.
- * @type {?ClientUserSettings}
- */
- this.settings = data.user_settings ? new ClientUserSettings(this, data.user_settings) : null;
-
- /**
- * All of the user's guild settings
- * This is only filled when using a user account.
- * @type {Collection}
- */
- this.guildSettings = new Collection();
- if (data.user_guild_settings) {
- for (const settings of data.user_guild_settings) {
- this.guildSettings.set(settings.guild_id, new ClientUserGuildSettings(this.client, settings));
- }
- }
-
if (data.token) this.client.token = data.token;
}
@@ -101,15 +35,7 @@ class ClientUser extends Structures.get('User') {
return this.client.presences.clientPresence;
}
- edit(data, passcode) {
- if (!this.bot) {
- if (typeof passcode !== 'object') {
- data.password = passcode;
- } else {
- data.code = passcode.mfaCode;
- data.password = passcode.password;
- }
- }
+ edit(data) {
return this.client.api.users('@me').patch({ data })
.then(newData => {
this.client.token = newData.token;
@@ -122,7 +48,6 @@ class ClientUser extends Structures.get('User') {
* Changing usernames in Discord is heavily rate limited, with only 2 requests
* every hour. Use this sparingly!
* @param {string} username The new username
- * @param {string} [password] Current password (only for user accounts)
* @returns {Promise}
* @example
* // Set username
@@ -130,43 +55,8 @@ class ClientUser extends Structures.get('User') {
* .then(user => console.log(`My new username is ${user.username}`))
* .catch(console.error);
*/
- setUsername(username, password) {
- return this.edit({ username }, password);
- }
-
- /**
- * Changes the email for the client user's account.
- * This is only available when using a user account.
- * @param {string} email New email to change to
- * @param {string} password Current password
- * @returns {Promise}
- * @example
- * // Set email
- * client.user.setEmail('bob@gmail.com', 'some amazing password 123')
- * .then(user => console.log(`My new email is ${user.email}`))
- * .catch(console.error);
- */
- setEmail(email, password) {
- return this.edit({ email }, password);
- }
-
- /**
- * Changes the password for the client user's account.
- * This is only available when using a user account.
- * @param {string} newPassword New password to change to
- * @param {Object|string} options Object containing an MFA code, password or both.
- * Can be just a string for the password.
- * @param {string} [options.oldPassword] Current password
- * @param {string} [options.mfaCode] Timed MFA Code
- * @returns {Promise}
- * @example
- * // Set password
- * client.user.setPassword('some new amazing password 456', 'some amazing password 123')
- * .then(user => console.log('New password set!'))
- * .catch(console.error);
- */
- setPassword(newPassword, options) {
- return this.edit({ new_password: newPassword }, { password: options.oldPassword, mfaCode: options.mfaCode });
+ setUsername(username) {
+ return this.edit({ username });
}
/**
@@ -262,36 +152,6 @@ class ClientUser extends Structures.get('User') {
return this.setPresence({ afk });
}
- /**
- * Fetches messages that mentioned the client's user.
- * This is only available when using a user account.
- * @param {Object} [options={}] Options for the fetch
- * @param {number} [options.limit=25] Maximum number of mentions to retrieve
- * @param {boolean} [options.roles=true] Whether to include role mentions
- * @param {boolean} [options.everyone=true] Whether to include everyone/here mentions
- * @param {GuildResolvable} [options.guild] Limit the search to a specific guild
- * @returns {Promise}
- * @example
- * // Fetch mentions
- * client.user.fetchMentions()
- * .then(console.log)
- * .catch(console.error);
- * @example
- * // Fetch mentions from a guild
- * client.user.fetchMentions({
- * guild: '222078108977594368'
- * })
- * .then(console.log)
- * .catch(console.error);
- */
- fetchMentions(options = {}) {
- if (options.guild instanceof Guild) options.guild = options.guild.id;
- Util.mergeDefault({ limit: 25, roles: true, everyone: true, guild: null }, options);
-
- return this.client.api.users('@me').mentions.get({ query: options })
- .then(data => data.map(m => this.client.channels.get(m.channel_id).messages.add(m, false)));
- }
-
/**
* An object containing either a user or access token, and an optional nickname.
* @typedef {Object} GroupDMRecipientOptions
@@ -327,16 +187,6 @@ class ClientUser extends Structures.get('User') {
return this.client.api.users('@me').channels.post({ data })
.then(res => this.client.channels.add(res));
}
-
- toJSON() {
- return super.toJSON({
- friends: false,
- blocked: false,
- notes: false,
- settings: false,
- guildSettings: false,
- });
- }
}
module.exports = ClientUser;
diff --git a/src/structures/ClientUserChannelOverride.js b/src/structures/ClientUserChannelOverride.js
deleted file mode 100644
index 680b95518..000000000
--- a/src/structures/ClientUserChannelOverride.js
+++ /dev/null
@@ -1,28 +0,0 @@
-const { UserChannelOverrideMap } = require('../util/Constants');
-
-/**
- * A wrapper around the ClientUser's channel overrides.
- */
-class ClientUserChannelOverride {
- constructor(data) {
- this.patch(data);
- }
-
- /**
- * Patch the data contained in this class with new partial data.
- * @param {Object} data Data to patch this with
- * @private
- */
- patch(data) {
- for (const [key, value] of Object.entries(UserChannelOverrideMap)) {
- if (!data.hasOwnProperty(key)) continue;
- if (typeof value === 'function') {
- this[value.name] = value(data[key]);
- } else {
- this[value] = data[key];
- }
- }
- }
-}
-
-module.exports = ClientUserChannelOverride;
diff --git a/src/structures/ClientUserGuildSettings.js b/src/structures/ClientUserGuildSettings.js
deleted file mode 100644
index ef1ba9a57..000000000
--- a/src/structures/ClientUserGuildSettings.js
+++ /dev/null
@@ -1,60 +0,0 @@
-const { UserGuildSettingsMap } = require('../util/Constants');
-const Collection = require('../util/Collection');
-const ClientUserChannelOverride = require('./ClientUserChannelOverride');
-
-/**
- * A wrapper around the ClientUser's guild settings.
- */
-class ClientUserGuildSettings {
- constructor(client, data) {
- /**
- * The client that created the instance of the ClientUserGuildSettings
- * @name ClientUserGuildSettings#client
- * @type {Client}
- * @readonly
- */
- Object.defineProperty(this, 'client', { value: client });
- /**
- * The ID of the guild these settings are for
- * @type {Snowflake}
- */
- this.guildID = data.guild_id;
- this.channelOverrides = new Collection();
- this.patch(data);
- }
-
- /**
- * Patch the data contained in this class with new partial data.
- * @param {Object} data Data to patch this with
- * @private
- */
- patch(data) {
- for (const [key, value] of Object.entries(UserGuildSettingsMap)) {
- if (!data.hasOwnProperty(key)) continue;
- if (key === 'channel_overrides') {
- for (const channel of data[key]) {
- const override = this.channelOverrides.get(channel.channel_id);
- if (override) override.patch(channel);
- else this.channelOverrides.set(channel.channel_id, new ClientUserChannelOverride(channel));
- }
- } else if (typeof value === 'function') {
- this[value.name] = value(data[key]);
- } else {
- this[value] = data[key];
- }
- }
- }
-
- /**
- * Update a specific property of the guild settings.
- * @param {string} name Name of property
- * @param {*} value Value to patch
- * @returns {Promise