Appearance
Bot profile
A bot's profile is what a person sees before they ever send it a message: the name in the chat list, the short line on its card, the long text on an empty chat screen. Every one of these can be set per language, so a bot reads as native to whoever opened it.
Setting the fields works now
setMyName, setMyDescription, setMyShortDescription and their get* counterparts are verified live — get a token with POST /newbot and call them. The profile photo and the empty-chat media land with the media pipeline. Implementation status.
The fields
| Field | Where it shows | Method |
|---|---|---|
name (first_name) | Chat list, header — the display name | setMyName |
| about (~120 chars) | The profile card, under the name | setMyShortDescription |
| description (~512 chars) | The empty chat screen, before the first message | setMyDescription |
| description photo / document | The empty chat screen, above the description | (planned — media pipeline) |
| profile photo | Everywhere the bot appears | (planned — media pipeline) |
| privacy_policy_url | Linked from the bot's menu | (planned) |
The distinction people get wrong: about is the short line on the card; description is the longer text that only appears on an empty chat, and vanishes the moment the first message is sent. Write the description as an onboarding hint — what the bot does, how to start — not as a permanent bio.
Localization
Each field carries a variant per language_code. A bot that sets an English and a Russian description shows each user the one matching their client language; anyone else falls through to the default.
The default is the empty language_code — set that one first, always, because it is what every unmatched user sees. GROM's target languages are uz, ru, en; the empty-code fallback is what makes a fourth language degrade gracefully instead of showing blank.
bash
# The fallback everyone sees unless a better match exists — set it first.
curl "https://api.casinoplaneta.info/bot$GROM_TOKEN/setMyDescription" \
-H 'Content-Type: application/json' \
-d '{"description":"A weather bot. Send a city name."}'
# A Russian variant, shown to ru clients.
curl "https://api.casinoplaneta.info/bot$GROM_TOKEN/setMyDescription" \
-H 'Content-Type: application/json' \
-d '{"description":"Бот погоды. Отправьте название города.","language_code":"ru"}'Read a field back the same way, passing the language_code you want — omit it for the default:
bash
curl "https://api.casinoplaneta.info/bot$GROM_TOKEN/getMyDescription?language_code=ru"
# -> {"ok":true,"result":{"description":"Бот погоды. …"}}This is the same replace-not-merge, empty-code-fallback model as command lists — the two were designed to behave identically so you only learn the rule once. Setting a field with a language_code sets only that language; it never touches the default.
Where the profile is edited from
Today these are API calls. The conversational front-end — @GromCore's /setname, /setdescription, /setabouttext, /setuserpic — is not up yet; each of those commands maps to the method above. Set them over HTTP now; the chat UI is a later layer on the same calls.