ModActions: add !cases cmd without user, tweak old !cases response message

This commit is contained in:
Dragory 2019-02-23 21:33:57 +02:00
parent 0c974e1d16
commit 147dcc973d
2 changed files with 35 additions and 2 deletions

View file

@ -70,6 +70,20 @@ export class GuildCases extends BaseRepository {
}); });
} }
async getRecent(count: number): Promise<Case[]> {
return this.cases.find({
relations: this.getRelations(),
where: {
guild_id: this.guildId,
is_hidden: 0,
},
take: count,
order: {
case_number: "DESC",
},
});
}
async setHidden(id: number, hidden: boolean): Promise<void> { async setHidden(id: number, hidden: boolean): Promise<void> {
await this.cases.update( await this.cases.update(
{ id }, { id },

View file

@ -1039,7 +1039,6 @@ export class ModActionsPlugin extends ZeppelinPlugin {
const user = this.bot.users.get(args.userId); const user = this.bot.users.get(args.userId);
const userName = user ? `${user.username}#${user.discriminator}` : "Unknown#0000"; const userName = user ? `${user.username}#${user.discriminator}` : "Unknown#0000";
const prefix = this.knub.getGuildData(this.guildId).config.prefix;
if (cases.length === 0) { if (cases.length === 0) {
msg.channel.createMessage(`No cases found for ${user ? `**${userName}**` : "the specified user"}`); msg.channel.createMessage(`No cases found for ${user ? `**${userName}**` : "the specified user"}`);
@ -1082,7 +1081,7 @@ export class ModActionsPlugin extends ZeppelinPlugin {
${lines.join("\n")} ${lines.join("\n")}
Use \`${prefix}case <num>\` to see more info about individual cases Use the \`case <num>\` command to see more info about individual cases
`); `);
createChunkedMessage(msg.channel, finalMessage); createChunkedMessage(msg.channel, finalMessage);
@ -1090,6 +1089,26 @@ export class ModActionsPlugin extends ZeppelinPlugin {
} }
} }
@d.command("cases")
@d.permission("view")
async recentCasesCmd(msg: Message) {
const recentCases = await this.cases.with("notes").getRecent(5);
if (recentCases.length === 0) {
msg.channel.createMessage(errorMessage("No cases"));
} else {
const lines = recentCases.map(c => this.cases.getSummaryText(c));
const finalMessage = trimLines(`
Most recent 5 cases:
${lines.join("\n")}
Use the \`case <num>\` command to see more info about individual cases
Use the \`cases <user>\` command to see a specific user's cases
`);
createChunkedMessage(msg.channel, finalMessage);
}
}
@d.command("hidecase", "<caseNum:number>") @d.command("hidecase", "<caseNum:number>")
@d.permission("hidecase") @d.permission("hidecase")
async hideCaseCmd(msg: Message, args: { caseNum: number }) { async hideCaseCmd(msg: Message, args: { caseNum: number }) {