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:
parent
49577e37ca
commit
31d7748bf4
2 changed files with 9 additions and 3 deletions
|
@ -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)],
|
||||
);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue