3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-07-14 22:07:19 +00:00

Migrate LocateUser to new Plugin structure

This commit is contained in:
Dark 2020-07-08 02:53:44 +02:00
parent 4a8a63e8b8
commit 63efaf84ee
16 changed files with 380 additions and 0 deletions

View file

@ -0,0 +1,57 @@
import { locateUserCommand } from "../types";
import { sendErrorMessage, sendSuccessMessage } from "src/pluginUtils";
import { commandTypeHelpers as ct } from "../../../commandTypes";
import { sorter, createChunkedMessage } from "src/utils";
export const ListFollowCmd = locateUserCommand({
trigger: ["follows", "fs"],
description: "Displays all of your active alerts ordered by expiration time",
usage: "!fs",
permission: "can_alert",
async run({ message: msg, pluginData }) {
const alerts = await pluginData.state.alerts.getAlertsByRequestorId(msg.member.id);
if (alerts.length === 0) {
sendErrorMessage(pluginData, msg.channel, "You have no active alerts!");
return;
}
alerts.sort(sorter("expires_at"));
const longestNum = (alerts.length + 1).toString().length;
const lines = Array.from(alerts.entries()).map(([i, alert]) => {
const num = i + 1;
const paddedNum = num.toString().padStart(longestNum, " ");
return `\`${paddedNum}.\` \`${alert.expires_at}\` **Target:** <@!${alert.user_id}> **Reminder:** \`${
alert.body
}\` **Active:** ${alert.active.valueOf()}`;
});
await createChunkedMessage(msg.channel, lines.join("\n"));
},
});
export const DeleteFollowCmd = locateUserCommand({
trigger: ["follows delete", "fs d"],
description:
"Deletes the alert at the position <num>.\nThe value needed for <num> can be found using `!follows` (`!fs`)",
usage: "!fs d <num>",
permission: "can_alert",
signature: {
num: ct.number({ required: true }),
},
async run({ message: msg, args, pluginData }) {
const alerts = await pluginData.state.alerts.getAlertsByRequestorId(msg.member.id);
alerts.sort(sorter("expires_at"));
if (args.num > alerts.length || args.num <= 0) {
sendErrorMessage(pluginData, msg.channel, "Unknown alert!");
return;
}
const toDelete = alerts[args.num - 1];
await pluginData.state.alerts.delete(toDelete.id);
sendSuccessMessage(pluginData, msg.channel, "Alert deleted");
},
});