2024-10-05 14:35:26 +00:00
|
|
|
|
from aiogram.filters.callback_data import CallbackData
|
|
|
|
|
from aiogram.types import InlineKeyboardButton
|
|
|
|
|
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
2024-10-09 20:50:46 +00:00
|
|
|
|
from db.db import *
|
2024-10-05 14:35:26 +00:00
|
|
|
|
|
|
|
|
|
models_description = {
|
2024-10-06 13:29:07 +00:00
|
|
|
|
"1o": "Это базовая модель ИИ, которая \"умеет думать\". Она хороша для выполнения повседневных задач, \
|
|
|
|
|
таких как анализ данных, обработка текста и создание отчетов. Она подходит для малого и среднего бизнеса, \
|
|
|
|
|
где важно автоматизировать рутинные задачи и получать быстрые результаты.\n\n\
|
2024-10-09 20:50:46 +00:00
|
|
|
|
Выберите тариф к модели 1о.\nОставшиеся токены: ",
|
2024-10-06 13:29:07 +00:00
|
|
|
|
"1o mini": "Уменьшенная версия 1о, которая также \"умеет думать\". Эта модель менее мощная, \
|
|
|
|
|
но зато работает быстрее на устройствах с ограниченными ресурсами, таких как смартфоны или небольшие компьютеры. \
|
|
|
|
|
Прекрасно подойдет для мобильных приложений и стартапов, где ресурсы ограничены, но нужны умные решения.\n\n\
|
2024-10-09 20:50:46 +00:00
|
|
|
|
Выберите тариф к модели 1о mini.\nОставшиеся токены: ",
|
2024-10-06 13:29:07 +00:00
|
|
|
|
"4o": "Это мощная модель ИИ, предназначенная для сложных и объемных задач. Она хорошо справляется \
|
|
|
|
|
с глубоким анализом больших данных, сложными прогнозами и инновационными бизнес-проектами. \
|
|
|
|
|
Идеальна для крупных компаний, требующих высокую производительность для динамичного принятия решений и стратегического анализа.\n\n\
|
2024-10-09 20:50:46 +00:00
|
|
|
|
Выберите тариф к модели 4о.\nОставшиеся токены: ",
|
2024-10-06 13:29:07 +00:00
|
|
|
|
"4o mini": "Уменьшенная версия модели 4о. Она сохраняет высокую мощность при меньшем использовании ресурсов. \
|
|
|
|
|
Подходит для сложных бизнес-задач в условиях ограниченных ресурсов, таких как аналитика в режиме реального времени \
|
|
|
|
|
на портативных и мобильных устройствах. Отличный выбор для бизнеса, который хочет получить максимум от своих технологий \
|
|
|
|
|
без больших затрат на оборудование.\n\n\
|
2024-10-09 20:50:46 +00:00
|
|
|
|
Выберите тариф к модели 4о.\nОставшиеся токены: "
|
2024-10-05 14:35:26 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
model_prices = {
|
|
|
|
|
"1o" : {
|
|
|
|
|
"base": {
|
|
|
|
|
"tokens": "60",
|
|
|
|
|
"amount": "2000"
|
|
|
|
|
},
|
|
|
|
|
"advanced": {
|
|
|
|
|
"tokens": "128",
|
|
|
|
|
"amount": "3500"
|
|
|
|
|
},
|
|
|
|
|
"pro": {
|
|
|
|
|
"tokens": "300",
|
|
|
|
|
"amount": "7500"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"1o mini": {
|
|
|
|
|
"base": {
|
|
|
|
|
"tokens": "50",
|
|
|
|
|
"amount": "900"
|
|
|
|
|
},
|
|
|
|
|
"advanced": {
|
|
|
|
|
"tokens": "100",
|
|
|
|
|
"amount": "1500"
|
|
|
|
|
},
|
|
|
|
|
"pro": {
|
|
|
|
|
"tokens": "270",
|
|
|
|
|
"amount": "2700"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"4o": {
|
|
|
|
|
"base": {
|
|
|
|
|
"tokens": "100",
|
|
|
|
|
"amount": "1500"
|
|
|
|
|
},
|
|
|
|
|
"advanced": {
|
|
|
|
|
"tokens": "150",
|
|
|
|
|
"amount": "2000"
|
|
|
|
|
},
|
|
|
|
|
"pro": {
|
|
|
|
|
"tokens": "303",
|
|
|
|
|
"amount": "3750"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"4o mini": {
|
|
|
|
|
"base": {
|
|
|
|
|
"tokens": "800",
|
|
|
|
|
"amount": "400"
|
|
|
|
|
},
|
|
|
|
|
"advanced": {
|
|
|
|
|
"tokens": "1650",
|
|
|
|
|
"amount": "650"
|
|
|
|
|
},
|
|
|
|
|
"pro": {
|
|
|
|
|
"tokens": "3300",
|
|
|
|
|
"amount": "1250"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
name_of_model = {
|
|
|
|
|
"base" : "Базовый",
|
|
|
|
|
"advanced": "Продвинутый",
|
|
|
|
|
"pro" : "Профессиональный"
|
|
|
|
|
}
|
|
|
|
|
|
2024-10-09 20:50:46 +00:00
|
|
|
|
class BuyCallBack(CallbackData, prefix="buy"):
|
|
|
|
|
name: str
|
|
|
|
|
option_of_model: str
|
|
|
|
|
tokens: str
|
|
|
|
|
amount: str
|
|
|
|
|
|
2024-10-05 14:35:26 +00:00
|
|
|
|
class PayCallBack(CallbackData, prefix="pay"):
|
2024-10-06 13:29:07 +00:00
|
|
|
|
name: str
|
2024-10-05 14:35:26 +00:00
|
|
|
|
option_of_model: str
|
|
|
|
|
tokens: str
|
|
|
|
|
amount: str
|
|
|
|
|
|
2024-10-09 20:50:46 +00:00
|
|
|
|
class ChooseCallBack(CallbackData, prefix="choose"):
|
|
|
|
|
name: str
|
|
|
|
|
|
|
|
|
|
async def get_model_page(*, page: int, name: str, user_id):
|
|
|
|
|
tokens = await get_current_model_tokens(user_id, name)
|
|
|
|
|
status = await get_current_model(user_id) == name
|
|
|
|
|
|
|
|
|
|
text: str = models_description[name] + str(tokens)
|
2024-10-05 14:35:26 +00:00
|
|
|
|
|
|
|
|
|
temp_kbds: InlineKeyboardBuilder = InlineKeyboardBuilder()
|
|
|
|
|
|
2024-10-06 13:29:07 +00:00
|
|
|
|
for option_name, item in model_prices[name].items():
|
2024-10-05 14:35:26 +00:00
|
|
|
|
option_name_rus, tokens, amount = name_of_model[option_name], item["tokens"], item["amount"]
|
2024-10-09 20:50:46 +00:00
|
|
|
|
temp_text = f"{name_of_model[option_name]} | {tokens} запросов"
|
2024-10-05 14:35:26 +00:00
|
|
|
|
temp_kbds.add(InlineKeyboardButton(
|
|
|
|
|
text=temp_text,
|
2024-10-09 20:50:46 +00:00
|
|
|
|
callback_data=BuyCallBack(
|
2024-10-06 13:29:07 +00:00
|
|
|
|
name=name,
|
2024-10-05 14:35:26 +00:00
|
|
|
|
option_of_model=option_name_rus,
|
|
|
|
|
tokens=tokens,
|
|
|
|
|
amount=amount
|
|
|
|
|
).pack()
|
|
|
|
|
))
|
|
|
|
|
|
2024-10-09 20:50:46 +00:00
|
|
|
|
temp_kbds.add(InlineKeyboardButton(
|
|
|
|
|
text="🟢 Выбрано" if status else "🔴 Не выбрано",
|
|
|
|
|
callback_data=ChooseCallBack(
|
|
|
|
|
name=name,
|
|
|
|
|
).pack()
|
|
|
|
|
))
|
|
|
|
|
|
2024-10-06 13:29:07 +00:00
|
|
|
|
return text, temp_kbds
|
2024-10-05 14:35:26 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|