Calendar Wizard
Calendar Wizard is a Telegram bot that manages your Google Calendar using natural language. Instead of opening a calendar app, you send a message like "Team meeting Friday at 2pm for 1 hour" and the bot creates the event. No app to install beyond Telegram.
Search for @nds_klaus_bot in Telegram, or open t.me/nds_klaus_bot from any device.
What Calendar Wizard Does
Calendar Wizard connects to your Google Calendar and lets you:
- Create one-time and recurring events using plain language.
- View upcoming events from inside Telegram.
- Set reminders that the bot sends you before an event starts.
- Delete or modify events.
- Manage multiple calendars in the same Google account.
Calendar Wizard does not: access your Gmail, store your messages, share your data with third parties, or do anything with your calendar besides what you explicitly ask it to do.
Getting Started
-
Find and start the bot.
In Telegram, search@nds_klaus_botor open t.me/nds_klaus_bot. Tap the Start button. The bot will send a welcome message. -
Connect your Google Calendar.
Type/connect. The bot will reply with an authorization link. Tap the link — it opens Google's sign-in page in your browser. Sign in, review the permissions, and approve. You will be redirected back and the bot will confirm the connection. -
Set your timezone.
Type/timezone America/Chicago(substitute your timezone). This step is required for the bot to interpret times like "3pm" correctly. See Set Your Timezone for a list of common timezone codes. -
Create your first event.
Type something like "Dentist appointment Tuesday at 3pm". The bot will show you what it parsed and ask you to confirm before saving. Reply yes (or just y) to confirm.
Connecting Your Google Calendar
Calendar Wizard uses Google's standard OAuth 2.0 flow. Here is what happens at each step:
Step 1: Initiate the connection
Send /connect to the bot. The bot generates a unique authorization URL
tied to your Telegram user ID.
Step 2: Authorize on Google's site
Tapping the link opens accounts.google.com (Google's domain, not ours). You sign in there. We never see your Google password. Google will show you what permissions you are granting:
- "See, edit, share, and permanently delete all the calendars you can access using Google Calendar" — this is the scope we request to read and write events.
Google's permission dialog uses broad language. In practice, Calendar Wizard only reads event data and creates or modifies events you ask it to. It does not share your calendar with anyone or delete events unless you explicitly ask it to.
Step 3: Confirmation
After approving, Google redirects you back. The bot will send you a message confirming the connection and showing which Google account was connected.
Disconnecting
You can disconnect at any time in two ways:
- Send
/disconnectto the bot. This removes the stored OAuth token from our database. - Or visit myaccount.google.com/permissions and remove Calendar Wizard from the list. Our stored token will become invalid on the next use.
Setting Your Timezone
Timezone must be set before you can create time-specific events. Use IANA timezone names (the same format used by most programming languages and operating systems).
/timezone America/New_York
/timezone Europe/Berlin
/timezone Asia/Tokyo
/timezone America/Los_Angeles
/timezone UTC
Common timezone codes:
| Region | Timezone Code |
|---|---|
| US Eastern | America/New_York |
| US Central | America/Chicago |
| US Mountain | America/Denver |
| US Pacific | America/Los_Angeles |
| UK / Ireland | Europe/London |
| Central Europe | Europe/Berlin |
| Eastern Europe | Europe/Kiev |
| India | Asia/Kolkata |
| Japan / Korea | Asia/Tokyo |
| Australia Eastern | Australia/Sydney |
To see your current timezone, send /timezone with no argument.
The full list of valid timezone names is available at
Wikipedia: List of tz database time zones.
Creating Events
You can create events by describing them in plain English. The bot uses natural language parsing to extract the event details.
Simple events
Dentist appointment Tuesday at 3pm
Coffee with Sarah tomorrow at 10:30am
Doctor tomorrow 9am for 30 minutes
Flight to Berlin March 15 at 6:45am
Events with duration
Team meeting Friday 2pm for 2 hours
Workshop Saturday from 9am to 5pm
Lunch with Alex noon for 1 hour
Recurring events
Team standup every weekday at 9am
Gym every Monday Wednesday Friday at 7am
Weekly review every Friday at 3pm
Events with location
Dentist at 3pm Tuesday at 123 Main Street
Conference at Messe Berlin on Thursday at 10am
Confirmation flow
After you describe an event, the bot will show you a summary of what it parsed:
Got it. I'll create:
Title: Team standup
Date: Monday, March 2 2026
Time: 9:00 AM – 9:30 AM (Europe/Berlin)
Repeats: Every weekday (Mon–Fri)
Confirm? (yes / no)
Reply yes (or y) to save the event to Google Calendar.
Reply no (or n) to cancel. You can also reply with corrections:
"actually make it 9:30am" and the bot will re-parse.
Setting Reminders
Calendar Wizard can send you a Telegram message before an event starts. Reminders are configured per-event or as a global default.
Add a reminder when creating an event
Dentist Tuesday 3pm, remind me 30 minutes before
Team call Friday 2pm with 1 hour reminder
Add a reminder to an existing event
/remind [event name or ID] 1 hour before
Set a global default reminder
/settings reminder 15 minutes
The global default applies to all new events unless overridden.
To turn off default reminders: /settings reminder off.
How reminders are delivered
The bot sends a Telegram message to you at the configured time before the event. Reminders use a background job that runs every minute to check for upcoming events. If the bot is offline for any reason, missed reminders will not be replayed.
Full Command List
| Command | Description |
|---|---|
/start |
Show the welcome message and quick-start instructions |
/connect |
Connect (or reconnect) your Google Calendar via OAuth |
/disconnect |
Remove your stored Google OAuth token and stop calendar access |
/timezone [tz] |
Set your timezone (America/New_York, etc). No argument = show current timezone. |
/upcoming |
Show your next 10 upcoming events |
/today |
Show events for today |
/tomorrow |
Show events for tomorrow |
/week |
Show events for the next 7 days |
/delete [event name] |
Delete an event by name. The bot will show matching events and ask you to confirm. |
/remind [event] [time] |
Add a reminder to an existing event, e.g. /remind standup 15 minutes before |
/settings |
Show current settings (timezone, default reminder) |
/settings reminder [time] |
Set default reminder for all new events, e.g. /settings reminder 30 minutes. Use off to disable. |
/status |
Show connection status and which Google account is linked |
/help |
Show a quick reference of all commands |
/delete_account |
Delete your account and all stored data from our system. This does not affect your Google Calendar contents. |
Frequently Asked Questions
Does Calendar Wizard work with calendars other than Google?
Not currently. Google Calendar is the only supported provider. Support for other calendar systems (CalDAV, Apple Calendar, Outlook) may be added in the future.
Can I use Calendar Wizard with multiple Google accounts?
Each Telegram account can connect one Google Calendar account at a time. If you need
to switch accounts, run /disconnect then /connect with the
new account.
Does it work with shared calendars and other people's events?
Calendar Wizard operates on calendars you own or have edit access to in Google Calendar. If you have been shared a calendar with editor access, it will appear in the bot's calendar list. Read-only shared calendars will show events but you cannot create new events on them.
What happens if I revoke Google access but don't disconnect the bot?
The stored OAuth token will fail on the next API call. The bot will send you a message
asking you to reconnect. Your account row in our database is preserved; you can reconnect
with /connect to resume using the bot.
Can the bot read my existing calendar events?
Yes. When you run /upcoming, /today, or similar commands,
the bot reads your calendar events via the Google Calendar API. This requires the
OAuth token to be connected. Events are cached for up to 90 days to reduce API calls;
see the Data Transparency page for details.
Is this service free?
Yes. Calendar Wizard is currently free and in open beta. There are no in-app purchases or subscriptions at this time.
The bot is not responding. What should I do?
First, check that you have typed a valid command (see the Full Command List above). If the bot still does not respond after a few minutes, email james@westover.dev and we will investigate.
How do I delete my account?
Send /delete_account to the bot, or email
james@westover.dev with the subject
"Delete my data". See the Your Rights
section of the Privacy Policy for full details.