UNPKG

seyfert

Version:

The most advanced framework for discord bots

101 lines (100 loc) 4.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ThreadShorter = void 0; const __1 = require("../.."); const structures_1 = require("../../structures"); const types_1 = require("../../types"); const base_1 = require("./base"); class ThreadShorter extends base_1.BaseShorter { /** * Creates a new thread in the channel (only guild based channels). * @param channelId The ID of the parent channel. * @param reason The reason for unpinning the message. * @returns A promise that resolves when the thread is succesfully created. */ async create(channelId, body, reason) { let thread; if ('message' in body || 'files' in body) { const { message, files, ...rest } = body; const parsedFiles = files ? await (0, __1.resolveFiles)(files) : undefined; const transformedBody = structures_1.MessagesMethods.transformMessageBody(message ?? {}, parsedFiles, this.client); thread = await this.client.proxy.channels(channelId).threads.post({ body: { ...rest, message: transformedBody, }, files: parsedFiles, reason, }); } else thread = await this.client.proxy.channels(channelId).threads.post({ body, reason }); await this.client.cache.channels?.setIfNI(__1.CacheFrom.Rest, 'Guilds', thread.id, thread.guild_id, thread); return (0, structures_1.channelFrom)(thread, this.client); } async fromMessage(channelId, messageId, options) { const { reason, ...body } = options; const thread = await this.client.proxy.channels(channelId).messages(messageId).threads.post({ body, reason }); await this.client.cache.channels?.setIfNI(__1.CacheFrom.Rest, 'Guilds', thread.id, thread.guild_id, thread); return await (0, structures_1.channelFrom)(thread, this.client); } join(threadId) { return this.client.proxy.channels(threadId)['thread-members']('@me').put(); } leave(threadId) { return this.client.proxy.channels(threadId)['thread-members']('@me').delete(); } async lock(threadId, locked = true, reason) { return this.edit(threadId, { locked }, reason); } async edit(threadId, body, reason) { return (await this.client.channels.edit(threadId, body, { reason })); } removeMember(threadId, memberId) { return this.client.proxy.channels(threadId)['thread-members'](memberId).delete(); } fetchMember(threadId, memberId, with_member) { return this.client.proxy.channels(threadId)['thread-members'](memberId).get({ query: { with_member, }, }); } addMember(threadId, memberId) { return this.client.proxy.channels(threadId)['thread-members'](memberId).put(); } listMembers(threadId, query) { return this.client.proxy.channels(threadId)['thread-members'].get({ query }); } async listArchived(channelId, type, query) { const data = await this.client.proxy.channels(channelId).threads.archived[type].get({ query }); return { threads: data.threads.map(thread => (0, structures_1.channelFrom)(thread, this.client)), members: data.members, hasMore: data.has_more, }; } async listGuildActive(guildId, force = false) { if (!force) { const cached = await this.client.cache.channels?.valuesRaw(guildId); if (cached) return cached .filter(x => [types_1.ChannelType.PublicThread, types_1.ChannelType.PrivateThread, types_1.ChannelType.AnnouncementThread].includes(x.type)) .map(x => (0, structures_1.channelFrom)(x, this.client)); } const data = await this.client.proxy.guilds(guildId).threads.active.get(); return Promise.all(data.threads.map(async (thread) => { await this.client.cache.channels?.setIfNI(__1.CacheFrom.Rest, 'Guilds', thread.id, guildId, thread); return (0, structures_1.channelFrom)(thread, this.client); })); } async listJoinedArchivedPrivate(channelId, query) { const data = await this.client.proxy.channels(channelId).users('@me').threads.archived.private.get({ query }); return { threads: data.threads.map(thread => (0, structures_1.channelFrom)(thread, this.client)), members: data.members, hasMore: data.has_more, }; } } exports.ThreadShorter = ThreadShorter;