Skip to content

Commit d51d043

Browse files
committed
fix recurring reminders i think
1 parent 62e4da7 commit d51d043

File tree

2 files changed

+42
-14
lines changed

2 files changed

+42
-14
lines changed

src/commands/reminders/remindme.ts

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { ChatInputCommandInteraction, ColorResolvable, TextChannel } from "disco
55
import { emojis as emoji } from "../../../config.json";
66

77
import Reminder from "../../models/Reminder";
8+
import setReminder from "../../util/setReminder";
89

910
const command: Command = {
1011
name: "remindme",
@@ -55,8 +56,8 @@ const command: Command = {
5556
try {
5657
let time: number | string = interaction.options.get("time")?.value as string;
5758
const reason = interaction.options.get("reason")?.value as string;
58-
const sendInChannel = interaction.options.get("send_in_channel")?.value || (false as boolean);
59-
const recurring = interaction.options.get("recurring")?.value || (false as boolean);
59+
const sendInChannel = interaction.options?.getBoolean("send_in_channel");
60+
const recurring = interaction.options?.getBoolean("recurring");
6061

6162
const reminders = await Reminder.find({
6263
user: interaction.user.id
@@ -66,7 +67,9 @@ const command: Command = {
6667
const error = new Discord.EmbedBuilder()
6768
.setColor(client.config.embeds.error as ColorResolvable)
6869
.setDescription(
69-
`${emoji.cross} You can only have up to ${client.config.reminders.max} active reminder${client.config.reminders.max === 1 ? "" : "s"} at once!`
70+
`${emoji.cross} You can only have up to ${client.config.reminders.max} active reminder${
71+
client.config.reminders.max === 1 ? "" : "s"
72+
} at once!`
7073
);
7174

7275
await interaction.editReply({ embeds: [error] });
@@ -110,7 +113,9 @@ const command: Command = {
110113
const error = new Discord.EmbedBuilder()
111114
.setColor(client.config.embeds.error as ColorResolvable)
112115
.setDescription(
113-
`${emoji.cross} Your reminder cannot be more than ${maxReminderTimeDays} day${maxReminderTimeDays === 1 ? "" : "s"} in the future.`
116+
`${emoji.cross} Your reminder cannot be more than ${maxReminderTimeDays} day${
117+
maxReminderTimeDays === 1 ? "" : "s"
118+
} in the future.`
114119
);
115120

116121
await interaction.editReply({ embeds: [error] });
@@ -132,7 +137,7 @@ const command: Command = {
132137
delay: time,
133138
reason: reason,
134139
send_in_channel: sendInChannel,
135-
recurring
140+
recurring: recurring
136141
}).save();
137142

138143
if (time < client.config.reminders.timeTillSet) {
@@ -143,6 +148,7 @@ const command: Command = {
143148

144149
if (reminder?.recurring) {
145150
reminder.reminder_set = Date.now().toString();
151+
await setReminder(reminder, client);
146152
await reminder.save();
147153
} else {
148154
await reminder.deleteOne();
@@ -155,7 +161,9 @@ const command: Command = {
155161
.addFields(
156162
{
157163
name: "Set",
158-
value: `<t:${reminder.reminder_set.toString().slice(0, -3)}:f> (<t:${reminder.reminder_set.toString().slice(0, -3)}:R>)`
164+
value: `<t:${reminder.reminder_set
165+
.toString()
166+
.slice(0, -3)}:f> (<t:${reminder.reminder_set.toString().slice(0, -3)}:R>)`
159167
},
160168
{
161169
name: "Recurring",
@@ -205,7 +213,11 @@ const command: Command = {
205213
const reminderSet = new Discord.EmbedBuilder()
206214
.setColor(client.config.embeds.default as ColorResolvable)
207215
.setDescription(
208-
`${emoji.tick} Your reminder has been set for <t:${(Number(reminder.reminder_set) + reminder.delay).toString().slice(0, -3)}:f> with ID \`${reminder.reminder_id}\`${reminder?.recurring ? " and will recur until cancelled." : "."}`
216+
`${emoji.tick} Your reminder has been set for <t:${(Number(reminder.reminder_set) + reminder.delay)
217+
.toString()
218+
.slice(0, -3)}:f> with ID \`${reminder.reminder_id}\`${
219+
reminder?.recurring ? " and will recur until cancelled." : "."
220+
}`
209221
);
210222

211223
await interaction.editReply({ embeds: [reminderSet] });

src/util/setReminder.ts

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,44 @@
11
import { ColorResolvable, EmbedBuilder, TextChannel } from "discord.js";
2-
32
import ExtendedClient from "../classes/ExtendedClient";
43

4+
import { emojis as emoji } from "../../config.json";
5+
56
import { Reminder } from "../models/Reminder";
67

7-
export default async function (reminder: Reminder, client: ExtendedClient): Promise<Boolean> {
8+
export default async function setReminder(reminder: Reminder, client: ExtendedClient): Promise<Boolean> {
89
const delay = Number(Number(reminder.reminder_set) + reminder.delay) - Date.now();
910

1011
if (delay > client.config.reminders.timeTillSet) return false;
1112

1213
client.reminders.set(
1314
`${reminder.user}-${reminder.reminder_id}`,
1415
setTimeout(async () => {
15-
await reminder.deleteOne();
1616
client.reminders.delete(`${reminder.user}-${reminder.reminder_id}`);
1717

18+
if (reminder?.recurring) {
19+
reminder.reminder_set = Date.now().toString();
20+
await setReminder(reminder, client);
21+
await reminder.save();
22+
} else {
23+
await reminder.deleteOne();
24+
}
25+
1826
const embed = new EmbedBuilder()
1927
.setColor(client.config.embeds.default as ColorResolvable)
2028
.setTitle("Reminder")
2129
.setDescription(reminder.reason)
22-
.addFields({
23-
name: "Set",
24-
value: `<t:${reminder.reminder_set.toString().slice(0, -3)}:f> (<t:${reminder.reminder_set.toString().slice(0, -3)}:R>)`
25-
})
30+
.addFields(
31+
{
32+
name: "Set",
33+
value: `<t:${reminder.reminder_set.toString().slice(0, -3)}:f> (<t:${reminder.reminder_set
34+
.toString()
35+
.slice(0, -3)}:R>)`
36+
},
37+
{
38+
name: "Recurring",
39+
value: reminder?.recurring ? emoji.tick : emoji.cross
40+
}
41+
)
2642
.setFooter({ text: `ID: ${reminder.reminder_id}` })
2743
.setTimestamp();
2844

0 commit comments

Comments
 (0)