progval / Limnoria

A robust, full-featured, and user/programmer-friendly Python IRC bot, with many existing plugins.
https://docs.limnoria.net/
Other
623 stars 173 forks source link

Add a iCal / CalDav plugin #1522

Open progval opened 1 year ago

progval commented 1 year ago

Primary, it would announce upcoming events / reminders.

As an extra, maybe writing events too?

prdes commented 1 year ago

YES Please! I've got no idea how to initiate this sort of a thing as of yet.

I wanted the LUSERs to be able to use @next f1 for next formula one race and it goes beyond this once this is achieved.

My hacky soln was to scheduler remind [until 4 March 8pm] echo "F1 2023 Australian GP Practice". Naturally I didn't go ahead with this.

Libs caldav , icalendar

matiasw commented 1 year ago

I wanted the LUSERs to be able to use @next f1 for next formula one race and it goes beyond this once this is achieved.

Just to let you know: I have started working on this kind of plugin. You may find my initial commit here: https://github.com/matiasw/my-limnoria-plugins/commit/de8ac7a74f38efb0e3d35db8c066e567634924e5

It is in very, very early stages, but I realize that this is a big project, and I believe in "commit early, commit often". For, who knows - tomorrow, death! Anyway, it's probably not very useful, yet, unless all you need to know is the next event of one single iCalendar.

Planned features:

  1. Notifications a set number of days in advance of upcoming events
  2. Support for multiple named calendars (so instead of the current "nextevent" command, we'd have what you wanted, a "nextevent calendarname")
  3. Notifications in private messages to subscribed calendars, so in addition to setting reminders to be sent to channels, a user could ask for them to be sent in private, with per-user settings

I think writing events from IRC to the calendar would not have a good enough difficulty/usefulness ratio, because the iCal format is quite involved, and it's much easier to administer a calendar with eg. Google Calendar's UI. But a notification bot will be built, if it's up to me!

Please let me know if you think of more features, and, of course, development help would be appreciated!

matiasw commented 1 year ago

Feature 2 is now ready for your use case: https://github.com/matiasw/my-limnoria-plugins/tree/master/Calendar ~~Please note that it currently only supports one calendar, because of a weird issue I am having with setting the calendars parameter, where the parameter is stripped of quotes around the key for all but the first of the set calendars. But, you can still set a single calendar source and use the nextevent f1 command like you wanted. Here's an example of how to do that: config plugins.calendar.calendars {"Buddhistholidays":"https://ics.calendarlabs.com/38/b74c50f5/Buddhist_Holidays.ics"}~~

Ok, I got that resolved - so, here's how to set calendars to the plugin: config plugins.calendar.calendars {\"Buddhist holidays\":\"https://ics.calendarlabs.com/38/b74c50f5/Buddhist_Holidays.ics\", \"Christian holidays\":\"https://ics.calendarlabs.com/41/2ae1043a/Christian_Holidays.ics\"}

Note that you need to escape double quotes.