From 1a5fe949afbb649ae91fb13c07a277f6198490e3 Mon Sep 17 00:00:00 2001 From: Dragory <2606411+Dragory@users.noreply.github.com> Date: Sun, 17 Jan 2021 20:58:09 +0200 Subject: [PATCH] Add !list_dashboard_users --- .../plugins/BotControl/BotControlPlugin.ts | 2 + .../commands/ListDashboardUsersCmd.ts | 37 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 backend/src/plugins/BotControl/commands/ListDashboardUsersCmd.ts diff --git a/backend/src/plugins/BotControl/BotControlPlugin.ts b/backend/src/plugins/BotControl/BotControlPlugin.ts index 5e871612..e37df650 100644 --- a/backend/src/plugins/BotControl/BotControlPlugin.ts +++ b/backend/src/plugins/BotControl/BotControlPlugin.ts @@ -15,6 +15,7 @@ import { AddDashboardUserCmd } from "./commands/AddDashboardUserCmd"; import { RemoveDashboardUserCmd } from "./commands/RemoveDashboardUserCmd"; import { Configs } from "../../data/Configs"; import { ApiPermissionAssignments } from "../../data/ApiPermissionAssignments"; +import { ListDashboardUsersCmd } from "./commands/ListDashboardUsersCmd"; const defaultOptions = { config: { @@ -37,6 +38,7 @@ export const BotControlPlugin = zeppelinGlobalPlugin()("bo DisallowServerCmd, AddDashboardUserCmd, RemoveDashboardUserCmd, + ListDashboardUsersCmd, ], onLoad(pluginData) { diff --git a/backend/src/plugins/BotControl/commands/ListDashboardUsersCmd.ts b/backend/src/plugins/BotControl/commands/ListDashboardUsersCmd.ts new file mode 100644 index 00000000..35f8318f --- /dev/null +++ b/backend/src/plugins/BotControl/commands/ListDashboardUsersCmd.ts @@ -0,0 +1,37 @@ +import { botControlCmd } from "../types"; +import { isOwnerPreFilter, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils"; +import { commandTypeHelpers as ct } from "../../../commandTypes"; +import { ApiPermissions } from "@shared/apiPermissions"; +import { resolveUser } from "../../../utils"; + +export const ListDashboardUsersCmd = botControlCmd({ + trigger: ["list_dashboard_users"], + permission: null, + config: { + preFilters: [isOwnerPreFilter], + }, + + 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, "Server is not using Zeppelin"); + return; + } + + const dashboardUsers = await pluginData.state.apiPermissionAssignments.getByGuildId(guild.id); + const users = await Promise.all(dashboardUsers.map(perm => resolveUser(pluginData.client, perm.target_id))); + const userNameList = users.map( + user => `<@!${user.id}> (**${user.username}#${user.discriminator}**, \`${user.id}\`)`, + ); + + sendSuccessMessage( + pluginData, + msg.channel, + `The following users have dashboard access for **${guild.name}**:\n\n${userNameList}`, + ); + }, +});