diff --git a/src/commands/reminders/remindme.ts b/src/commands/reminders/remindme.ts index e960bcb..345ab56 100644 --- a/src/commands/reminders/remindme.ts +++ b/src/commands/reminders/remindme.ts @@ -26,6 +26,13 @@ const command: Command = { description: "The reason for the reminder.", max_length: 1000, required: true + }, + + { + type: 5, + name: "send_in_channel", + description: "Send the reminder in this channel, instead of in a direct message.", + required: false } ], default_member_permissions: null, @@ -38,6 +45,7 @@ const command: Command = { try { let time: number | string = interaction.options.get("time").value as string; const reason = interaction.options.get("reason").value as string; + const sendInChannel = interaction.options.get("send_in_channel")?.value || false as boolean; const reminders = await Reminder.find({ user: interaction.user.id }); @@ -99,7 +107,8 @@ const command: Command = { set: Date.now(), due: Date.now() + time, delay: time, - reason: reason + reason: reason, + send_in_channel: sendInChannel }).save() if(time < client.timeToSet) { @@ -117,16 +126,29 @@ const command: Command = { .setFooter({ text: `ID: ${reminder.reminder_id}` }) .setTimestamp() - try { - await interaction.user.send({ embeds: [embed] }); - } catch { + + if(sendInChannel) { + try { + const channel = client.channels.cache.get(interaction.channel.id) as TextChannel; + + if(!channel) throw "Channel not found."; + + await channel.send({ content: `${interaction.user}`, embeds: [embed] }); + } catch { + try { + await interaction.user.send({ embeds: [embed] }); + } catch {} + } + } else { try { + await interaction.user.send({ embeds: [embed] }); + } catch { const channel = client.channels.cache.get(interaction.channel.id) as TextChannel; if(!channel) return; await channel.send({ content: `${interaction.user}`, embeds: [embed] }); - } catch {} + } } }, time)) } diff --git a/src/events/client/ready.ts b/src/events/client/ready.ts index 96b1733..f3f9e2f 100644 --- a/src/events/client/ready.ts +++ b/src/events/client/ready.ts @@ -4,9 +4,9 @@ import ExtendedClient from "../../classes/ExtendedClient"; import Discord from "discord.js"; import { exec } from "child_process"; import globalCommands from "../../scripts/global-commands"; +import setReminder from "../../util/setReminder"; import Reminder from "../../models/Reminder"; -import setReminder from "../../util/setReminder"; const event: Event = { name: "ready", @@ -35,7 +35,6 @@ const event: Event = { async function manageExistingTimeouts() { let reminders = await Reminder.find({}); - const dueReminders = reminders.filter(reminder => reminder.due <= Date.now().toString()); for(const reminder of dueReminders) { @@ -53,18 +52,34 @@ const event: Event = { .setFooter({ text: `ID: ${reminder.reminder_id}` }) .setTimestamp() - try { - const user = client.users.cache.get(reminder.user); - - await user.send({ embeds: [embed] }); - } catch { + if(reminder?.send_in_channel) { try { const channel = client.channels.cache.get(reminder.channel) as Discord.TextChannel; - if(!channel) return; + if(!channel) throw "Channel not found."; await channel.send({ content: `<@${reminder.user}>`, embeds: [embed] }); - } catch {} + } catch { + try { + const user = client.users.cache.get(reminder.user); + + await user.send({ embeds: [embed] }); + } catch {} + } + } else { + try { + const user = client.users.cache.get(reminder.user); + + await user.send({ embeds: [embed] }); + } catch { + try { + const channel = client.channels.cache.get(reminder.channel) as Discord.TextChannel; + + if(!channel) return; + + await channel.send({ content: `<@${reminder.user}>`, embeds: [embed] }); + } catch {} + } } } diff --git a/src/models/Reminder.ts b/src/models/Reminder.ts index 283b07a..b506e55 100644 --- a/src/models/Reminder.ts +++ b/src/models/Reminder.ts @@ -7,7 +7,8 @@ const schema = new Schema({ delay: Number, set: String, due: String, - reason: String + reason: String, + send_in_channel: Boolean }) export default model("reminders", schema, "reminders"); diff --git a/src/util/setReminder.ts b/src/util/setReminder.ts index 98abec6..65a69b9 100644 --- a/src/util/setReminder.ts +++ b/src/util/setReminder.ts @@ -20,18 +20,34 @@ export default async function (reminder: any, client: ExtendedClient): Promise`, embeds: [embed] }); - } catch {} + } catch { + try { + const user = client.users.cache.get(reminder.user); + + await user.send({ embeds: [embed] }); + } catch {} + } + } else { + try { + const user = client.users.cache.get(reminder.user); + + await user.send({ embeds: [embed] }); + } catch { + try { + const channel = client.channels.cache.get(reminder.channel) as Discord.TextChannel; + + if(!channel) return; + + await channel.send({ content: `<@${reminder.user}>`, embeds: [embed] }); + } catch {} + } } }, delay))