Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/AmiraliNotFound/dummy-gemini-bot/llms.txt

Use this file to discover all available pages before exploring further.

The Settings tab exposes all keys from the config table in the SQLite database as editable fields. Changes are saved via POST /api/config, which updates both the persistent database record and the in-memory runtime_config dictionary immediately — no bot restart is required.

Configuration Fields

AI Model

KeyDescription
MODEL_IDPrimary Gemini model used for responses (e.g. gemini-2.5-flash)
FALLBACK_MODELSComma-separated list of fallback models tried in order when the primary fails (e.g. gemini-2.5-flash-lite,gemini-2.5-flash,gemma-4-31b-it)
CONTEXT_LIMITNumber of recent messages included in the AI context window
TIMEOUTRequest timeout in seconds for Gemini API calls

TTS

KeyDescription
TTS_ENGINEActive TTS backend — edge (Microsoft Edge TTS) or gemini
TTS_GEMINI_MODELComma-separated Gemini TTS model(s) (e.g. gemini-2.5-flash-preview-tts)
TTS_GEMINI_VOICEVoice name for the Gemini TTS engine (e.g. Kore)
TTS_EDGE_VOICEVoice name for the Edge TTS engine (e.g. fa-IR-FaridNeural)
TTS_FALLBACK_TO_EDGETrue/False — fall back to Edge TTS if Gemini TTS fails
TTS_VOICE_PITCHPitch multiplier for TTS output (float, default 1.0)

Behavior

KeyDescription
SYSTEM_INSTRUCTIONGlobal system prompt that defines the bot’s default persona
PERSONA_PRESETSJSON array of preset persona objects — each with name and prompt fields
RANDOM_ROAST_CHANCEProbability (float 0.01.0) that the bot spontaneously roasts a message without being directly addressed

Discussion Mode

KeyDescription
DISCUSSION_MODE_ENABLEDTrue/False — enable scientific/technical discussion mode
DISCUSSION_PROMPTSystem instruction override used when discussion mode is active

Daily Summaries

KeyDescription
DAILY_SUMMARY_ENABLEDTrue/False — enable automatic daily chat summaries
DAILY_SUMMARY_TIMETime of day to send the summary (24-hour format, e.g. 00:00)
DAILY_SUMMARY_PROMPTPrompt used to generate the daily summary

Rate Monitoring

KeyDefaultDescription
MONITOR_LIMIT_RPM15RPM ceiling for text generation models (used in Limits tab progress bars)
MONITOR_LIMIT_RPD1500RPD ceiling for text generation models
MONITOR_LIMIT_TTS_RPM15RPM ceiling for TTS models
MONITOR_LIMIT_TTS_RPD1500RPD ceiling for TTS models

Saving Changes

Edit any field in the Settings tab and click Save. The dashboard sends a POST /api/config request with the updated key-value pairs:
POST /api/config
Authorization: Bearer <Telegram WebApp initData>
Content-Type: application/json

{
  "MODEL_ID": "gemini-2.5-flash",
  "RANDOM_ROAST_CHANCE": "0.05"
}
The server persists each key to the config SQLite table via save_config_key and immediately updates the live runtime_config dictionary, so the bot picks up the change on the very next incoming message.

yt-dlp Tools

The Settings tab also exposes two maintenance utilities for the media downloader:

Upload Cookies

POST /api/upload_cookies — Upload a fresh cookies.txt file for yt-dlp authenticated downloads. Paste the contents of your Netscape-format cookie export into the upload field and submit. The file is saved to data/cookies.txt (and synced to the root cookies.txt as a fallback).

Update yt-dlp

POST /api/update_ytdlp — Triggers a pip install --upgrade yt-dlp subprocess on the server to update the scraper to the latest published version. The response includes the pip output log. No SSH access or server restart is needed.
Keep yt-dlp updated regularly — Instagram, YouTube, and Threads frequently change their internal APIs and anti-bot protection mechanisms, which can break media downloads until the scraper is patched.
SYSTEM_INSTRUCTION and DISCUSSION_PROMPT support long multi-line text and can be edited in the full-size textarea in the Settings tab. PERSONA_PRESETS must be a valid JSON array where each element is an object with "name" and "prompt" string fields. Invalid JSON will cause preset-related features to fall back to defaults.

Build docs developers (and LLMs) love