@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
JavaScript
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