@chinchillaenterprises/mcp-discord
Version:
Modular Discord MCP server with 45+ tools for comprehensive server management, featuring clean architecture and discord_ prefixed tools
60 lines (59 loc) • 5.43 kB
JavaScript
export const toolDefinition = {
name: "discord_get_audit_logs",
description: "Get server audit logs",
inputSchema: {
type: "object",
properties: {
limit: {
type: "number",
description: "Number of entries to fetch (1-100, default: 50)",
},
userId: {
type: "string",
description: "Filter by user who performed actions",
},
actionType: {
type: "string",
enum: ["All", "GuildUpdate", "ChannelCreate", "ChannelUpdate", "ChannelDelete", "ChannelOverwriteCreate", "ChannelOverwriteUpdate", "ChannelOverwriteDelete", "MemberKick", "MemberPrune", "MemberBanAdd", "MemberBanRemove", "MemberUpdate", "MemberRoleUpdate", "MemberMove", "MemberDisconnect", "BotAdd", "RoleCreate", "RoleUpdate", "RoleDelete", "InviteCreate", "InviteUpdate", "InviteDelete", "WebhookCreate", "WebhookUpdate", "WebhookDelete", "EmojiCreate", "EmojiUpdate", "EmojiDelete", "MessageDelete", "MessageBulkDelete", "MessagePin", "MessageUnpin", "IntegrationCreate", "IntegrationUpdate", "IntegrationDelete"],
description: "Filter by action type",
},
},
}
};
export const handler = async (args, services) => {
const { limit = 50, userId, actionType } = args;
const guild = await services.getGuild();
try {
const auditLogs = await guild.fetchAuditLogs({
limit,
user: userId,
type: actionType,
});
const logEntries = auditLogs.entries.map(entry => {
const targetInfo = entry.target ?
(typeof entry.target === 'object' && 'username' in entry.target) ?
entry.target.username :
entry.target.toString() :
'Unknown';
return `**${entry.action}** by ${entry.executor?.username}
• Target: ${targetInfo}
• Reason: ${entry.reason || 'No reason provided'}
• Timestamp: ${entry.createdAt.toISOString()}`;
});
return {
content: [
{
type: "text",
text: `Audit Log Entries (${auditLogs.entries.size} shown):
${logEntries.join('\n\n---\n\n') || 'No audit log entries found'}`,
},
],
};
}
catch (error) {
console.error(`[GetAuditLogs] Error getting audit logs:`, error);
throw new Error(`Failed to get audit logs: ${error.message}`);
}
};
export { GetAuditLogsArgsSchema as schema } from "../../schemas/server.js";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWF1ZGl0LWxvZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvc2VydmVyL2dldC1hdWRpdC1sb2dzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBUztJQUNsQyxJQUFJLEVBQUUsd0JBQXdCO0lBQzlCLFdBQVcsRUFBRSx1QkFBdUI7SUFDcEMsV0FBVyxFQUFFO1FBQ1gsSUFBSSxFQUFFLFFBQVE7UUFDZCxVQUFVLEVBQUU7WUFDVixLQUFLLEVBQUU7Z0JBQ0wsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLGlEQUFpRDthQUMvRDtZQUNELE1BQU0sRUFBRTtnQkFDTixJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUsc0NBQXNDO2FBQ3BEO1lBQ0QsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxRQUFRO2dCQUNkLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsd0JBQXdCLEVBQUUsd0JBQXdCLEVBQUUsd0JBQXdCLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLENBQUM7Z0JBQzFtQixXQUFXLEVBQUUsdUJBQXVCO2FBQ3JDO1NBQ0Y7S0FDRjtDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFFLElBQXNCLEVBQUUsUUFBMEIsRUFBRSxFQUFFO0lBQ2xGLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFFaEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFFeEMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxTQUFTLEdBQUcsTUFBTSxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQzNDLEtBQUs7WUFDTCxJQUFJLEVBQUUsTUFBTTtZQUNaLElBQUksRUFBRSxVQUFpQjtTQUN4QixDQUFDLENBQUM7UUFFSCxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMvQyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQy9CLENBQUMsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLFFBQVEsSUFBSSxVQUFVLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7b0JBQ2hFLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3ZCLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDM0IsU0FBUyxDQUFDO1lBRVosT0FBTyxLQUFLLEtBQUssQ0FBQyxNQUFNLFNBQVMsS0FBSyxDQUFDLFFBQVEsRUFBRSxRQUFRO1lBQ25ELFVBQVU7WUFDVixLQUFLLENBQUMsTUFBTSxJQUFJLG9CQUFvQjtlQUNqQyxLQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPO1lBQ0wsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxNQUFNO29CQUNaLElBQUksRUFBRSxzQkFBc0IsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJOztFQUUxRCxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLDRCQUE0QixFQUFFO2lCQUN6RDthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxLQUFLLENBQUMsMENBQTBDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakUsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE9BQU8sRUFBRSxzQkFBc0IsSUFBSSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQyJ9