diff --git a/README.md b/README.md index 7680c7d..fefa900 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,9 @@ The database will be saved in `./bot_db/media.db`. | Command | Description | |---|---| +| `/menu` | Show the available commands | | `/list` | Show all saved media | +| `/edit [search]` | Select a meme and edit its keywords (admin only) | | `/delete ` | Remove an entry (get ID from `/list`) | | `/cancel` | Cancel current add operation | diff --git a/bot.py b/bot.py index 6f0f9e0..3b1518e 100644 --- a/bot.py +++ b/bot.py @@ -62,28 +62,41 @@ class EditMedia(StatesGroup): waiting_for_new_keywords = State() +def menu_text(user_id: int) -> str: + if is_admin(user_id): + return ( + "Send me any photo, GIF, video, voice, or sticker.\n" + "I'll ask you for keywords next.\n\n" + "/list — show all saved memes\n" + "/edit [search] — edit keywords of a meme\n" + "/delete <id> — remove a meme by ID\n" + "/cancel — cancel current operation" + ) + return ( + "Use me inline: type @botname keyword in any chat.\n\n" + "/list — browse all saved memes" + ) + + # ── /start ─────────────────────────────────────────────────────────────────── @dp.message(Command("start")) async def cmd_start(msg: Message): if not is_allowed(msg.from_user.id): return - if is_admin(msg.from_user.id): - await msg.answer( - "Send me any photo, GIF, video, voice, or sticker.\n" - "I'll ask you for keywords next.\n\n" - "/list — show all saved memes\n" - "/edit [search] — edit keywords of a meme\n" - "/delete <id> — remove a meme by ID\n" - "/cancel — cancel current operation", - parse_mode="HTML", - ) - else: - await msg.answer( - "Use me inline: type @botname keyword in any chat.\n\n" - "/list — browse all saved memes", - parse_mode="HTML", - ) + await msg.answer( + f"{menu_text(msg.from_user.id)}\n/menu — show this list again", + parse_mode="HTML", + ) + + +# ── /menu ──────────────────────────────────────────────────────────────────── + +@dp.message(Command("menu")) +async def cmd_menu(msg: Message): + if not is_allowed(msg.from_user.id): + return + await msg.answer(menu_text(msg.from_user.id), parse_mode="HTML") # ── /cancel ──────────────────────────────────────────────────────────────────