UNPKG

oceanic.js

Version:

A NodeJS library for interfacing with Discord.

265 lines 22.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const Routes = tslib_1.__importStar(require("../util/Routes")); const Webhook_1 = tslib_1.__importDefault(require("../structures/Webhook")); const Message_1 = tslib_1.__importDefault(require("../structures/Message")); const QueryBuilder_1 = tslib_1.__importDefault(require("../util/QueryBuilder")); /** Various methods for interacting with webhooks. Located at {@link Client#rest | Client#rest}{@link RESTManager#webhooks | .webhooks}. */ class Webhooks { _manager; constructor(manager) { this._manager = manager; } /** * Create a channel webhook. * @param channelID The ID of the channel to create the webhook in. * @param options The options to create the webhook with. * @caching This method **does not** cache its result. */ async create(channelID, options) { options = this._manager.client.util._freeze(options); let avatar; if (options.avatar) { avatar = this._manager.client.util._convertImage(options.avatar, "avatar"); } return this._manager.authRequest({ method: "POST", path: Routes.CHANNEL_WEBHOOKS(channelID), json: { avatar, name: options.name }, reason: options.reason }).then(data => new Webhook_1.default(data, this._manager.client)); } /** * Delete a webhook. * @param webhookID The ID of the webhook. * @param reason The reason for deleting the webhook. * @caching This method **does not** cache its result. */ async delete(webhookID, reason) { await this._manager.authRequest({ method: "DELETE", path: Routes.WEBHOOK(webhookID), reason }); } /** * Delete a webhook message. * @param webhookID The ID of the webhook. * @param token The token of the webhook. * @param messageID The ID of the message. * @param options The options for deleting the message. * @caching This method **does not** cache its result. */ async deleteMessage(webhookID, token, messageID, options) { const query = new QueryBuilder_1.default(); query.setIfPresent("thread_id", options?.threadID); await this._manager.authRequest({ method: "DELETE", path: Routes.WEBHOOK_MESSAGE(webhookID, token, messageID) }); } /** * Delete a webhook via its token. * @param webhookID The ID of the webhook. * @param token The token of the webhook. * @caching This method **does not** cache its result. */ async deleteToken(webhookID, token) { await this._manager.authRequest({ method: "DELETE", path: Routes.WEBHOOK(webhookID, token) }); } /** * Edit a webhook. * @param webhookID The ID of the webhook. * @param options The options for editing the webhook. * @caching This method **does not** cache its result. */ async edit(webhookID, options) { options = this._manager.client.util._freeze(options); let avatar; if (options.avatar) { avatar = this._manager.client.util._convertImage(options.avatar, "avatar"); } return this._manager.authRequest({ method: "PATCH", path: Routes.WEBHOOK(webhookID), json: { avatar, channel_id: options.channelID, name: options.name }, reason: options.reason }).then(data => new Webhook_1.default(data, this._manager.client)); } /** * Edit a webhook message. * @param webhookID The ID of the webhook. * @param token The token of the webhook. * @param messageID The ID of the message to edit. * @param options The options for editing the message. * @caching This method **does not** cache its result. */ async editMessage(webhookID, token, messageID, options) { options = this._manager.client.util._freeze(options); const query = new QueryBuilder_1.default(); query.setIfPresent("thread_id", options?.threadID); return this._manager.authRequest({ method: "PATCH", path: Routes.WEBHOOK_MESSAGE(webhookID, token, messageID), json: { allowed_mentions: this._manager.client.util.formatAllowedMentions(options.allowedMentions), attachments: options.attachments, components: options.components ? this._manager.client.util.componentsToRaw(options.components) : undefined, content: options.content, embeds: options.embeds ? this._manager.client.util.embedsToRaw(options.embeds) : undefined, flags: options.flags, poll: options.poll ? { allow_multiselect: options.poll.allowMultiselect, answers: options.poll.answers.map(a => ({ poll_media: a.pollMedia })), duration: options.poll.duration, layout_type: options.poll.layoutType, question: options.poll.question } : undefined }, query, files: options.files ?? undefined }).then(data => new Message_1.default(data, this._manager.client)); } /** * Edit a webhook via its token. * @param webhookID The ID of the webhook. * @param options The options for editing the webhook. * @caching This method **does not** cache its result. */ async editToken(webhookID, token, options) { options = this._manager.client.util._freeze(options); let avatar; if (options.avatar) { avatar = this._manager.client.util._convertImage(options.avatar, "avatar"); } return this._manager.authRequest({ method: "PATCH", path: Routes.WEBHOOK(webhookID, token), json: { avatar, name: options.name } }).then(data => new Webhook_1.default(data, this._manager.client)); } async execute(webhookID, token, options) { options = this._manager.client.util._freeze(options); const query = new QueryBuilder_1.default(); query.setIfPresent("wait", options.wait); query.setIfPresent("with_components", options.withComponents); query.setIfPresent("thread_id", options.threadID); return this._manager.authRequest({ method: "POST", path: Routes.WEBHOOK(webhookID, token), query, json: { allowed_mentions: this._manager.client.util.formatAllowedMentions(options.allowedMentions), attachments: options.attachments, avatar_url: options.avatarURL, components: options.components ? this._manager.client.util.componentsToRaw(options.components) : undefined, content: options.content, embeds: options.embeds ? this._manager.client.util.embedsToRaw(options.embeds) : undefined, flags: options.flags, poll: options.poll ? { allow_multiselect: options.poll.allowMultiselect, answers: options.poll.answers.map(a => ({ poll_media: a.pollMedia })), duration: options.poll.duration, layout_type: options.poll.layoutType, question: options.poll.question } : undefined, thread_name: options.threadName, tts: options.tts, username: options.username }, files: options.files }).then(res => res === null ? undefined : new Message_1.default(res, this._manager.client)); } async executeGithub(webhookID, token, options) { options = this._manager.client.util._freeze(options); const query = new QueryBuilder_1.default(); query.setIfPresent("wait", options?.wait); return this._manager.authRequest({ method: "POST", path: Routes.WEBHOOK_PLATFORM(webhookID, token, "github"), query, json: options }).then(res => res === null ? undefined : new Message_1.default(res, this._manager.client)); } async executeSlack(webhookID, token, options) { options = this._manager.client.util._freeze(options); const query = new QueryBuilder_1.default(); query.setIfPresent("wait", options?.wait); return this._manager.authRequest({ method: "POST", path: Routes.WEBHOOK_PLATFORM(webhookID, token, "slack"), query, json: options }).then(res => res === null ? undefined : new Message_1.default(res, this._manager.client)); } /** * Get a webhook by ID (and optionally token). * @param webhookID The ID of the webhook. * @param token The token of the webhook. * @caching This method **does not** cache its result. */ async get(webhookID, token) { return this._manager.authRequest({ method: "GET", path: Routes.WEBHOOK(webhookID, token) }).then(data => new Webhook_1.default(data, this._manager.client)); } /** * Get the webhooks in the specified channel. * @param channelID The ID of the channel to get the webhooks of. * @caching This method **does not** cache its result. */ async getForChannel(channelID) { return this._manager.authRequest({ method: "GET", path: Routes.CHANNEL_WEBHOOKS(channelID) }).then(data => data.map(d => new Webhook_1.default(d, this._manager.client))); } /** * Get the webhooks in the specified guild. * @param guildID The ID of the guild to get the webhooks of. * @caching This method **does not** cache its result. */ async getForGuild(guildID) { return this._manager.authRequest({ method: "GET", path: Routes.GUILD_WEBHOOKS(guildID) }).then(data => data.map(d => new Webhook_1.default(d, this._manager.client))); } /** * Get a webhook message. * @param webhookID The ID of the webhook. * @param token The token of the webhook. * @param messageID The ID of the message. * @param threadID The ID of the thread the message is in. * @caching This method **does not** cache its result. */ async getMessage(webhookID, token, messageID, threadID) { const query = new QueryBuilder_1.default(); query.setIfPresent("thread_id", threadID); return this._manager.authRequest({ method: "GET", path: Routes.WEBHOOK_MESSAGE(webhookID, token, messageID) }).then(data => new Message_1.default(data, this._manager.client)); } } exports.default = Webhooks; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2ViaG9va3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvcm91dGVzL1dlYmhvb2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVlBLCtEQUF5QztBQUN6Qyw0RUFBNEM7QUFDNUMsNEVBQTRDO0FBRzVDLGdGQUFnRDtBQUVoRCwySUFBMkk7QUFDM0ksTUFBcUIsUUFBUTtJQUNqQixRQUFRLENBQWM7SUFDOUIsWUFBWSxPQUFvQjtRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQWlCLEVBQUUsT0FBNkI7UUFDekQsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsSUFBSSxNQUEwQixDQUFDO1FBQy9CLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQWE7WUFDekMsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUksTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztZQUMxQyxJQUFJLEVBQUk7Z0JBQ0osTUFBTTtnQkFDTixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7YUFDckI7WUFDRCxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07U0FDekIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksaUJBQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxD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