This guide is for radio amateurs who want calendar events on their DAPNET pager (and a copy in Telegram). You do not install Python. You only need Telegram, a DAPNET account, and Nextcloud.
The bot’s messages are English and never use Markdown. You can tap buttons or type the same commands.
In Telegram, open the bot and send /start (or tap Start). You will see a short explanation and Register / Status buttons.
Until you register, /calendars and similar commands reply that you are not registered.
/register)Send /register or tap Register. You have 600 seconds (10 minutes) for the whole conversation. /cancel aborts.
Send your DAPNET callsign (letters and numbers, 3–20 characters; / is allowed). The bot checks DAPNET.
Typical errors:
Callsign lookup uses the operator’s default core (usually Germany). If your callsign exists only on the other core, ask the operator or see FAQ.
Tap Spain (dapnet.es) or Germany (hampager.de). This is the network that will transmit your reminders. You can change it later with /server.
The bot lists suggestions:
You can:
If that RIC is already in this bot’s catalog, its callsign is reused. If it is new, send the DAPNET callsign that owns the pager, or tap Use my callsign.
Tap Done when at least one RIC is selected.
Important: DAPNET delivers a page to every pager of that callsign. You cannot target a single RIC when several pagers share one callsign. See Limitations.
https://cloud.example.org or a full CalDAV URL. The bot adds https:// and /remote.php/dav if missing. Only http / https (no file:).The bot immediately tries to list calendars. If the URL, user, or password is wrong, it asks you to send another URL (or /cancel).
You should see: registration submitted, wait for an administrator. Check /status.
If you were already approved and you registered again with the same callsign, you stay approved and credentials are updated. If you changed callsign, you go back to pending.
An admin must approve you. You cannot speed this up from the bot.
While pending you can use /status, /register (new details), /delete, /cancel (if a conversation is still open), /help.
If you are rejected, /register again after you have sorted it out with the admin.
Open /help. You should see calendars, reminders, TX groups, DAPNET core, RICs, timezone, test page, refresh, delete.
/calendars)ON = that calendar is synced and reminded. OFF = ignored (cached events for that calendar are deleted).
New calendars start OFF. Nothing is paged until you enable at least one.
/refresh) and list them.If the list is empty, tap refresh or run /register again with a working app password.
/reminders)Choose lead time and how many alerts before the event. The bot always also pages at event start.
Lead choices: 15 min, 30 min, 1 hour, 3 hours, 1 day, 1 week.
Repeats: 1×, 2×, or 3×, spaced evenly from the lead time down, plus T-0.
Examples:
All-day events are treated as 09:00 in your timezone (T-0 is 09:00, not midnight).
Each due time sends:
CALLSIGN: summary dd/mm[ HH:MM] (all-day omits the clock), max 80 characters, accents and ¿¡ stripped./timezone)/timezone Europe/Madrid
Use an IANA name. Without an argument, the bot shows the current value.
/txgroup)Which DAPNET transmitters radiate the page. Presets: all, ea-all, dl-all, us-all. Tap ON/OFF or send:
/txgroup ea-all,dl-all
Refresh DAPNET groups loads extra names from the core you selected. An invalid group name can make DAPNET drop the entire call. Leave all if you are unsure.
/server)Spain or Germany for sending. Same as during registration. Shortcuts: /server es, /server de (aliases: ea, spain, 1).
/rics)Add, enable, disable, or remove pagers.
/rics — menu/rics 145904 — add if the RIC is already known to this bot/rics 145904 ea4hqf — add a new RIC with owner callsign/rics remove 145904If you have no RIC rows, pages go to your DAPNET callsign. If you have RICs but all are OFF, DAPNET is not sent until you enable one (you may still get the Telegram reminder saying the page could not be sent).
/test)Sends a short page: YOURCALL: test telegram-dapnet-bot to the enabled RIC callsigns. Use this after approval, after changing core/groups/RICs, and when a pager is silent.
/refresh)Pulls events from enabled calendars for the next 14 days (operator can change that window) and lists up to 15 upcoming items. The automatic poll (default every 10 minutes) does the same in the background. This is polling, not instant push: a brand-new event can take until the next sync.
Cancelled events (STATUS:CANCELLED) are ignored. Recurring meetings become one reminder series per instance.
/status)Shows approval state, callsign, RICs, Nextcloud URL, timezone, reminder lead × repeats, TX groups, and core.
/delete)Erases your row: Nextcloud secrets, calendars, event cache, reminder history, RIC links, callsign and preferences. The shared RIC catalog stays so other users can still resolve that number.
Confirm with the buttons or /delete confirm. You can /register again later.
/calendars — turn the right calendars ON./timezone Your/Zone/reminders — pick lead time./rics — confirm destinations./test — confirm the pager beeps./refresh — confirm events appear.If something fails, see Troubleshooting and FAQ.