summaryrefslogtreecommitdiff
path: root/node_modules/discord.js/src/structures/ClientUserSettings.js
diff options
context:
space:
mode:
author8cy <[email protected]>2020-04-03 02:37:42 -0700
committer8cy <[email protected]>2020-04-03 02:37:42 -0700
commit60867fb030bae582082340ead7dbc7efdc2f5398 (patch)
tree4c6a7356351be2e4914e15c4703172597c45656e /node_modules/discord.js/src/structures/ClientUserSettings.js
parentcommenting (diff)
downloads5nical-60867fb030bae582082340ead7dbc7efdc2f5398.tar.xz
s5nical-60867fb030bae582082340ead7dbc7efdc2f5398.zip
2020/04/03, 02:34, v1.2.0
Diffstat (limited to 'node_modules/discord.js/src/structures/ClientUserSettings.js')
-rw-r--r--node_modules/discord.js/src/structures/ClientUserSettings.js80
1 files changed, 80 insertions, 0 deletions
diff --git a/node_modules/discord.js/src/structures/ClientUserSettings.js b/node_modules/discord.js/src/structures/ClientUserSettings.js
new file mode 100644
index 0000000..6b18c03
--- /dev/null
+++ b/node_modules/discord.js/src/structures/ClientUserSettings.js
@@ -0,0 +1,80 @@
+const Constants = require('../util/Constants');
+const Util = require('../util/Util');
+
+/**
+ * A wrapper around the ClientUser's settings.
+ */
+class ClientUserSettings {
+ constructor(user, data) {
+ this.user = user;
+ this.patch(data);
+ }
+
+ /**
+ * Patch the data contained in this class with new partial data.
+ * @param {Object} data Data to patch this with
+ * @returns {void}
+ * @private
+ */
+ patch(data) {
+ for (const key of Object.keys(Constants.UserSettingsMap)) {
+ const value = Constants.UserSettingsMap[key];
+ if (!data.hasOwnProperty(key)) continue;
+ if (typeof value === 'function') {
+ this[value.name] = value(data[key]);
+ } else {
+ this[value] = data[key];
+ }
+ }
+ }
+
+ /**
+ * Update a specific property of of user settings.
+ * @param {string} name Name of property
+ * @param {*} value Value to patch
+ * @returns {Promise<Object>}
+ */
+ update(name, value) {
+ return this.user.client.rest.methods.patchUserSettings({ [name]: value });
+ }
+
+ /**
+ * Sets the position at which this guild will appear in the Discord client.
+ * @param {Guild} guild The guild to move
+ * @param {number} position Absolute or relative position
+ * @param {boolean} [relative=false] Whether to position relatively or absolutely
+ * @returns {Promise<Guild>}
+ */
+ setGuildPosition(guild, position, relative) {
+ const temp = Object.assign([], this.guildPositions);
+ Util.moveElementInArray(temp, guild.id, position, relative);
+ return this.update('guild_positions', temp).then(() => guild);
+ }
+
+ /**
+ * Add a guild to the list of restricted guilds.
+ * @param {Guild} guild The guild to add
+ * @returns {Promise<Guild>}
+ */
+ addRestrictedGuild(guild) {
+ const temp = Object.assign([], this.restrictedGuilds);
+ if (temp.includes(guild.id)) return Promise.reject(new Error('Guild is already restricted'));
+ temp.push(guild.id);
+ return this.update('restricted_guilds', temp).then(() => guild);
+ }
+
+ /**
+ * Remove a guild from the list of restricted guilds.
+ * @param {Guild} guild The guild to remove
+ * @returns {Promise<Guild>}
+ */
+ removeRestrictedGuild(guild) {
+ const temp = Object.assign([], this.restrictedGuilds);
+ const index = temp.indexOf(guild.id);
+ if (index < 0) return Promise.reject(new Error('Guild is not restricted'));
+ temp.splice(index, 1);
+ return this.update('restricted_guilds', temp).then(() => guild);
+ }
+}
+
+module.exports = ClientUserSettings;