RhinoReminds: An XMPP reminder bot for my convenience
(Above: A Picture of a Black Rhino. Source: WikiMedia Commons)
Many times when I write a program it's to solve a problem. With Pepperminty Wiki, it was that I needed a lightweight wiki engine - and MediaWiki was just too complex. With TeleConsole, it was that I wanted to debug a C♯ Program in an environment that had neither a debugger nor a console (I'm talking about you, Unity 3D).
Today, I'm releasing RhinoReminds, an XMPP bot that reminds you about things. As you might have guessed, this is the end product of a few different posts I've made on here recently:
- Easy AI with Microsoft.Text.Recognizers
- Creating a system service with systemd
- Write an XMPP bot in half an hour
You can talk to it like so:
Remind me to water the greenhouse tomorrow at 4:03pm Show all reminders Delete reminders 2, 3, 4, and 7 Remind me in 1 hour to check the oven
...and it'll respond accordingly. It figures out which action to take based on the first word of the sentence you send it, but after that it uses AI (specifically
Microsoft.Recognizers.Text, which I posted about here) to work out what you how you want it to do it.
I'm still working out a few bugs (namely reconnecting automagically after the connection to the server is lost, and ensuring all the messages it sends in reply actually make sense), but it's at the point now where it's stable enough that I can release it to everyone who'd either like to use it for themselves, or is simply curious :-)
If you'd like to run an instance of the bot for yourself, I recommend heading over to my personal git server here:
The readme file should contain everything you need to know to get started. If not, let me know by contacting me, or commenting here!
Unfortunately, I'm not able to offer a public instance of this bot at the moment, due to concerns about spam. However, patches to improve the bots resistance against spammers (perhaps a cooldown period or something or too many messages are sent? or a limit of 50 active reminders per account?) are welcome.
Found this interesting? Got a cool use for it? Want help setting it up yourself? Comment below!