diff options
Diffstat (limited to 'commands.py')
| -rw-r--r-- | commands.py | 62 |
1 files changed, 56 insertions, 6 deletions
diff --git a/commands.py b/commands.py index 69fa03d..70eeb12 100644 --- a/commands.py +++ b/commands.py @@ -29,7 +29,7 @@ from supergenerator import * router = Router() -commands = ["/stats", "/broadcast", "/ben", "/reporn", "/start", "/prompt", "/config", "/settings", "/clear"] +commands = ["/stats", "/broadcast", "/ben", "/reporn", "/start", "/prompt", "/config", "/settings", "/clear", "/stop"] @router.message(Command("stats")) async def stats_handler(message: Message): @@ -40,15 +40,18 @@ async def stats_handler(message: Message): models = Counter() streams = Counter() calls = Counter() + prompts = Counter() for data in users.values(): if isinstance(data, dict): models[data.get("model")] += 1 streams[data.get("stream")] += 1 calls[data.get("call")] += 1 + prompts[data.get("prompt")] += 1 - top_models = models.most_common(3) - top_streams = streams.most_common(3) + top_models = models.most_common(5) + top_streams = streams.most_common(2) + top_prompts = prompts.most_common(5) text = [ "✅ *общая статистика*", @@ -58,12 +61,14 @@ async def stats_handler(message: Message): f"🙏ген в инлайне: {get_stats('stats/inline')}", f"🤝ben: {get_stats('stats/ben')}", f"🤝reporn: {get_stats('stats/reporn')}", - "🥺топ моделей:", + "🥺топ 5 моделей:", *(f"- `{m}`: {c}" for m, c in top_models), "✍️топ режимов стрима:", *(f"- `{s}`: {c}" for s, c in top_streams), "👀топ режимов вызова:", *(f"- `{c}`: {n}" for c, n in calls.most_common()), + "📝топ 5 промптов:", + *(f"- `{c}`: {n}" for c, n in prompts.most_common()), ] await message.reply("\n".join(text)) @@ -79,7 +84,7 @@ async def broadcast_handler(message: Message): if not text: return await message.reply("🚫 напиши текст после команды ало.") - users = get_all_user_ids() + users = get_all_user_ids(only_notify=True) success = 0 failed = 0 @@ -100,6 +105,17 @@ async def broadcast_handler(message: Message): ) +@router.message(Command("stop")) +async def stop_handler(message: Message): + if message.sender_chat: + user_id = message.sender_chat.id + else: + user_id = message.from_user.id + + config = get_user_config(user_id) + set_user_config(user_id, config.get("model"), config.get("stream"), config.get("call"), config.get("prompt"), "net") + await message.reply("✅ *рассылка успешно отключена!* чтобы включить её обратно:\n/settings --> рассылка") + @router.message(Command("ben")) async def start_handler(message: Message): if message.chat.type in [ChatType.GROUP, ChatType.SUPERGROUP]: @@ -179,15 +195,30 @@ async def start_handler(message: Message): @router.message(Command("prompt")) async def prompt_handler(message: Message): + if message.sender_chat: + user_id = message.sender_chat.id + else: + user_id = message.from_user.id + config = get_user_config(user_id) + system_prompt_name = config["prompt"] + if system_prompt_name in SYSTEM_PROMPTS: + system_prompt = SYSTEM_PROMPTS[system_prompt_name] + else: + await message.reply( + f"🤝 произошла ошибка при отображении промпта `{system_prompt_name}`\n*для фото*: ```prompt\n{IMAGE_PROMPT}```изменить системный промпт узбекгпт пока что нельзя." + ) + return + if PROMPT_COMMAND: await message.reply( - f"🤝 *текущий системный промпт узбекГПТ*: ```prompt\n{SYSTEM_PROMPT}```*для фото*: ```prompt\n{IMAGE_PROMPT}```изменить системный промпт узбекгпт пока что нельзя." + f"🤝 *ваш выбранный промпт* `{system_prompt_name}`: ```prompt\n{system_prompt}```\n*для фото*: ```prompt\n{IMAGE_PROMPT}```\nизменить системный промпт узбекгпт пока что нельзя." ) else: if SHOW_ACC_MSG: await message.reply( "🚫 *данный команда отключен в этом боте.* попросите владельца включить🤝" ) + return @router.message(Command("config")) @@ -215,6 +246,7 @@ async def settings_handler(event: Union[Message, CallbackQuery]): config = get_user_config(user_id) models_count = sum(len(models) for models in MODELS.values()) + prompts_count = len(SYSTEM_PROMPTS) if config["stream"] == "native": stream_status = "натив" @@ -233,6 +265,13 @@ async def settings_handler(event: Union[Message, CallbackQuery]): call_status = "net" call_cb = "da" + if config["notify"] == "da": + notify_status = "da" + notify_cb = "net" + else: + notify_status = "net" + notify_cb = "da" + keyboard = InlineKeyboardMarkup( inline_keyboard=[ [ @@ -242,6 +281,11 @@ async def settings_handler(event: Union[Message, CallbackQuery]): ], [ InlineKeyboardButton( + text=f"промпты ({prompts_count})", callback_data=f"prompts%{user_id}" + ) + ], + [ + InlineKeyboardButton( text=f"стрим: {stream_status}", callback_data=f"set_stream%{user_id}%{stream_cb}", ) @@ -252,6 +296,12 @@ async def settings_handler(event: Union[Message, CallbackQuery]): callback_data=f"set_call%{user_id}%{call_cb}", ) ], + [ + InlineKeyboardButton( + text=f"рассылка: {notify_status}", + callback_data=f"set_notify%{user_id}%{notify_cb}", + ) + ], [InlineKeyboardButton(text="донат", callback_data=f"donate%{user_id}")], [InlineKeyboardButton(text="о боте", callback_data=f"about%{user_id}")], ] |