Skip to content

feat(bot): make every setting changeable from the /settings menu - #19

Merged
maxbolgarin merged 1 commit into
mainfrom
claude/serene-fermi-blt9hm
Oct 10, 2026
Merged

maxbolgarin merged 1 commit into
mainfrom
claude/serene-fermi-blt9hm

Conversation

@maxbolgarin

Copy link
Copy Markdown
Owner

Summary

/settings had buttons only for the AI provider, model and key. The chat settings were a read-only list followed by a long line of slash commands, and the report format didn't appear at all. /help was one long wall of text.

  • /settings: settings are grouped into 📝 Reports, 💬 Telegram chats and 🤖 AI (whole bot). Each line shows the value in use, written out (Русский (ru), PDF document, Last week). Values that come from config are marked "(default)"; the old "ru (sticky) · default: en" wording is gone.
  • New sub-menus for 🌐 Language, 📄 Format, 🎛 Preset, 📅 Period and 🖼 Media. ✅ Confirm toggles in place and ✖ Close removes the keyboard. Each sub-menu ticks the current value and has a "Default" option.
  • Media lists everything a run actually reads. The old "none (sticky) · config: voice, videonote" read as if voice notes were off.
  • The preset menu leaves out presets that only the router picks (single_msg, video, website, …).
  • A tap carrying a value the menu never offers (old or forged callback data) is refused with a toast.
  • Chat settings are not limited to the primary owner. Each admin controls their own chat, and the AI rows are still owner-only.
  • /help: split into what you can send, ⚙️ Settings (pointing to /settings) and 🛠 Other. Commands are no longer wrapped in code formatting, so they're tappable.
  • /cancel also cancels a pending model-id prompt and says that nothing was changed.
  • Updated docs/bot.md, which listed /settings twice.

Related issue

n/a

Test plan

  • uv run pytest -q (2682 passed)
  • uv run ruff check .
  • uv run ruff format --check .
  • New tests: every chat setting has a root button, all callback data stays within 64 bytes, menus tick the current value, tap → sticky-value mapping, media toggling, forged values are refused, a tap persists and goes back to the overview, extra admins can change their own chat, Close removes the keyboard

Checklist

  • PR title uses a Conventional Commits prefix
  • Updated CLAUDE.md if architecture / invariants changed (n/a)
  • Added or updated tests for the change
  • No new network calls inside tests

🤖 Generated with Claude Code

https://claude.ai/code/session_016MU9E2LrWN3UesEfZQhhEg


Generated by Claude Code

/settings only offered buttons for the AI provider, model and key; the
per-chat settings were a read-only list with a wall of slash commands
under it, and the report format was missing from it entirely.

- Root menu shows the value in effect, grouped (Reports / Telegram
  chats / AI), with "(default)" instead of "x (sticky) · default: y".
- New sub-menus for language, format, preset, period and media; the
  confirm panel toggles in place; Close drops the keyboard.
- Media lists everything a run reads, instead of "none (sticky) ·
  config: voice, videonote", which read as if voice notes were off.
- /help is grouped into inputs, settings and other commands, and points
  at /settings.
- /cancel also aborts a pending model prompt and says so.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_016MU9E2LrWN3UesEfZQhhEg
@maxbolgarin
maxbolgarin merged commit 4cf4baa into main Oct 10, 2026
8 checks passed
@maxbolgarin
maxbolgarin deleted the claude/serene-fermi-blt9hm branch October 10, 2026 19:04
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 1.10.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants