https://github.com/hu553in/wotd-bot
A simple Telegram bot that sends a daily word from your list at a scheduled time
https://github.com/hu553in/wotd-bot
javascript nodejs telegram telegram-bot word-of-the-day
Last synced: 5 months ago
JSON representation
A simple Telegram bot that sends a daily word from your list at a scheduled time
- Host: GitHub
- URL: https://github.com/hu553in/wotd-bot
- Owner: hu553in
- Created: 2025-02-06T17:43:46.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2026-01-10T22:26:13.000Z (6 months ago)
- Last Synced: 2026-01-11T05:09:14.911Z (6 months ago)
- Topics: javascript, nodejs, telegram, telegram-bot, word-of-the-day
- Language: JavaScript
- Homepage: https://t.me/hu553in_wotd_bot
- Size: 196 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
# Word of the day (WOTD) bot
[](https://github.com/hu553in/wotd-bot/actions/workflows/ci.yml)
A lightweight Telegram bot that sends a daily word from your custom list at a scheduled time.
The bot works in both private and group chats, uses a command-only interface, and is designed to be predictable,
reliable, and easy to operate. All state is stored locally in an SQLite database.
## Features
- Add a word to your list with `/add `.
- Remove a word by exact match using `/remove `.
- View the full word list with `/words`.
- Get a random word (and record it in history) using `/random`.
- Once all words have been used, the history resets automatically.
- Resend today's word without changing state using `/resend`.
- View or update the daily send time with `/time [HH:MM±offset]`.
- `/time` shows the current schedule.
- `/time 21:00+3` sets the time to 21:00 with timezone UTC+03:00.
- Default schedule is 09:00, UTC+03:00.
- View or change how many days a word stays active using `/days [N]`.
- `/days` shows the current value.
- `/days 5` sets the period to 5 days.
- A cron job runs every minute and delivers the "Word of the day"
at the configured time for each chat, adjusted to its timezone.
- Pause and resume daily delivery with `/pause` and `/resume`.
- While paused, the bot remembers the current word and its remaining period.
- On resume, if the period hasn't expired, the bot shows the current word
and how many days remain until the next change.
## Notes
- Each chat has its own isolated word list, schedule, and history.
- Input is fully validated to prevent invalid states.
- Designed for consistency and long-term unattended operation.