3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-05-10 20:35:02 +00:00

Fix changeCounterValue() not considering initial value

If a counter was initialized via the INSERT in changeCounterValue(),
its value would be set to the change value rather than the specified
initial value. For example, a counter with an initial value of 1000
and a change of 5 would get initialized to 5, not 1005.
This commit is contained in:
Dragory 2021-05-03 18:37:02 +03:00
parent 49577e37ca
commit 31d7748bf4
No known key found for this signature in database
GPG key ID: 5F387BA66DF8AAC1
2 changed files with 9 additions and 3 deletions

View file

@ -120,7 +120,13 @@ export class GuildCounters extends BaseGuildRepository {
.execute();
}
async changeCounterValue(id: number, channelId: string | null, userId: string | null, change: number): Promise<void> {
async changeCounterValue(
id: number,
channelId: string | null,
userId: string | null,
change: number,
initialValue: number,
): Promise<void> {
if (typeof change !== "number" || Number.isNaN(change) || !Number.isFinite(change)) {
throw new Error(`changeCounterValue() change argument must be a number`);
}
@ -137,7 +143,7 @@ export class GuildCounters extends BaseGuildRepository {
VALUES (?, ?, ?, ?)
ON DUPLICATE KEY UPDATE ${rawUpdate}
`,
[id, channelId, userId, Math.max(change, 0)],
[id, channelId, userId, Math.max(initialValue + change, 0)],
);
}