@quadslab.io/discord-mcp 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +474 -0
- package/dist/discord-client.d.ts +57 -0
- package/dist/discord-client.js +188 -0
- package/dist/discord-client.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +135 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-server.d.ts +15 -0
- package/dist/mcp-server.js +65 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/tools/automod.d.ts +6 -0
- package/dist/tools/automod.js +376 -0
- package/dist/tools/automod.js.map +1 -0
- package/dist/tools/channels.d.ts +6 -0
- package/dist/tools/channels.js +840 -0
- package/dist/tools/channels.js.map +1 -0
- package/dist/tools/emojis.d.ts +6 -0
- package/dist/tools/emojis.js +295 -0
- package/dist/tools/emojis.js.map +1 -0
- package/dist/tools/events.d.ts +6 -0
- package/dist/tools/events.js +304 -0
- package/dist/tools/events.js.map +1 -0
- package/dist/tools/forums.d.ts +6 -0
- package/dist/tools/forums.js +276 -0
- package/dist/tools/forums.js.map +1 -0
- package/dist/tools/guild.d.ts +6 -0
- package/dist/tools/guild.js +88 -0
- package/dist/tools/guild.js.map +1 -0
- package/dist/tools/index.d.ts +13 -0
- package/dist/tools/index.js +142 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/members.d.ts +6 -0
- package/dist/tools/members.js +628 -0
- package/dist/tools/members.js.map +1 -0
- package/dist/tools/messages.d.ts +6 -0
- package/dist/tools/messages.js +688 -0
- package/dist/tools/messages.js.map +1 -0
- package/dist/tools/reactions.d.ts +6 -0
- package/dist/tools/reactions.js +137 -0
- package/dist/tools/reactions.js.map +1 -0
- package/dist/tools/roles.d.ts +6 -0
- package/dist/tools/roles.js +469 -0
- package/dist/tools/roles.js.map +1 -0
- package/dist/tools/server.d.ts +6 -0
- package/dist/tools/server.js +607 -0
- package/dist/tools/server.js.map +1 -0
- package/dist/tools/stage.d.ts +6 -0
- package/dist/tools/stage.js +153 -0
- package/dist/tools/stage.js.map +1 -0
- package/dist/tools/threads.d.ts +6 -0
- package/dist/tools/threads.js +331 -0
- package/dist/tools/threads.js.map +1 -0
- package/dist/tools/utils.d.ts +21 -0
- package/dist/tools/utils.js +315 -0
- package/dist/tools/utils.js.map +1 -0
- package/dist/tools/webhooks.d.ts +6 -0
- package/dist/tools/webhooks.js +195 -0
- package/dist/tools/webhooks.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/tools/messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Reaction tools - get reaction data from messages
|
|
4
|
+
*/
|
|
5
|
+
export declare const reactionTools: Tool[];
|
|
6
|
+
export declare function executeReactionTool(name: string, args: Record<string, unknown>): Promise<string>;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { ChannelType } from 'discord.js';
|
|
2
|
+
import { smartFindTextChannel } from './utils.js';
|
|
3
|
+
import { getGuild } from '../discord-client.js';
|
|
4
|
+
/**
|
|
5
|
+
* Reaction tools - get reaction data from messages
|
|
6
|
+
*/
|
|
7
|
+
export const reactionTools = [
|
|
8
|
+
{
|
|
9
|
+
name: 'get_reactions',
|
|
10
|
+
description: 'Get all reactions on a message, including every user who reacted and their detailed member info (account creation date, server join date, roles, etc.). Channel name is fuzzy-matched.',
|
|
11
|
+
inputSchema: {
|
|
12
|
+
type: 'object',
|
|
13
|
+
properties: {
|
|
14
|
+
channel: {
|
|
15
|
+
type: 'string',
|
|
16
|
+
description: 'The channel name or ID (fuzzy matched)',
|
|
17
|
+
},
|
|
18
|
+
messageId: {
|
|
19
|
+
type: 'string',
|
|
20
|
+
description: 'The ID of the message to get reactions from',
|
|
21
|
+
},
|
|
22
|
+
emoji: {
|
|
23
|
+
type: 'string',
|
|
24
|
+
description: 'Optional: filter to a specific emoji (e.g., "👍" or custom emoji name). If not provided, returns all reactions.',
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
required: ['channel', 'messageId'],
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
export async function executeReactionTool(name, args) {
|
|
32
|
+
switch (name) {
|
|
33
|
+
case 'get_reactions':
|
|
34
|
+
return await getReactions(args);
|
|
35
|
+
default:
|
|
36
|
+
throw new Error(`Unknown reaction tool: ${name}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async function getReactions(args) {
|
|
40
|
+
const channelIdentifier = args['channel'];
|
|
41
|
+
const messageId = args['messageId'];
|
|
42
|
+
const emojiFilter = args['emoji'];
|
|
43
|
+
const channel = await smartFindTextChannel(channelIdentifier);
|
|
44
|
+
const guild = await getGuild();
|
|
45
|
+
const message = await channel.messages.fetch(messageId);
|
|
46
|
+
if (!message) {
|
|
47
|
+
throw new Error(`Message ${messageId} not found in #${channel.name}`);
|
|
48
|
+
}
|
|
49
|
+
const isVoice = channel.type === ChannelType.GuildVoice || channel.type === ChannelType.GuildStageVoice;
|
|
50
|
+
const reactions = [...message.reactions.cache.values()];
|
|
51
|
+
// Filter by emoji if specified
|
|
52
|
+
const filteredReactions = emojiFilter
|
|
53
|
+
? reactions.filter(r => {
|
|
54
|
+
const name = r.emoji.name?.toLowerCase() ?? '';
|
|
55
|
+
const filter = emojiFilter.toLowerCase();
|
|
56
|
+
return name === filter || r.emoji.toString() === emojiFilter;
|
|
57
|
+
})
|
|
58
|
+
: reactions;
|
|
59
|
+
if (filteredReactions.length === 0) {
|
|
60
|
+
return JSON.stringify({
|
|
61
|
+
channel: {
|
|
62
|
+
id: channel.id,
|
|
63
|
+
name: channel.name,
|
|
64
|
+
type: isVoice ? 'voice' : 'text',
|
|
65
|
+
},
|
|
66
|
+
messageId: message.id,
|
|
67
|
+
messageContent: message.content || '(no text content)',
|
|
68
|
+
messageAuthor: {
|
|
69
|
+
id: message.author.id,
|
|
70
|
+
username: message.author.username,
|
|
71
|
+
},
|
|
72
|
+
totalReactions: 0,
|
|
73
|
+
reactions: [],
|
|
74
|
+
}, null, 2);
|
|
75
|
+
}
|
|
76
|
+
const reactionData = [];
|
|
77
|
+
for (const reaction of filteredReactions) {
|
|
78
|
+
// Fetch all users who reacted (handles pagination internally)
|
|
79
|
+
const users = await reaction.users.fetch();
|
|
80
|
+
const reactors = [];
|
|
81
|
+
for (const user of users.values()) {
|
|
82
|
+
// Try to get guild member info
|
|
83
|
+
let memberInfo = null;
|
|
84
|
+
try {
|
|
85
|
+
const member = await guild.members.fetch(user.id);
|
|
86
|
+
memberInfo = {
|
|
87
|
+
displayName: member.displayName,
|
|
88
|
+
nickname: member.nickname,
|
|
89
|
+
joinedServer: member.joinedAt?.toISOString() ?? null,
|
|
90
|
+
roles: member.roles.cache
|
|
91
|
+
.filter(r => r.id !== guild.id)
|
|
92
|
+
.sort((a, b) => b.position - a.position)
|
|
93
|
+
.map(r => r.name),
|
|
94
|
+
isTimedOut: member.isCommunicationDisabled(),
|
|
95
|
+
premiumSince: member.premiumSince?.toISOString() ?? null,
|
|
96
|
+
avatar: member.displayAvatarURL(),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
// User may have left the server
|
|
101
|
+
memberInfo = null;
|
|
102
|
+
}
|
|
103
|
+
reactors.push({
|
|
104
|
+
id: user.id,
|
|
105
|
+
username: user.username,
|
|
106
|
+
isBot: user.bot,
|
|
107
|
+
accountCreated: user.createdAt.toISOString(),
|
|
108
|
+
...(memberInfo
|
|
109
|
+
? { inServer: true, ...memberInfo }
|
|
110
|
+
: { inServer: false }),
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
reactionData.push({
|
|
114
|
+
emoji: reaction.emoji.toString(),
|
|
115
|
+
emojiName: reaction.emoji.name,
|
|
116
|
+
isCustomEmoji: reaction.emoji.id !== null,
|
|
117
|
+
count: reaction.count,
|
|
118
|
+
reactors,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
return JSON.stringify({
|
|
122
|
+
channel: {
|
|
123
|
+
id: channel.id,
|
|
124
|
+
name: channel.name,
|
|
125
|
+
type: isVoice ? 'voice' : 'text',
|
|
126
|
+
},
|
|
127
|
+
messageId: message.id,
|
|
128
|
+
messageContent: message.content || '(no text content)',
|
|
129
|
+
messageAuthor: {
|
|
130
|
+
id: message.author.id,
|
|
131
|
+
username: message.author.username,
|
|
132
|
+
},
|
|
133
|
+
totalReactions: reactionData.reduce((sum, r) => sum + r.count, 0),
|
|
134
|
+
reactions: reactionData,
|
|
135
|
+
}, null, 2);
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=reactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactions.js","sourceRoot":"","sources":["../../src/tools/reactions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Role management tools - with smart fuzzy matching
|
|
4
|
+
*/
|
|
5
|
+
export declare const roleTools: Tool[];
|
|
6
|
+
export declare function executeRoleTool(name: string, args: Record<string, unknown>): Promise<string>;
|
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
import { getGuild, refreshServerCache } from '../discord-client.js';
|
|
2
|
+
import { PermissionFlagsBits, PermissionsBitField } from 'discord.js';
|
|
3
|
+
import { smartFindRole, smartFindMember } from './utils.js';
|
|
4
|
+
/**
|
|
5
|
+
* Role management tools - with smart fuzzy matching
|
|
6
|
+
*/
|
|
7
|
+
export const roleTools = [
|
|
8
|
+
{
|
|
9
|
+
name: 'list_roles',
|
|
10
|
+
description: 'List all roles in the Discord server, sorted by position. Returns role names, IDs, colors, and member counts.',
|
|
11
|
+
inputSchema: {
|
|
12
|
+
type: 'object',
|
|
13
|
+
properties: {},
|
|
14
|
+
required: [],
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'create_role',
|
|
19
|
+
description: 'Create a new role in the Discord server with specified name, color, and optional permissions.',
|
|
20
|
+
inputSchema: {
|
|
21
|
+
type: 'object',
|
|
22
|
+
properties: {
|
|
23
|
+
name: {
|
|
24
|
+
type: 'string',
|
|
25
|
+
description: 'The name for the new role',
|
|
26
|
+
},
|
|
27
|
+
color: {
|
|
28
|
+
type: 'string',
|
|
29
|
+
description: 'The color for the role in hex format (e.g., "#FF0000" for red) or color name (e.g., "Blue", "Red")',
|
|
30
|
+
},
|
|
31
|
+
hoist: {
|
|
32
|
+
type: 'boolean',
|
|
33
|
+
description: 'Whether the role should be displayed separately in the member list (default: false)',
|
|
34
|
+
},
|
|
35
|
+
mentionable: {
|
|
36
|
+
type: 'boolean',
|
|
37
|
+
description: 'Whether the role can be mentioned by anyone (default: false)',
|
|
38
|
+
},
|
|
39
|
+
reason: {
|
|
40
|
+
type: 'string',
|
|
41
|
+
description: 'The reason for creating this role (shown in audit log)',
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
required: ['name'],
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'delete_role',
|
|
49
|
+
description: 'Delete a role from the Discord server. Role name is fuzzy-matched.',
|
|
50
|
+
inputSchema: {
|
|
51
|
+
type: 'object',
|
|
52
|
+
properties: {
|
|
53
|
+
role: {
|
|
54
|
+
type: 'string',
|
|
55
|
+
description: 'The role name or ID to delete (fuzzy matched)',
|
|
56
|
+
},
|
|
57
|
+
reason: {
|
|
58
|
+
type: 'string',
|
|
59
|
+
description: 'The reason for deleting this role (shown in audit log)',
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
required: ['role'],
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: 'modify_role',
|
|
67
|
+
description: 'Modify an existing role\'s properties such as name, color, or position. Role name is fuzzy-matched.',
|
|
68
|
+
inputSchema: {
|
|
69
|
+
type: 'object',
|
|
70
|
+
properties: {
|
|
71
|
+
role: {
|
|
72
|
+
type: 'string',
|
|
73
|
+
description: 'The role name or ID to modify (fuzzy matched)',
|
|
74
|
+
},
|
|
75
|
+
name: {
|
|
76
|
+
type: 'string',
|
|
77
|
+
description: 'New name for the role',
|
|
78
|
+
},
|
|
79
|
+
color: {
|
|
80
|
+
type: 'string',
|
|
81
|
+
description: 'New color for the role in hex format (e.g., "#FF0000")',
|
|
82
|
+
},
|
|
83
|
+
hoist: {
|
|
84
|
+
type: 'boolean',
|
|
85
|
+
description: 'Whether the role should be displayed separately in the member list',
|
|
86
|
+
},
|
|
87
|
+
mentionable: {
|
|
88
|
+
type: 'boolean',
|
|
89
|
+
description: 'Whether the role can be mentioned by anyone',
|
|
90
|
+
},
|
|
91
|
+
position: {
|
|
92
|
+
type: 'number',
|
|
93
|
+
description: 'New position for the role in the hierarchy (higher = more authority)',
|
|
94
|
+
},
|
|
95
|
+
reason: {
|
|
96
|
+
type: 'string',
|
|
97
|
+
description: 'The reason for modifying this role (shown in audit log)',
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
required: ['role'],
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
name: 'get_role_permissions',
|
|
105
|
+
description: 'View all permissions granted to a specific role. Role name is fuzzy-matched.',
|
|
106
|
+
inputSchema: {
|
|
107
|
+
type: 'object',
|
|
108
|
+
properties: {
|
|
109
|
+
role: {
|
|
110
|
+
type: 'string',
|
|
111
|
+
description: 'The role name or ID (fuzzy matched)',
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
required: ['role'],
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
name: 'modify_role_permissions',
|
|
119
|
+
description: 'Grant or revoke specific permissions on a role. Role name is fuzzy-matched.',
|
|
120
|
+
inputSchema: {
|
|
121
|
+
type: 'object',
|
|
122
|
+
properties: {
|
|
123
|
+
role: {
|
|
124
|
+
type: 'string',
|
|
125
|
+
description: 'The role name or ID (fuzzy matched)',
|
|
126
|
+
},
|
|
127
|
+
grant: {
|
|
128
|
+
type: 'array',
|
|
129
|
+
description: 'Permission names to grant (e.g., ["SendMessages", "ManageMessages"])',
|
|
130
|
+
items: { type: 'string' },
|
|
131
|
+
},
|
|
132
|
+
revoke: {
|
|
133
|
+
type: 'array',
|
|
134
|
+
description: 'Permission names to revoke (e.g., ["KickMembers", "BanMembers"])',
|
|
135
|
+
items: { type: 'string' },
|
|
136
|
+
},
|
|
137
|
+
reason: {
|
|
138
|
+
type: 'string',
|
|
139
|
+
description: 'The reason for this change (shown in audit log)',
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
required: ['role'],
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
name: 'set_role_icon',
|
|
147
|
+
description: 'Set a Unicode emoji or custom image as the icon for a role. Requires the server to have the ROLE_ICONS feature (boost level 2+). Role name is fuzzy-matched.',
|
|
148
|
+
inputSchema: {
|
|
149
|
+
type: 'object',
|
|
150
|
+
properties: {
|
|
151
|
+
role: {
|
|
152
|
+
type: 'string',
|
|
153
|
+
description: 'The role name or ID (fuzzy matched)',
|
|
154
|
+
},
|
|
155
|
+
icon: {
|
|
156
|
+
type: 'string',
|
|
157
|
+
description: 'A Unicode emoji to use as the role icon, or a URL to an image',
|
|
158
|
+
},
|
|
159
|
+
reason: {
|
|
160
|
+
type: 'string',
|
|
161
|
+
description: 'The reason for changing the icon (shown in audit log)',
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
required: ['role', 'icon'],
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
name: 'assign_role',
|
|
169
|
+
description: 'Assign a role to a member. Both role and member names are fuzzy-matched.',
|
|
170
|
+
inputSchema: {
|
|
171
|
+
type: 'object',
|
|
172
|
+
properties: {
|
|
173
|
+
member: {
|
|
174
|
+
type: 'string',
|
|
175
|
+
description: 'The member\'s username, display name, or user ID (fuzzy matched)',
|
|
176
|
+
},
|
|
177
|
+
role: {
|
|
178
|
+
type: 'string',
|
|
179
|
+
description: 'The role name or ID to assign (fuzzy matched)',
|
|
180
|
+
},
|
|
181
|
+
reason: {
|
|
182
|
+
type: 'string',
|
|
183
|
+
description: 'The reason for assigning this role (shown in audit log)',
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
required: ['member', 'role'],
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
name: 'remove_role',
|
|
191
|
+
description: 'Remove a role from a member. Both role and member names are fuzzy-matched.',
|
|
192
|
+
inputSchema: {
|
|
193
|
+
type: 'object',
|
|
194
|
+
properties: {
|
|
195
|
+
member: {
|
|
196
|
+
type: 'string',
|
|
197
|
+
description: 'The member\'s username, display name, or user ID (fuzzy matched)',
|
|
198
|
+
},
|
|
199
|
+
role: {
|
|
200
|
+
type: 'string',
|
|
201
|
+
description: 'The role name or ID to remove (fuzzy matched)',
|
|
202
|
+
},
|
|
203
|
+
reason: {
|
|
204
|
+
type: 'string',
|
|
205
|
+
description: 'The reason for removing this role (shown in audit log)',
|
|
206
|
+
},
|
|
207
|
+
},
|
|
208
|
+
required: ['member', 'role'],
|
|
209
|
+
},
|
|
210
|
+
},
|
|
211
|
+
];
|
|
212
|
+
export async function executeRoleTool(name, args) {
|
|
213
|
+
switch (name) {
|
|
214
|
+
case 'list_roles':
|
|
215
|
+
return await listRoles();
|
|
216
|
+
case 'create_role':
|
|
217
|
+
return await createRole(args);
|
|
218
|
+
case 'delete_role':
|
|
219
|
+
return await deleteRole(args);
|
|
220
|
+
case 'modify_role':
|
|
221
|
+
return await modifyRole(args);
|
|
222
|
+
case 'get_role_permissions':
|
|
223
|
+
return await getRolePermissions(args);
|
|
224
|
+
case 'modify_role_permissions':
|
|
225
|
+
return await modifyRolePermissions(args);
|
|
226
|
+
case 'set_role_icon':
|
|
227
|
+
return await setRoleIcon(args);
|
|
228
|
+
case 'assign_role':
|
|
229
|
+
return await assignRole(args);
|
|
230
|
+
case 'remove_role':
|
|
231
|
+
return await removeRole(args);
|
|
232
|
+
default:
|
|
233
|
+
throw new Error(`Unknown role tool: ${name}`);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
async function listRoles() {
|
|
237
|
+
const guild = await getGuild();
|
|
238
|
+
const roles = guild.roles.cache
|
|
239
|
+
.sort((a, b) => b.position - a.position)
|
|
240
|
+
.map(role => ({
|
|
241
|
+
id: role.id,
|
|
242
|
+
name: role.name,
|
|
243
|
+
color: role.hexColor,
|
|
244
|
+
position: role.position,
|
|
245
|
+
hoist: role.hoist,
|
|
246
|
+
mentionable: role.mentionable,
|
|
247
|
+
memberCount: role.members.size,
|
|
248
|
+
managed: role.managed,
|
|
249
|
+
isEveryone: role.id === guild.id,
|
|
250
|
+
}));
|
|
251
|
+
return JSON.stringify({
|
|
252
|
+
totalRoles: roles.length,
|
|
253
|
+
roles,
|
|
254
|
+
}, null, 2);
|
|
255
|
+
}
|
|
256
|
+
async function createRole(args) {
|
|
257
|
+
const guild = await getGuild();
|
|
258
|
+
const name = args['name'];
|
|
259
|
+
const color = args['color'];
|
|
260
|
+
const hoist = args['hoist'];
|
|
261
|
+
const mentionable = args['mentionable'];
|
|
262
|
+
const reason = args['reason'];
|
|
263
|
+
const role = await guild.roles.create({
|
|
264
|
+
name,
|
|
265
|
+
color: color,
|
|
266
|
+
hoist: hoist ?? false,
|
|
267
|
+
mentionable: mentionable ?? false,
|
|
268
|
+
reason: reason ?? 'Created via MCP',
|
|
269
|
+
});
|
|
270
|
+
// Refresh cache so the new role is immediately findable
|
|
271
|
+
await refreshServerCache();
|
|
272
|
+
return JSON.stringify({
|
|
273
|
+
success: true,
|
|
274
|
+
message: `Role "${role.name}" created successfully`,
|
|
275
|
+
role: {
|
|
276
|
+
id: role.id,
|
|
277
|
+
name: role.name,
|
|
278
|
+
color: role.hexColor,
|
|
279
|
+
position: role.position,
|
|
280
|
+
},
|
|
281
|
+
}, null, 2);
|
|
282
|
+
}
|
|
283
|
+
async function deleteRole(args) {
|
|
284
|
+
const guild = await getGuild();
|
|
285
|
+
const roleIdentifier = args['role'];
|
|
286
|
+
const reason = args['reason'];
|
|
287
|
+
const role = await smartFindRole(roleIdentifier);
|
|
288
|
+
if (role.managed) {
|
|
289
|
+
throw new Error(`Cannot delete managed role "${role.name}" (managed by an integration)`);
|
|
290
|
+
}
|
|
291
|
+
if (role.id === guild.id) {
|
|
292
|
+
throw new Error('Cannot delete the @everyone role');
|
|
293
|
+
}
|
|
294
|
+
const roleName = role.name;
|
|
295
|
+
await role.delete(reason ?? 'Deleted via MCP');
|
|
296
|
+
// Refresh cache so the deleted role is removed from lookups
|
|
297
|
+
await refreshServerCache();
|
|
298
|
+
return JSON.stringify({
|
|
299
|
+
success: true,
|
|
300
|
+
message: `Role "${roleName}" deleted successfully`,
|
|
301
|
+
}, null, 2);
|
|
302
|
+
}
|
|
303
|
+
async function modifyRole(args) {
|
|
304
|
+
const roleIdentifier = args['role'];
|
|
305
|
+
const role = await smartFindRole(roleIdentifier);
|
|
306
|
+
if (role.managed) {
|
|
307
|
+
throw new Error(`Cannot modify managed role "${role.name}" (managed by an integration)`);
|
|
308
|
+
}
|
|
309
|
+
const updates = {};
|
|
310
|
+
if (args['name'] !== undefined)
|
|
311
|
+
updates.name = args['name'];
|
|
312
|
+
if (args['color'] !== undefined)
|
|
313
|
+
updates.color = args['color'];
|
|
314
|
+
if (args['hoist'] !== undefined)
|
|
315
|
+
updates.hoist = args['hoist'];
|
|
316
|
+
if (args['mentionable'] !== undefined)
|
|
317
|
+
updates.mentionable = args['mentionable'];
|
|
318
|
+
if (args['position'] !== undefined)
|
|
319
|
+
updates.position = args['position'];
|
|
320
|
+
updates.reason = args['reason'] ?? 'Modified via MCP';
|
|
321
|
+
const updatedRole = await role.edit(updates);
|
|
322
|
+
return JSON.stringify({
|
|
323
|
+
success: true,
|
|
324
|
+
message: `Role "${updatedRole.name}" modified successfully`,
|
|
325
|
+
role: {
|
|
326
|
+
id: updatedRole.id,
|
|
327
|
+
name: updatedRole.name,
|
|
328
|
+
color: updatedRole.hexColor,
|
|
329
|
+
position: updatedRole.position,
|
|
330
|
+
hoist: updatedRole.hoist,
|
|
331
|
+
mentionable: updatedRole.mentionable,
|
|
332
|
+
},
|
|
333
|
+
}, null, 2);
|
|
334
|
+
}
|
|
335
|
+
async function assignRole(args) {
|
|
336
|
+
const memberIdentifier = args['member'];
|
|
337
|
+
const roleIdentifier = args['role'];
|
|
338
|
+
const reason = args['reason'];
|
|
339
|
+
const member = await smartFindMember(memberIdentifier);
|
|
340
|
+
const role = await smartFindRole(roleIdentifier);
|
|
341
|
+
if (member.roles.cache.has(role.id)) {
|
|
342
|
+
return JSON.stringify({
|
|
343
|
+
success: true,
|
|
344
|
+
message: `Member "${member.displayName}" already has the role "${role.name}"`,
|
|
345
|
+
}, null, 2);
|
|
346
|
+
}
|
|
347
|
+
await member.roles.add(role, reason ?? 'Assigned via MCP');
|
|
348
|
+
return JSON.stringify({
|
|
349
|
+
success: true,
|
|
350
|
+
message: `Role "${role.name}" assigned to "${member.displayName}" successfully`,
|
|
351
|
+
member: {
|
|
352
|
+
id: member.id,
|
|
353
|
+
username: member.user.username,
|
|
354
|
+
displayName: member.displayName,
|
|
355
|
+
},
|
|
356
|
+
role: {
|
|
357
|
+
id: role.id,
|
|
358
|
+
name: role.name,
|
|
359
|
+
},
|
|
360
|
+
}, null, 2);
|
|
361
|
+
}
|
|
362
|
+
async function removeRole(args) {
|
|
363
|
+
const memberIdentifier = args['member'];
|
|
364
|
+
const roleIdentifier = args['role'];
|
|
365
|
+
const reason = args['reason'];
|
|
366
|
+
const member = await smartFindMember(memberIdentifier);
|
|
367
|
+
const role = await smartFindRole(roleIdentifier);
|
|
368
|
+
if (!member.roles.cache.has(role.id)) {
|
|
369
|
+
return JSON.stringify({
|
|
370
|
+
success: true,
|
|
371
|
+
message: `Member "${member.displayName}" doesn't have the role "${role.name}"`,
|
|
372
|
+
}, null, 2);
|
|
373
|
+
}
|
|
374
|
+
await member.roles.remove(role, reason ?? 'Removed via MCP');
|
|
375
|
+
return JSON.stringify({
|
|
376
|
+
success: true,
|
|
377
|
+
message: `Role "${role.name}" removed from "${member.displayName}" successfully`,
|
|
378
|
+
member: {
|
|
379
|
+
id: member.id,
|
|
380
|
+
username: member.user.username,
|
|
381
|
+
displayName: member.displayName,
|
|
382
|
+
},
|
|
383
|
+
role: {
|
|
384
|
+
id: role.id,
|
|
385
|
+
name: role.name,
|
|
386
|
+
},
|
|
387
|
+
}, null, 2);
|
|
388
|
+
}
|
|
389
|
+
async function setRoleIcon(args) {
|
|
390
|
+
const roleIdentifier = args['role'];
|
|
391
|
+
const icon = args['icon'];
|
|
392
|
+
const reason = args['reason'];
|
|
393
|
+
const role = await smartFindRole(roleIdentifier);
|
|
394
|
+
if (role.managed) {
|
|
395
|
+
throw new Error(`Cannot set icon on managed role "${role.name}" (managed by an integration)`);
|
|
396
|
+
}
|
|
397
|
+
// Check if server supports role icons
|
|
398
|
+
const guild = await getGuild();
|
|
399
|
+
if (!guild.features.includes('ROLE_ICONS')) {
|
|
400
|
+
throw new Error('This server does not support role icons. Requires boost level 2+ (ROLE_ICONS feature).');
|
|
401
|
+
}
|
|
402
|
+
await role.edit({
|
|
403
|
+
unicodeEmoji: icon.length <= 4 ? icon : null,
|
|
404
|
+
icon: icon.length > 4 ? icon : null,
|
|
405
|
+
reason: reason ?? 'Role icon set via MCP',
|
|
406
|
+
});
|
|
407
|
+
return JSON.stringify({
|
|
408
|
+
success: true,
|
|
409
|
+
message: `Icon set for role "${role.name}"`,
|
|
410
|
+
role: { id: role.id, name: role.name },
|
|
411
|
+
icon,
|
|
412
|
+
}, null, 2);
|
|
413
|
+
}
|
|
414
|
+
async function getRolePermissions(args) {
|
|
415
|
+
const roleIdentifier = args['role'];
|
|
416
|
+
const role = await smartFindRole(roleIdentifier);
|
|
417
|
+
const permissions = role.permissions.toArray();
|
|
418
|
+
return JSON.stringify({
|
|
419
|
+
role: {
|
|
420
|
+
id: role.id,
|
|
421
|
+
name: role.name,
|
|
422
|
+
color: role.hexColor,
|
|
423
|
+
position: role.position,
|
|
424
|
+
},
|
|
425
|
+
permissions,
|
|
426
|
+
isAdministrator: permissions.includes('Administrator'),
|
|
427
|
+
}, null, 2);
|
|
428
|
+
}
|
|
429
|
+
async function modifyRolePermissions(args) {
|
|
430
|
+
const roleIdentifier = args['role'];
|
|
431
|
+
const grantPerms = args['grant'];
|
|
432
|
+
const revokePerms = args['revoke'];
|
|
433
|
+
const reason = args['reason'];
|
|
434
|
+
const role = await smartFindRole(roleIdentifier);
|
|
435
|
+
if (role.managed) {
|
|
436
|
+
throw new Error(`Cannot modify permissions on managed role "${role.name}" (managed by an integration)`);
|
|
437
|
+
}
|
|
438
|
+
// Start with current permissions
|
|
439
|
+
let bits = role.permissions.bitfield;
|
|
440
|
+
// Grant permissions
|
|
441
|
+
if (grantPerms) {
|
|
442
|
+
for (const perm of grantPerms) {
|
|
443
|
+
if (!(perm in PermissionFlagsBits)) {
|
|
444
|
+
throw new Error(`Unknown permission: "${perm}". Valid: ${Object.keys(PermissionFlagsBits).slice(0, 10).join(', ')}...`);
|
|
445
|
+
}
|
|
446
|
+
bits |= PermissionFlagsBits[perm];
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
// Revoke permissions
|
|
450
|
+
if (revokePerms) {
|
|
451
|
+
for (const perm of revokePerms) {
|
|
452
|
+
if (!(perm in PermissionFlagsBits)) {
|
|
453
|
+
throw new Error(`Unknown permission: "${perm}". Valid: ${Object.keys(PermissionFlagsBits).slice(0, 10).join(', ')}...`);
|
|
454
|
+
}
|
|
455
|
+
bits &= ~PermissionFlagsBits[perm];
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
await role.setPermissions(bits, reason ?? 'Permissions modified via MCP');
|
|
459
|
+
const newPermissions = new PermissionsBitField(bits).toArray();
|
|
460
|
+
return JSON.stringify({
|
|
461
|
+
success: true,
|
|
462
|
+
message: `Permissions updated for role "${role.name}"`,
|
|
463
|
+
role: { id: role.id, name: role.name },
|
|
464
|
+
granted: grantPerms ?? [],
|
|
465
|
+
revoked: revokePerms ?? [],
|
|
466
|
+
currentPermissions: newPermissions,
|
|
467
|
+
}, null, 2);
|
|
468
|
+
}
|
|
469
|
+
//# sourceMappingURL=roles.js.map
|