Skip to main content
ollim-bot provides full read/write access to one or more Google calendars. You can list, show, add, update, and delete events through CLI commands, and the agent can present events in Discord embeds with a delete button for one-click removal. By default, ollim-bot queries your primary calendar only. Configure the google_calendars runtime config key with a comma-separated list of calendar IDs to query multiple calendars at once.

Prerequisites

Setup

No additional setup is required. Once you’ve completed the Google integration setup, Calendar is ready to use.

Usage

The ollim-bot cal subcommand provides seven operations.

List today’s events

ollim-bot cal today
Shows events for the current day across every configured calendar. Each line displays the event ID, date, time range, and title:
  abc123def  2026-02-24  09:00-10:00  Team standup
  ghi456jkl  2026-02-24  (all-day)     Project deadline
When more than one calendar is configured, events from all calendars are merged and sorted client-side, and each line is tagged with its source calendar ID in brackets — for example [primary] or [work@example.com].Pass --calendar <id> to query a single calendar instead of all configured ones:
ollim-bot cal today --calendar work@example.com

List upcoming events

ollim-bot cal upcoming
Shows events for the next 7 days by default. Use --days to change the window:
ollim-bot cal upcoming --days 14
ArgumentRequiredDefaultDescription
--daysNo7Number of days to look ahead
--calendarNoAll configuredCalendar ID to query

Show event details

ollim-bot cal show <event_id>
Displays detailed information including title, time, location, description, link, attendees (by email), status, and event ID.Pass --calendar <id> when the event lives on a calendar other than the first one you’ve configured. Defaults to the first entry of google_calendars.

Add an event

ollim-bot cal add "Team lunch" --start 2026-02-25T12:00 --end 2026-02-25T13:00 --description "At the Italian place"
ArgumentRequiredDescription
summary (positional)YesEvent title
--startYesStart time in YYYY-MM-DDTHH:MM format
--endYesEnd time in YYYY-MM-DDTHH:MM format
--descriptionNoEvent description
--calendarNoCalendar ID — defaults to the first configured calendar
Times without a timezone are treated as the configured timezone (OLLIM_TIMEZONE).

Update an event

ollim-bot cal update <event_id> --summary "Updated title" --start 2026-02-25T13:00 --end 2026-02-25T14:00
At least one of --summary, --start, --end, or --description must be provided. --calendar <id> targets a specific calendar; otherwise the first configured calendar is used.

Delete an event

ollim-bot cal delete <event_id>
Permanently deletes the event. Pass --calendar <id> when the event lives on a calendar other than the first configured one.

List available calendars

ollim-bot cal calendars
Lists every calendar your Google account can access, showing the calendar ID and its display name:
  primary                                  My Calendar
  work@example.com                         Work
  family12345@group.calendar.google.com    Family
Use this output to pick IDs for the google_calendars config key.

Configuring which calendars to query

Calendar selection is controlled by the google_calendars runtime config key. It accepts a comma-separated list of calendar IDs — defaults to primary.
ValueBehavior
primary (default)Queries only your primary calendar
primary,work@example.comQueries both calendars; events are merged and sorted client-side
family12345@group.calendar.google.comQueries that one calendar
For write operations (add, update, delete, show), the first entry in google_calendars is used when --calendar is not provided. Run ollim-bot cal calendars to discover the IDs available on your account. See the configuration reference for how to inspect and change runtime config keys.
A 404 on an individual calendar (typo, revoked access) is logged as (calendar '<id>' not found — skipped) and the command continues with the remaining calendars.
One function is exported from google/calendar.py for use by the button handler in views.py:
FunctionSignatureReturns
delete_eventdelete_event(event_id: str, calendar_id: str = "primary") -> strEvent summary
This is called via asyncio.to_thread in the button handler to avoid blocking the event loop. The button’s action string encodes the calendar ID as event_del:<calendar_id>/<event_id> — the legacy event_del:<event_id> form (no calendar ID) still works and defaults to primary for backward compatibility.

Troubleshooting

Your Google connection may have expired or been revoked. The bot detects this automatically and prompts you to reconnect — run /google-auth to re-authenticate.
Event IDs are displayed as the first column in ollim-bot cal today and ollim-bot cal upcoming output. When using embed buttons, the agent handles this automatically.
Run ollim-bot cal calendars to list every calendar your Google account can access, with its ID and display name. The ID is what you pass to --calendar and to the google_calendars config key.
All times are handled in the configured timezone (OLLIM_TIMEZONE, defaults to auto-detected system timezone with a UTC fallback). Times you enter without a timezone are assumed to be in this timezone.

Next steps

Google Tasks

Manage your task list through similar CLI and agent interactions.

Google integration

Shared OAuth setup and all available Google services.

Embeds & buttons

How the agent builds Discord embeds with action buttons.

CLI reference

Full reference for all ollim-bot CLI subcommands.