summaryrefslogtreecommitdiff
path: root/node_modules/discord.js/src/util/Channels.js
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2023-09-02 19:12:47 -0400
committersowgro <tpoke.ferrari@gmail.com>2023-09-02 19:12:47 -0400
commite4450c8417624b71d779cb4f41692538f9165e10 (patch)
treeb70826542223ecdf8a7a259f61b0a1abb8a217d8 /node_modules/discord.js/src/util/Channels.js
downloadsowbot3-e4450c8417624b71d779cb4f41692538f9165e10.tar.gz
sowbot3-e4450c8417624b71d779cb4f41692538f9165e10.tar.bz2
sowbot3-e4450c8417624b71d779cb4f41692538f9165e10.zip
first commit
Diffstat (limited to 'node_modules/discord.js/src/util/Channels.js')
-rw-r--r--node_modules/discord.js/src/util/Channels.js150
1 files changed, 150 insertions, 0 deletions
diff --git a/node_modules/discord.js/src/util/Channels.js b/node_modules/discord.js/src/util/Channels.js
new file mode 100644
index 0000000..8d070bd
--- /dev/null
+++ b/node_modules/discord.js/src/util/Channels.js
@@ -0,0 +1,150 @@
+'use strict';
+
+const { lazy } = require('@discordjs/util');
+const { ChannelType } = require('discord-api-types/v10');
+
+const getCategoryChannel = lazy(() => require('../structures/CategoryChannel'));
+const getDMChannel = lazy(() => require('../structures/DMChannel'));
+const getNewsChannel = lazy(() => require('../structures/NewsChannel'));
+const getStageChannel = lazy(() => require('../structures/StageChannel'));
+const getTextChannel = lazy(() => require('../structures/TextChannel'));
+const getThreadChannel = lazy(() => require('../structures/ThreadChannel'));
+const getVoiceChannel = lazy(() => require('../structures/VoiceChannel'));
+const getDirectoryChannel = lazy(() => require('../structures/DirectoryChannel'));
+const getPartialGroupDMChannel = lazy(() => require('../structures/PartialGroupDMChannel'));
+const getForumChannel = lazy(() => require('../structures/ForumChannel'));
+
+/**
+ * Creates a discord.js channel from data received from the API.
+ * @param {Client} client The client
+ * @param {APIChannel} data The data of the channel to create
+ * @param {Guild} [guild] The guild where this channel belongs
+ * @param {Object} [extras] Extra information to supply for creating this channel
+ * @returns {BaseChannel} Any kind of channel.
+ * @ignore
+ */
+function createChannel(client, data, guild, { allowUnknownGuild } = {}) {
+ let channel;
+ if (!data.guild_id && !guild) {
+ if ((data.recipients && data.type !== ChannelType.GroupDM) || data.type === ChannelType.DM) {
+ channel = new (getDMChannel())(client, data);
+ } else if (data.type === ChannelType.GroupDM) {
+ channel = new (getPartialGroupDMChannel())(client, data);
+ }
+ } else {
+ guild ??= client.guilds.cache.get(data.guild_id);
+
+ if (guild || allowUnknownGuild) {
+ switch (data.type) {
+ case ChannelType.GuildText: {
+ channel = new (getTextChannel())(guild, data, client);
+ break;
+ }
+ case ChannelType.GuildVoice: {
+ channel = new (getVoiceChannel())(guild, data, client);
+ break;
+ }
+ case ChannelType.GuildCategory: {
+ channel = new (getCategoryChannel())(guild, data, client);
+ break;
+ }
+ case ChannelType.GuildAnnouncement: {
+ channel = new (getNewsChannel())(guild, data, client);
+ break;
+ }
+ case ChannelType.GuildStageVoice: {
+ channel = new (getStageChannel())(guild, data, client);
+ break;
+ }
+ case ChannelType.AnnouncementThread:
+ case ChannelType.PublicThread:
+ case ChannelType.PrivateThread: {
+ channel = new (getThreadChannel())(guild, data, client);
+ if (!allowUnknownGuild) channel.parent?.threads.cache.set(channel.id, channel);
+ break;
+ }
+ case ChannelType.GuildDirectory:
+ channel = new (getDirectoryChannel())(guild, data, client);
+ break;
+ case ChannelType.GuildForum:
+ channel = new (getForumChannel())(guild, data, client);
+ break;
+ }
+ if (channel && !allowUnknownGuild) guild.channels?.cache.set(channel.id, channel);
+ }
+ }
+ return channel;
+}
+
+/**
+ * Transforms an API guild forum tag to camel-cased guild forum tag.
+ * @param {APIGuildForumTag} tag The tag to transform
+ * @returns {GuildForumTag}
+ * @ignore
+ */
+function transformAPIGuildForumTag(tag) {
+ return {
+ id: tag.id,
+ name: tag.name,
+ moderated: tag.moderated,
+ emoji:
+ tag.emoji_id ?? tag.emoji_name
+ ? {
+ id: tag.emoji_id,
+ name: tag.emoji_name,
+ }
+ : null,
+ };
+}
+
+/**
+ * Transforms a camel-cased guild forum tag to an API guild forum tag.
+ * @param {GuildForumTag} tag The tag to transform
+ * @returns {APIGuildForumTag}
+ * @ignore
+ */
+function transformGuildForumTag(tag) {
+ return {
+ id: tag.id,
+ name: tag.name,
+ moderated: tag.moderated,
+ emoji_id: tag.emoji?.id ?? null,
+ emoji_name: tag.emoji?.name ?? null,
+ };
+}
+
+/**
+ * Transforms an API guild forum default reaction object to a
+ * camel-cased guild forum default reaction object.
+ * @param {APIGuildForumDefaultReactionEmoji} defaultReaction The default reaction to transform
+ * @returns {DefaultReactionEmoji}
+ * @ignore
+ */
+function transformAPIGuildDefaultReaction(defaultReaction) {
+ return {
+ id: defaultReaction.emoji_id,
+ name: defaultReaction.emoji_name,
+ };
+}
+
+/**
+ * Transforms a camel-cased guild forum default reaction object to an
+ * API guild forum default reaction object.
+ * @param {DefaultReactionEmoji} defaultReaction The default reaction to transform
+ * @returns {APIGuildForumDefaultReactionEmoji}
+ * @ignore
+ */
+function transformGuildDefaultReaction(defaultReaction) {
+ return {
+ emoji_id: defaultReaction.id,
+ emoji_name: defaultReaction.name,
+ };
+}
+
+module.exports = {
+ createChannel,
+ transformAPIGuildForumTag,
+ transformGuildForumTag,
+ transformAPIGuildDefaultReaction,
+ transformGuildDefaultReaction,
+};