mirror of
https://github.com/tiennm99/tiennm99bot.git
synced 2026-10-11 12:28:54 +00:00
Serve the BotFather game noitu from the bot's HTTP server under /games/noitu when GAME_BASE_URL is set. /noitu sends the game, Play answers with a signed, expiring link, and the server validates every word against the embedded noitu dictionary (CC BY-SA 4.0), runs the bot opponent and turn timer, and reports the score with setGameScore. Modules can now register game-short-name callbacks and HTTP routes.
74 lines
3.8 KiB
Bash
74 lines
3.8 KiB
Bash
# tiennm99bot — self-host (Coolify + MongoDB Atlas) environment.
|
|
# Copy to .env and fill in. .env is gitignored — never commit real secrets.
|
|
|
|
# ============================ Required ============================
|
|
# Telegram bot token from @BotFather.
|
|
TELEGRAM_BOT_TOKEN=123456:ABC-DEF...
|
|
|
|
# MongoDB Atlas connection. MONGO_URL is the full SRV string INCLUDING the
|
|
# db username + password — treat it as a secret (it is never logged).
|
|
# Create a least-privilege user: readWrite on this one database only.
|
|
MONGO_URL=mongodb+srv://botuser:STRONG_UNIQUE_PASSWORD@cluster0.xxxxx.mongodb.net/?retryWrites=true&w=majority
|
|
MONGO_DATABASE=tiennm99bot
|
|
|
|
# ============================ Operational =========================
|
|
# Comma-separated module list. Empty = load every module, including any module
|
|
# added later — so list them explicitly when a deployment should only gain a new
|
|
# module deliberately.
|
|
MODULES=util,misc,random,amlich,wordle,loldle,noitu,lol,stock,gold,coin,stats,monkeyd,sticker,alias,blacklist,weather
|
|
# Telegram user id for owner-only commands.
|
|
OWNER_ID=
|
|
# Comma-separated admin Telegram user ids.
|
|
ADMIN_IDS=
|
|
|
|
# Bot's Telegram username, without "@". Unset = asked from Telegram (getMe)
|
|
# once at startup. Used for the default sticker pack name and the lol
|
|
# User-Agent. Set it to skip that call or to pin the value.
|
|
BOT_USERNAME=
|
|
|
|
# Sticker set /addsticker writes to. Every user contributes to this one pack.
|
|
# MUST end in _by_<this bot username>: Telegram requires that suffix on sets a
|
|
# bot creates and refuses to edit sets it did not create, so the suffix is what
|
|
# proves the pack is manageable. Created automatically, owned by OWNER_ID, on
|
|
# the first /addsticker if it does not exist yet. Unset = stickers_by_<bot username>.
|
|
STICKER_PACK_NAME=
|
|
|
|
# SOURCE_COMMIT (commit SHA) is read at startup for the deploynotify owner DM.
|
|
# Do NOT set it here. Coolify provides it at runtime. Keep "Include Source
|
|
# Commit in Build" disabled so Docker layer cache survives across commits.
|
|
# Local `docker compose up` has none, so deploynotify reports "unknown".
|
|
|
|
# PandaScore API token for the lol module's schedule fetches (free tier at
|
|
# https://app.pandascore.co/dashboard, no credit card). Secret — never logged.
|
|
# Without it every /lol* fetch fails; the stale cache covers ≤60 min.
|
|
LOL_PANDASCORE_TOKEN=
|
|
|
|
# Optional base URL of the animation renderer (the renderer/ service in this
|
|
# repository) for /wheelofnames, /gacha and /genshin, e.g.
|
|
# http://localhost:3000. compose.yml fixes it to http://renderer:3000, so set it
|
|
# only when running the bot outside compose. Leave blank to fall back to text.
|
|
RENDERER_URL=
|
|
|
|
# Optional public HTTPS base URL for the noitu HTML5 game, e.g.
|
|
# https://noitu.example.com. It must route to the bot container's port 8080
|
|
# (attach a Coolify domain to the bot service); the game page is served under
|
|
# <GAME_BASE_URL>/games/noitu/. Unset or invalid = the game is disabled: /noitu
|
|
# still sends the game, Play explains it is not configured, and no /games/
|
|
# route exists. See docs/noitu-game.md.
|
|
GAME_BASE_URL=
|
|
|
|
# Optional secret (at least 32 bytes) that signs noitu game links. Unset = a key
|
|
# derived from TELEGRAM_BOT_TOKEN, so rotating the bot token invalidates open
|
|
# game links. A value shorter than 32 bytes disables the game. Secret.
|
|
NOITU_GAME_SECRET=
|
|
|
|
# ====================== Leave UNSET on self-host ==================
|
|
# Defaults are correct for self-host:
|
|
# KV_PROVIDER — auto-selects mongodb because MONGO_URL is set
|
|
# PORT — defaults to 8080 (health server, plus the noitu game
|
|
# when GAME_BASE_URL is set)
|
|
# TELEGRAM_WEBHOOK_SECRET — long polling has no webhook
|
|
# GOLD_VNAPP_API_KEY — gold module auto-fetches + caches the key to Mongo
|
|
# Stock/coin/gold URL env overrides are not supported; modules use coded
|
|
# default providers.
|