big dik update: prompts and notify mode

This commit is contained in:
huker667 committed 2026-07-05 17:06:11 +03:00
1 parent 4c8e21fd42
commit 92a83cf810
6 files changed
+255 -49

No files matched your search

+56 -6
View File
@@ -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=[
[
@@ -240,6 +279,11 @@ async def settings_handler(event: Union[Message, CallbackQuery]):
text=f"модели ({models_count})", callback_data=f"models%{user_id}"
)
],
[
InlineKeyboardButton(
text=f"промпты ({prompts_count})", callback_data=f"prompts%{user_id}"
)
],
[
InlineKeyboardButton(
text=f"стрим: {stream_status}",
@@ -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}")],
]