Hello all! I am interested in developing a reminder Discord bot. Existing bots with this function have a premium to pay for re-occuring reminders, which is why I would like to develop my own.
Project basics
In short, I am interested in building a reminder bot capable of taking input /remindme [future time] [message]
, and sending a reminder to the user. I am unsure how to implement the javascript logic for reminders. I'm seeking resources to learn!
Other examples of uses:
/remindme every 2 weeks on Sunday to do laundry
-> without time specified, it will assume 12PM on Sunday.
/remindme tomorrow at 2PM to wrap presents
/remindme December 12th at 7AM to send mail
What I have tried
I have followed this this article as a tutorial to get set up with the basics, using Javascript. Now I'm planning out the functionality. After looking at a few Github repos with similar projects, I'm having trouble understanding how to implement some of these functions.
So far, I understand that I will need to interpret user input into some sort of datetime object.
My questions
How does a program "wait" for an amount of time before doing something..?
If I need to shut down the bot for maintenance, how can I ensure existing reminders can still be delivered once the bot is back up? Will I need a database to store reminder information?
What is an effective way to create a reminder system in Javascript, if a reminder is set weeks apart? My first thought was to create a countdown per reminder, but now I think I should check the given reminder date against the current date to avoid long countdowns. I am not sure what is a reasonable approach.
Any advice or resources is appreciated! Thanks
Top comments (2)
Disclaimer: I have not actually built anything quite like this, but can provide my ideas about how I would start to go about it
I'll start with this one because it's the part of my answer I'm most confident in 😅
Yes, you'll have to store the information somewhere if you want it to come back after restarting the bot.
In Javascript this is a surprisingly non-trivial task to accomplish. Wes Bos has a small npm package that does this (although idk if his is built to run for days apart) that might be helpful to look at: github.com/wesbos/waait
As far as I know, the go-to thing for scheduling repeated tasks is called Cron. I also find this website very helpful for understanding the format for scheduling Cron jobs.
My best guess for what to do would be create your records with something like:
(Time format from epochconverter.com/)
Hope this helps set you in the right direction - let me know if any of that was confusing! 😅
Exciting project! Consider using setTimeout for delayed execution in JavaScript. To persist reminders during bot shutdowns, a database like SQLite or MongoDB could be handy. For reminders weeks apart, comparing reminder dates to the current date is a practical approach. Good luck with your Discord reminder bot development!
Hazard Tree Removal in Fresno CA