Files
tiennm99bot/renderer/docs/miti99bot-integration.md
T
tiennm99 277c913f71 refactor(random)!: configure the renderer by base URL as RENDERER_URL
The bot now takes the renderer's base URL and appends each /api/<name>
route itself, instead of taking the full /api/gif endpoint and swapping
its last path segment for /gacha and /genshin. The client, its files, and
its errors are named after the renderer rather than wheelofnames; the
/wheelofnames command keeps its name.

BREAKING CHANGE: WHEELOFNAMES_API_URL is replaced by RENDERER_URL, which
holds the base URL (e.g. http://renderer:3000) rather than the /api/gif
endpoint. compose.yml sets it, so Coolify needs no value.
2026-10-03 11:52:50 +07:00

52 lines
1.3 KiB
Markdown

# miti99bot Integration
miti99bot's `/wheelofnames` renders its wheel with this service, configured
by `RENDERER_URL`, the service's base URL. The service is internal to
the compose network, so requests carry no credentials. Winner handling stays
explicit:
1. The bot parses the comma-separated options.
2. It chooses `winnerIndex` itself.
3. It calls `POST /api/gif`.
4. It sends the response bytes with Telegram `sendAnimation`.
5. Its caption uses its own winner as the source of truth.
6. If the service is not configured or fails, it replies with the winner as
text.
## Request
Send the JSON body:
```json
{
"options": ["alice", "bob", "carol"],
"winnerIndex": 1,
"durationMs": 6500,
"holdMs": 1200,
"fps": 15,
"size": 512,
"theme": "classic"
}
```
## Response
- Body: `image/gif`
- Headers:
- `X-Wheel-Winner-Index`
- `X-Wheel-Winner`
- `X-Render-Duration-Ms`
`X-Wheel-Winner` is URL-encoded. Decode it before displaying if service-side
winner selection is used.
## Gacha
`/gacha` in miti99bot calls `POST /api/gacha` on the same service.
The bot appends the route to `RENDERER_URL`, picks the result and rarity
itself, and sends the MP4 with `sendAnimation`. On any failure it falls back to
a text reply.
The unlisted `/genshin` command works the same way against `POST /api/genshin`
and sends the 7-second 640x360 meteor wish.