aboutsummaryrefslogtreecommitdiff
path: root/commands.py
diff options
context:
space:
mode:
authorhuker667 <huker@tuta.io>2026-07-05 17:06:11 +0300
committerhuker667 <huker@tuta.io>2026-07-05 17:06:11 +0300
commit92a83cf8105daae12a8e5442d48003d40490e52e (patch)
tree3d58c887bed2705e57b7b83d2952175b10b077e8 /commands.py
parent4c8e21fd4287c3e26ca470c520d9d234ef2da450 (diff)
downloaduzbekgpt-92a83cf8105daae12a8e5442d48003d40490e52e.tar.gz
uzbekgpt-92a83cf8105daae12a8e5442d48003d40490e52e.tar.bz2
uzbekgpt-92a83cf8105daae12a8e5442d48003d40490e52e.zip
big dik update: prompts and notify mode
Diffstat (limited to 'commands.py')
-rw-r--r--commands.py62
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}")],
]