Find a file
Starbeamrainbowlabs 8099155455
All checks were successful
continuous-integration/laminar-elessar Build 65 succeeded in 51 seconds .
Change compilation target to AnyCPU
2019-03-03 12:37:35 +00:00
lantern-build-engine@c797b1c777 Update lantern build engine again 2019-02-12 20:34:37 +00:00
RhinoReminds Change compilation target to AnyCPU 2019-03-03 12:37:35 +00:00
.gitignore [build] Add ability to create archives automagically 2019-02-12 19:43:40 +00:00
.gitmodules Drop in lantern build engine ready for CI 2018-12-02 12:41:25 +00:00
build Start writing package build task, but it's not finished yet 2019-02-17 23:35:06 +00:00
LICENSE Initial commit 2018-11-10 18:47:03 +00:00
README.md Add link to associated blog post to README.md 2019-02-17 15:58:18 +00:00
rhinoreminds-rsyslog.conf Update systemd config to optionally use rsyslog 2019-02-04 13:54:21 +00:00
rhinoreminds.service Merge branch 'master' of git.starbeamrainbowlabs.com:sbrl/RhinoReminds 2019-02-08 00:25:24 +00:00
RhinoReminds.sln Just in case this turns into something :P 2018-11-09 22:45:59 +00:00
start_service.sh start_service.sh: Apparently sudo doesn't quit - and stays as a wrapper process.Solve this by disowning after sudo & avoid showing the password in the sudo process arguments by preserving the environment when sudoing. 2019-02-01 22:26:22 +00:00

RhinoReminds

An XMPP reminder bot written in C#.

I've blogged about this project here: RhinoReminds: An XMPP reminder bot for my convenience

Getting Started

Downloading Prebuilt Binaries

Prebuilt binaries for the latest release are available on the releases page.

Building from Source

  1. Install the NuGet dependencies:
nuget restore
  1. Build the solution:
msbuild
  1. Specify the environment variables
Variable Meaning
XMPP_JID The JID to connect with
XMPP_PASSWORD The password to use when connecting
  1. Execute the program
cd RhinoReminds/bin/{Debug|Release}
# Linux:
mono [--debug] RhinoReminds.exe [--help]
# Windows:
RhinoReminds.exe [--help]

Setting up RhinoReminds as a system service

Some helpful template files are located in this repository to aid in setting RhinoReminds up as a system service.

  • start_service.sh Contains a script that reads in CLI variables from a file, sets up a PID file directory with the appropriate permissions, and then executes RhinoReminds as an unprivileged user.
  • rhinoreminds.service Contains a systemd service file compatible with start_service.sh
  • rhinoreminds-rsyslog.conf Contains an Rsyslog definition file compatible with the systemd service file defined above. When put in /etc/rsyslog.d (don't forget to restart the rsyslog service!), it will write and auto-rotate log files of the standard output and standard error of the main RhinoReminds process to a subfolder fo /var/log automatically.

Usage

The bot operates on natural language instructions. It picks what to do from the first word in the sentence, but the rest is parsed via AI.

Setting a reminder

Remind me to feed the cat at 6pm
Remind me about CrossCode's release on 20th September 2018
Remind me to water the greenhouse tomorrow at 4:03pm
Remind me in 1 hour to check the oven

Listing reminders

List all reminders
Show all
List all

Deleting Reminders

Delete reminder 43
Delete #22, #23, and #45
Delete number eight
Delete reminders 2, 3, 4, and 7

Contributing

Contributions are welcome! Bug reports can be opened against this repository if you have an account. Otherwise, send them to bugs at starbeamrainbowlabs dot com.

Pull requests and patches are welcome too. Here's a great tutorial on creating patches. If there's any interest, I'll move this repository to my account on gitlab.com if that makes things easier.

License

RhinoReminds is licensed under the Mozilla Public License 2.0 (MPL-2.0 for short) - the full text of which can be found in the LICENSE file in this repository. tl;drLegal have a great summary if you don't want to spend all day read dry legalese :P