3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-05-10 04:25:01 +00:00
zeppelin/backend/src/plugins/BotControl/commands/ListDashboardUsersCmd.ts

41 lines
1.4 KiB
TypeScript

import { TextChannel } from "discord.js";
import { commandTypeHelpers as ct } from "../../../commandTypes";
import { isStaffPreFilter, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
import { resolveUser } from "../../../utils";
import { botControlCmd } from "../types";
export const ListDashboardUsersCmd = botControlCmd({
trigger: ["list_dashboard_users"],
permission: "can_list_dashboard_perms",
signature: {
guildId: ct.string(),
},
async run({ pluginData, message: msg, args }) {
const guild = await pluginData.state.allowedGuilds.find(args.guildId);
if (!guild) {
sendErrorMessage(pluginData, msg.channel as TextChannel, "Server is not using Zeppelin");
return;
}
const dashboardUsers = await pluginData.state.apiPermissionAssignments.getByGuildId(guild.id);
const users = await Promise.all(
dashboardUsers.map(async (perm) => ({
user: await resolveUser(pluginData.client, perm.target_id),
permission: perm,
})),
);
const userNameList = users.map(
({ user, permission }) =>
`<@!${user.id}> (**${user.tag}**, \`${user.id}\`): ${permission.permissions.join(", ")}`,
);
sendSuccessMessage(
pluginData,
msg.channel as TextChannel,
`The following users have dashboard access for **${guild.name}**:\n\n${userNameList.join("\n")}`,
{},
);
},
});