Skip to content

Commit 1076ebf

Browse files
committed
feat: Update karma command
BREAKING CHANGE: Deprecate ranking
1 parent f0316a2 commit 1076ebf

File tree

3 files changed

+31
-44
lines changed

3 files changed

+31
-44
lines changed

src/commands/index.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import mydevil from './mydevil';
1717
import npm from './npm';
1818
import odpowiedz from './odpowiedz';
1919
import prune from './prune';
20-
import ranking from './ranking';
2120
import quiz from './quiz';
2221
import regulamin from './regulamin';
2322
import roll from './roll';
@@ -46,7 +45,6 @@ const allCommands = [
4645
npm,
4746
odpowiedz,
4847
prune,
49-
ranking,
5048
quiz,
5149
regulamin,
5250
roll,

src/commands/karma.ts

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
import Discord from 'discord.js';
22
import { polishPlurals } from 'polish-plurals';
33

4-
import { getEmojiForKarmaValue, getKarmaForMember } from '../data/karma';
4+
import {
5+
getEmojiForKarmaValue,
6+
getKarmaForMember,
7+
getKarmaForMembers,
8+
KarmaAgg,
9+
} from '../data/karma';
510
import { getKarmaCollection, initDb } from '../db';
611
import type { Command } from '../types';
7-
import { InvalidUsageError } from '../types';
812

913
export const KARMA_REGEX = new RegExp(
1014
`^${Discord.MessageMentions.USERS_PATTERN.source}\\s*\\+\\+\\s*(?<description>.*)$`,
@@ -52,22 +56,37 @@ const addKarma: Command = {
5256
const karma: Command = {
5357
name: 'karma',
5458
description: 'Sprawdź ile kto ma pkt. karmy.',
55-
args: true,
59+
args: false,
5660
async execute(msg) {
5761
const member = await msg.mentions.members?.first()?.fetch();
58-
if (!member) {
59-
throw new InvalidUsageError(`Podaj nazwę użytkownika.`);
60-
}
6162

6263
const db = await initDb();
63-
const agg = await getKarmaForMember(member.id, db);
64-
const value = agg?.value ?? 0;
6564

66-
const pkt = polishPlurals('punkt', 'punkty', 'punktów', value);
65+
if (member) {
66+
const agg = await getKarmaForMember(member.id, db);
67+
const value = agg?.value ?? 0;
6768

68-
return msg.channel.send(
69-
`${member.displayName} ma ${value.toFixed(2)} ${pkt} karmy ${getEmojiForKarmaValue(value)}`,
70-
);
69+
const pkt = polishPlurals('punkt', 'punkty', 'punktów', value);
70+
71+
return msg.channel.send(
72+
`${member.displayName} ma ${value.toFixed(2)} ${pkt} karmy ${getEmojiForKarmaValue(value)}`,
73+
);
74+
} else {
75+
const agg = await getKarmaForMembers(db);
76+
const data = agg.filter((el): el is KarmaAgg => !!el);
77+
await Promise.allSettled(data.map(({ _id: memberId }) => msg.guild?.members.fetch(memberId)));
78+
79+
const messages = [
80+
`**TOP 10 karma**`,
81+
...data.map(({ _id: memberId, value }, index) => {
82+
return `\`${(index + 1).toString().padStart(2, ' ')}\`. ${
83+
msg.guild?.members.cache.get(memberId)?.displayName ?? ''
84+
}${value.toFixed(2)} ${getEmojiForKarmaValue(value)}`;
85+
}),
86+
];
87+
88+
return msg.channel.send(messages.join('\n'));
89+
}
7190
},
7291
};
7392

src/commands/ranking.ts

Lines changed: 0 additions & 30 deletions
This file was deleted.

0 commit comments

Comments
 (0)