UNPKG

@chinchillaenterprises/mcp-discord

Version:

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

77 lines 5.38 kB
import { PermissionsBitField } from "discord.js"; export const toolDefinition = { name: "discord_create_role", description: "Create a new role in the Discord server", inputSchema: { type: "object", properties: { name: { type: "string", description: "Name for the new role", }, color: { type: "number", description: "Role color (decimal value)", }, permissions: { type: "array", items: { type: "string" }, description: "Array of permission names", }, hoist: { type: "boolean", description: "Display role separately in member list", }, mentionable: { type: "boolean", description: "Allow role to be mentioned", }, }, required: ["name"], } }; export const handler = async (args, services) => { const { name, color, permissions, hoist = false, mentionable = true } = args; const guild = await services.getGuild(); try { const roleOptions = { name, hoist, mentionable }; if (color !== undefined) { roleOptions.color = color; } if (permissions && permissions.length > 0) { // Convert permission names to PermissionsBitField try { roleOptions.permissions = new PermissionsBitField(permissions); } catch (error) { throw new Error(`Invalid permissions: ${permissions.join(', ')}`); } } const role = await guild.roles.create(roleOptions); return { content: [ { type: "text", text: `✅ Created role **@${role.name}**! Role ID: ${role.id} Color: ${role.hexColor} Position: ${role.position} ${hoist ? '📌 Hoisted (displays separately)' : 'Not hoisted'} ${mentionable ? '🔔 Mentionable' : 'Not mentionable'} Members: 0 (new role) ${permissions && permissions.length > 0 ? `Permissions: ${permissions.join(', ')}` : 'Default permissions'}`, }, ], }; } catch (error) { console.error(`[CreateRole] Error creating role:`, error); throw new Error(`Failed to create role: ${error.message}`); } }; export { CreateRoleArgsSchema as schema } from "../../schemas/server.js"; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXJvbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvc2VydmVyL2NyZWF0ZS1yb2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQVM7SUFDbEMsSUFBSSxFQUFFLHFCQUFxQjtJQUMzQixXQUFXLEVBQUUseUNBQXlDO0lBQ3RELFdBQVcsRUFBRTtRQUNYLElBQUksRUFBRSxRQUFRO1FBQ2QsVUFBVSxFQUFFO1lBQ1YsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxRQUFRO2dCQUNkLFdBQVcsRUFBRSx1QkFBdUI7YUFDckM7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLDRCQUE0QjthQUMxQztZQUNELFdBQVcsRUFBRTtnQkFDWCxJQUFJLEVBQUUsT0FBTztnQkFDYixLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO2dCQUN6QixXQUFXLEVBQUUsMkJBQTJCO2FBQ3pDO1lBQ0QsS0FBSyxFQUFFO2dCQUNMLElBQUksRUFBRSxTQUFTO2dCQUNmLFdBQVcsRUFBRSx3Q0FBd0M7YUFDdEQ7WUFDRCxXQUFXLEVBQUU7Z0JBQ1gsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsV0FBVyxFQUFFLDRCQUE0QjthQUMxQztTQUNGO1FBQ0QsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDO0tBQ25CO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsSUFBb0IsRUFBRSxRQUEwQixFQUFFLEVBQUU7SUFDaEYsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssR0FBRyxLQUFLLEVBQUUsV0FBVyxHQUFHLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztJQUU3RSxNQUFNLEtBQUssR0FBRyxNQUFNLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUV4QyxJQUFJLENBQUM7UUFDSCxNQUFNLFdBQVcsR0FBUTtZQUN2QixJQUFJO1lBQ0osS0FBSztZQUNMLFdBQVc7U0FDWixDQUFDO1FBRUYsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEIsV0FBVyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDNUIsQ0FBQztRQUVELElBQUksV0FBVyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUMsa0RBQWtEO1lBQ2xELElBQUksQ0FBQztnQkFDSCxXQUFXLENBQUMsV0FBVyxHQUFHLElBQUksbUJBQW1CLENBQUMsV0FBa0IsQ0FBQyxDQUFDO1lBQ3hFLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVuRCxPQUFPO1lBQ0wsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxNQUFNO29CQUNaLElBQUksRUFBRSxxQkFBcUIsSUFBSSxDQUFDLElBQUk7V0FDbkMsSUFBSSxDQUFDLEVBQUU7U0FDVCxJQUFJLENBQUMsUUFBUTtZQUNWLElBQUksQ0FBQyxRQUFRO0VBQ3ZCLEtBQUssQ0FBQyxDQUFDLENBQUMsa0NBQWtDLENBQUMsQ0FBQyxDQUFDLGFBQWE7RUFDMUQsV0FBVyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsaUJBQWlCOztFQUVsRCxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixFQUFFO2lCQUNuRzthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUNBQW1DLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUQsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE9BQU8sRUFBRSxvQkFBb0IsSUFBSSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQyJ9