summaryrefslogtreecommitdiff
path: root/node_modules/discord.js/src/client/WebhookClient.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/client/WebhookClient.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/client/WebhookClient.js')
-rw-r--r--node_modules/discord.js/src/client/WebhookClient.js118
1 files changed, 118 insertions, 0 deletions
diff --git a/node_modules/discord.js/src/client/WebhookClient.js b/node_modules/discord.js/src/client/WebhookClient.js
new file mode 100644
index 0000000..99291b5
--- /dev/null
+++ b/node_modules/discord.js/src/client/WebhookClient.js
@@ -0,0 +1,118 @@
+const Webhook = require('../structures/Webhook');
+const RESTManager = require('./rest/RESTManager');
+const ClientDataResolver = require('./ClientDataResolver');
+const Constants = require('../util/Constants');
+const Util = require('../util/Util');
+
+/**
+ * The webhook client.
+ * @extends {Webhook}
+ */
+class WebhookClient extends Webhook {
+ /**
+ * @param {Snowflake} id ID of the webhook
+ * @param {string} token Token of the webhook
+ * @param {ClientOptions} [options] Options for the client
+ * @example
+ * // Create a new webhook and send a message
+ * const hook = new Discord.WebhookClient('1234', 'abcdef');
+ * hook.sendMessage('This will send a message').catch(console.error);
+ */
+ constructor(id, token, options) {
+ super(null, id, token);
+
+ /**
+ * The options the client was instantiated with
+ * @type {ClientOptions}
+ */
+ this.options = Util.mergeDefault(Constants.DefaultOptions, options);
+
+ /**
+ * The REST manager of the client
+ * @type {RESTManager}
+ * @private
+ */
+ this.rest = new RESTManager(this);
+
+ /**
+ * The data resolver of the client
+ * @type {ClientDataResolver}
+ * @private
+ */
+ this.resolver = new ClientDataResolver(this);
+
+ /**
+ * Timeouts set by {@link WebhookClient#setTimeout} that are still active
+ * @type {Set<Timeout>}
+ * @private
+ */
+ this._timeouts = new Set();
+
+ /**
+ * Intervals set by {@link WebhookClient#setInterval} that are still active
+ * @type {Set<Timeout>}
+ * @private
+ */
+ this._intervals = new Set();
+ }
+
+ /**
+ * Sets a timeout that will be automatically cancelled if the client is destroyed.
+ * @param {Function} fn Function to execute
+ * @param {number} delay Time to wait before executing (in milliseconds)
+ * @param {...*} args Arguments for the function
+ * @returns {Timeout}
+ */
+ setTimeout(fn, delay, ...args) {
+ const timeout = setTimeout(() => {
+ fn(...args);
+ this._timeouts.delete(timeout);
+ }, delay);
+ this._timeouts.add(timeout);
+ return timeout;
+ }
+
+ /**
+ * Clears a timeout.
+ * @param {Timeout} timeout Timeout to cancel
+ */
+ clearTimeout(timeout) {
+ clearTimeout(timeout);
+ this._timeouts.delete(timeout);
+ }
+
+ /**
+ * Sets an interval that will be automatically cancelled if the client is destroyed.
+ * @param {Function} fn Function to execute
+ * @param {number} delay Time to wait before executing (in milliseconds)
+ * @param {...*} args Arguments for the function
+ * @returns {Timeout}
+ */
+ setInterval(fn, delay, ...args) {
+ const interval = setInterval(fn, delay, ...args);
+ this._intervals.add(interval);
+ return interval;
+ }
+
+ /**
+ * Clears an interval.
+ * @param {Timeout} interval Interval to cancel
+ */
+ clearInterval(interval) {
+ clearInterval(interval);
+ this._intervals.delete(interval);
+ }
+
+
+ /**
+ * Destroys the client.
+ */
+ destroy() {
+ for (const t of this._timeouts) clearTimeout(t);
+ for (const i of this._intervals) clearInterval(i);
+ this._timeouts.clear();
+ this._intervals.clear();
+ }
+}
+
+module.exports = WebhookClient;