UNPKG

@chinchillaenterprises/mcp-discord

Version:

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

105 lines (103 loc) 8.31 kB
import { ChannelType } from "discord.js"; export const toolDefinition = { name: "discord_edit_channel", description: "Edit channel properties", inputSchema: { type: "object", properties: { channelId: { type: "string", description: "Channel ID or name to edit", }, name: { type: "string", description: "New channel name", }, topic: { type: "string", description: "New channel topic", }, position: { type: "number", description: "New channel position", }, nsfw: { type: "boolean", description: "Mark channel as NSFW", }, parent: { type: "string", description: "Category ID or name to move channel to", }, reason: { type: "string", description: "Reason for editing channel (optional)", }, }, required: ["channelId"], } }; export const handler = async (args, services) => { const { channelId, name, topic, position, nsfw, parent, reason } = args; const client = await services.getActiveClient(); const guild = await services.getGuild(); try { const resolvedChannelId = await services.resolveChannel(channelId); const channel = await client.channels.fetch(resolvedChannelId); if (!channel || !guild.channels.cache.has(channel.id)) { throw new Error(`Channel ${channelId} not found`); } const updates = {}; if (name) updates.name = name; if (topic !== undefined && channel.type === ChannelType.GuildText) updates.topic = topic; if (position !== undefined) updates.position = position; if (nsfw !== undefined && channel.type === ChannelType.GuildText) updates.nsfw = nsfw; if (parent) { const parentChannel = guild.channels.cache.find(ch => ch.name === parent || ch.id === parent); if (parentChannel && parentChannel.type === ChannelType.GuildCategory) { updates.parent = parentChannel.id; } else { throw new Error(`Category '${parent}' not found`); } } if (reason) { updates.reason = reason; } await channel.edit(updates); const changedProperties = []; if (name) changedProperties.push(`Name: ${name}`); if (topic !== undefined) changedProperties.push(`Topic: ${topic || '[removed]'}`); if (position !== undefined) changedProperties.push(`Position: ${position}`); if (nsfw !== undefined) changedProperties.push(`NSFW: ${nsfw ? 'Yes' : 'No'}`); if (parent) changedProperties.push(`Parent: ${parent}`); return { content: [ { type: "text", text: `✅ Successfully edited channel! **Channel:** ${channel.name} (${channel.id}) **Type:** ${channel.type === ChannelType.GuildText ? 'Text' : channel.type === ChannelType.GuildVoice ? 'Voice' : 'Other'} **Changed properties:** ${changedProperties.map(p => `• ${p}`).join('\n')} ${reason ? `\n**Reason:** ${reason}` : ''}`, }, ], }; } catch (error) { console.error(`[EditChannel] Error editing channel:`, error); throw new Error(`Failed to edit channel: ${error.message}`); } }; export { EditChannelArgsSchema as schema } from "../../schemas/server.js"; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1jaGFubmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xzL3NlcnZlci9lZGl0LWNoYW5uZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLFdBQVcsRUFBNkIsTUFBTSxZQUFZLENBQUM7QUFFcEUsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFTO0lBQ2xDLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsV0FBVyxFQUFFLHlCQUF5QjtJQUN0QyxXQUFXLEVBQUU7UUFDWCxJQUFJLEVBQUUsUUFBUTtRQUNkLFVBQVUsRUFBRTtZQUNWLFNBQVMsRUFBRTtnQkFDVCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUsNEJBQTRCO2FBQzFDO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxRQUFRO2dCQUNkLFdBQVcsRUFBRSxrQkFBa0I7YUFDaEM7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLG1CQUFtQjthQUNqQztZQUNELFFBQVEsRUFBRTtnQkFDUixJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUsc0JBQXNCO2FBQ3BDO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxTQUFTO2dCQUNmLFdBQVcsRUFBRSxzQkFBc0I7YUFDcEM7WUFDRCxNQUFNLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLHdDQUF3QzthQUN0RDtZQUNELE1BQU0sRUFBRTtnQkFDTixJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUsdUNBQXVDO2FBQ3JEO1NBQ0Y7UUFDRCxRQUFRLEVBQUUsQ0FBQyxXQUFXLENBQUM7S0FDeEI7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBRSxJQUFxQixFQUFFLFFBQTBCLEVBQUUsRUFBRTtJQUNqRixNQUFNLEVBQUUsU0FBUyxFQUFF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