Lumi/plugins/birthday/README.md
2026-06-11 06:35:43 +02:00

44 lines
1.9 KiB
Markdown

# Birthday Plugin
Standalone Lumi plugin for birthday profile settings, chat commands, Discord birthday announcements, and optional echonomy birthday gifts.
## Install
Install `updates/lumi-plugin-birthday-v0.1.0.zip` through Admin -> Plugins. The ZIP is built from the contents of this folder, so `plugin.json` is at the ZIP root.
## Commands
- `!birthday` shows help and the caller's stored birthday when available.
- `!birthday set YYYY/MM/DD` stores a full birthday.
- `!birthday set MM/DD` stores a birthday without a year.
- `!birthday unset` removes the caller's birthday.
- `!birthday <user>` looks up a Lumi user by internal username, linked display name, provider user ID, or Discord mention.
- `!birthday claim` claims the configured gift when manual gift mode is enabled.
The `bday` alias is also registered. The command supports Discord, Twitch, and YouTube command contexts.
## WebUI
- Admin/mod page: `/plugins/birthday`
- Owner profile section: rendered on `/profile` through `web.addProfileSection`
- Visitor birthday card: `/plugins/birthday/u/:username`
Lumi currently exposes an owner profile section hook, but this repository does not expose a separate public visitor profile hook for plugins. Because of that, visitor display is implemented as the plugin route above instead of being injected into a core public profile page.
## Storage
Birthdays are stored in plugin-owned tables:
- `birthday_profiles`
- `birthday_deliveries`
Plugin settings are stored in `plugin_settings` with `plugin_id = 'birthday'`.
## Notes
- Accepted date formats are `YYYY/MM/DD` and `MM/DD`.
- Dash-separated dates and `DD/MM` dates are rejected.
- Default privacy is `limited`.
- If echonomy is not loaded, birthday announcements still work and gifts are skipped.
- Automatic gifts are delivered once per birthday occurrence. Manual gifts are claimed once per birthday occurrence.