UNPKG

@chinchillaenterprises/mcp-discord

Version:

Modular Discord MCP server with 45+ tools for comprehensive server management, featuring clean architecture and discord_ prefixed tools

65 lines 5.17 kB
import { ChannelType } from "discord.js"; export const toolDefinition = { name: "discord_create_thread", description: "Create a thread in a channel", inputSchema: { type: "object", properties: { channelId: { type: "string", description: "Channel ID or name to create thread in", }, name: { type: "string", description: "Name for the thread", }, type: { type: "string", enum: ["public", "private"], description: "Thread type (default: public)", }, autoArchiveDuration: { type: "number", enum: [60, 1440, 4320, 10080], description: "Auto-archive duration in minutes (60, 1440, 4320, 10080)", }, reason: { type: "string", description: "Reason for creating thread (optional)", }, }, required: ["channelId", "name"], }, }; export const handler = async (args, services) => { const { channelId, name, type, autoArchiveDuration, reason } = args; const client = await services.getActiveClient(); try { const resolvedChannelId = await services.resolveChannel(channelId); const channel = await client.channels.fetch(resolvedChannelId); if (!channel || channel.type !== ChannelType.GuildText) { throw new Error(`Channel ${channelId} is not a text channel`); } const textChannel = channel; const thread = await textChannel.threads.create({ name, type: type === "private" ? ChannelType.PrivateThread : ChannelType.PublicThread, autoArchiveDuration, reason, }); return { content: [ { type: "text", text: `Successfully created thread!\n\nName: ${thread.name}\nID: ${thread.id}\nType: ${type || 'public'}\nChannel: ${textChannel.name}\nAuto-archive: ${autoArchiveDuration ? `${autoArchiveDuration} minutes` : 'Default'}`, }, ], }; } catch (error) { console.error(`[CreateThread] Error creating thread:`, error); throw new Error(`Failed to create thread: ${error.message}`); } }; export { CreateThreadArgsSchema as schema } from "../../schemas/content.js"; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXRocmVhZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90b29scy9jb250ZW50L2NyZWF0ZS10aHJlYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLFdBQVcsRUFBZSxNQUFNLFlBQVksQ0FBQztBQUV0RCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQVM7SUFDbEMsSUFBSSxFQUFFLHVCQUF1QjtJQUM3QixXQUFXLEVBQUUsOEJBQThCO0lBQzNDLFdBQVcsRUFBRTtRQUNYLElBQUksRUFBRSxRQUFRO1FBQ2QsVUFBVSxFQUFFO1lBQ1YsU0FBUyxFQUFFO2dCQUNULElBQUksRUFBRSxRQUFRO2dCQUNkLFdBQVcsRUFBRSx3Q0FBd0M7YUFDdEQ7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLHFCQUFxQjthQUNuQztZQUNELElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsUUFBUTtnQkFDZCxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDO2dCQUMzQixXQUFXLEVBQUUsK0JBQStCO2FBQzdDO1lBQ0QsbUJBQW1CLEVBQUU7Z0JBQ25CLElBQUksRUFBRSxRQUFRO2dCQUNkLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQztnQkFDN0IsV0FBVyxFQUFFLDBEQUEwRDthQUN4RTtZQUNELE1BQU0sRUFBRTtnQkFDTixJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUsdUNBQXVDO2FBQ3JEO1NBQ0Y7UUFDRCxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDO0tBQ2hDO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsSUFBc0IsRUFBRSxRQUEwQixFQUFFLEVBQUU7SUFDbEYsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztJQUVwRSxNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUVoRCxJQUFJLENBQUM7UUFDSCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuRSxNQUFNLE9BQU8sR0FBRyxNQUFNLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFL0QsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsU0FBUyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxPQUFzQixDQUFDO1FBQzNDLE1BQU0sTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDOUMsSUFBSTtZQUNKLElBQUksRUFBRSxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsWUFBWTtZQUMvRSxtQkFBbUI7WUFDbkIsTUFBTTtTQUNQLENBQUMsQ0FBQztRQUVILE9BQU87WUFDTCxPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLE1BQU07b0JBQ1osSUFBSSxFQUFFLHlDQUF5QyxNQUFNLENBQUMsSUFBSSxTQUFTLE1BQU0sQ0FBQyxFQUFFLFdBQVcsSUFBSSxJQUFJLFFBQVEsY0FBYyxXQUFXLENBQUMsSUFBSSxtQkFBbUIsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFO2lCQUM3TjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUNBQXVDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUQsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE9BQU8sRUFBRSxzQkFBc0IsSUFBSSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQyJ9