94 lines
3.6 KiB

# RhinoReminds
> An XMPP reminder bot written in C#.
I've blogged about this project here: [RhinoReminds: An XMPP reminder bot for my convenience](https://starbeamrainbowlabs.com/blog/article.php?article=posts/328-RhinoReminds.html)
## Getting Started
### Downloading Prebuilt Binaries
Prebuilt binaries for the latest release are available on the [releases page](https://git.starbeamrainbowlabs.com/sbrl/RhinoReminds/releases).
### Building from Source
1. Install the NuGet dependencies:
nuget restore
2. Build the solution:
3. Specify the environment variables
Variable | Meaning
`XMPP_JID` | The JID to connect with
`XMPP_PASSWORD` | The password to use when connecting
4. 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`](https://git.starbeamrainbowlabs.com/sbrl/RhinoReminds/src/branch/master/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`](https://git.starbeamrainbowlabs.com/sbrl/RhinoReminds/src/branch/master/rhinoreminds.service) Contains a systemd service file compatible with `start_service.sh`
- [`rhinoreminds-rsyslog.conf`](https://git.starbeamrainbowlabs.com/sbrl/RhinoReminds/src/branch/master/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](https://makandracards.com/makandra/2521-git-how-to-create-and-apply-patches) on creating patches. If there's any interest, I'll move this repository to my account on [gitlab.com](https://gitlab.com/sbrl) 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](https://git.starbeamrainbowlabs.com/sbrl/RhinoReminds/src/branch/master/LICENSE) file in this repository. tl;drLegal have a [great summary](https://tldrlegal.com/license/mozilla-public-license-2.0-(mpl-2)) if you don't want to spend all day read dry legalese :P
## Useful Links
- [Microsoft.Text.Recognizers Samples](https://github.com/Microsoft/Recognizers-Text/tree/master/.NET/Samples)
- [S22.Xmpp API Documentation](https://smiley22.github.io/S22.Xmpp/Documentation/)