diff --git a/apps/bot/locales/ru.ftl b/apps/bot/locales/ru.ftl index a123e1e..b28e5f8 100644 --- a/apps/bot/locales/ru.ftl +++ b/apps/bot/locales/ru.ftl @@ -28,17 +28,18 @@ addcontact = .description = Добавить контакт клиента sharebot = .description = Поделиться ботом +subscribe = + .description = Приобрести Pro доступ +pro = + .description = Информация о вашем Pro доступе help = .description = Список команд и поддержка -subscribe = - .description = Оформить подписку -pro = - .description = Информация о Pro подписке commands-list = 📋 Доступные команды: • /addcontact — добавить контакт клиента • /sharebot — поделиться ботом - • /subscribe — оформить подписку + • /subscribe — приобрести Pro доступ + • /pro — информация о вашем Pro доступе • /help — список команд Откройте приложение кнопкой "Открыть", чтобы отредактировать свой профиль или создать запись @@ -92,16 +93,18 @@ err-with-details = ❌ Произошла ошибка err-limit-exceeded = 🚫 Слишком много запросов! Подождите немного -# Сообщения о подписке +# Сообщения о доступе msg-subscribe = - 👑 Подписка Pro: + 👑 Pro доступ: • Разблокирует неограниченное количество заказов msg-subscribe-success = ✅ Платеж успешно обработан! msg-subscribe-error = ❌ Произошла ошибка при обработке платежа -msg-subscription-active-until = 📅 Ваша подписка активна до { $date } -msg-subscription-active-days = 📅 Осталось еще { $days } дней вашей подписки -msg-subscribe-disabled = 🚫 Подписка отключена. Все ограничения сняты! Наслаждайтесь полным доступом! 🎉 +msg-subscription-active-until = 👑 Ваш Pro доступ активен до { $date } +msg-subscription-active-days = 👑 Осталось дней вашего Pro доступа: { $days } +msg-subscription-expired = + Ваш Pro доступ истек. + Воспользуйтесь командой /subscribe, чтобы получить неограниченное количество заказов +msg-subscribe-disabled = 🚫 Pro доступ отключен для всех. Ограничения сняты! Наслаждайтесь полным доступом! 🎉 # Информация о лимитах -msg-remaining-orders-this-month = 🧾 Доступно заказов в этом месяце: { $count } -msg-subscription-active-days = 📅 Осталось дней вашей подписки: { $days } \ No newline at end of file +msg-remaining-orders-this-month = 🧾 Доступно заказов в этом месяце: { $count } \ No newline at end of file diff --git a/apps/bot/src/bot/conversations/subscription.ts b/apps/bot/src/bot/conversations/subscription.ts index 0b04d4b..5ae2f6b 100644 --- a/apps/bot/src/bot/conversations/subscription.ts +++ b/apps/bot/src/bot/conversations/subscription.ts @@ -70,7 +70,7 @@ export async function subscription(conversation: Conversation, // создаём invoice return ctx.replyWithInvoice( - 'Оплата подписки', + 'Оплата Pro доступа', selectedPrice.description || '', JSON.stringify({ period: selectedPrice.period }), 'RUB', diff --git a/apps/bot/src/bot/features/pro.ts b/apps/bot/src/bot/features/pro.ts index 4dbe49e..aacd415 100644 --- a/apps/bot/src/bot/features/pro.ts +++ b/apps/bot/src/bot/features/pro.ts @@ -1,5 +1,6 @@ import { type Context } from '@/bot/context'; import { logHandle } from '@/bot/helpers/logging'; +import { combine } from '@/utils/messages'; import { SubscriptionsService } from '@repo/graphql/api/subscriptions'; import { Composer } from 'grammy'; @@ -19,10 +20,20 @@ feature.command('pro', logHandle('command-pro'), async (ctx) => { await subscriptionsService.getSubscription({ telegramId }); if (hasActiveSubscription && remainingDays > 0) { - return ctx.reply(ctx.t('msg-subscription-active-days', { days: remainingDays })); + return ctx.reply( + combine( + ctx.t('msg-subscription-active-days', { days: remainingDays }), + remainingDays === 0 ? ctx.t('msg-subscription-expired') : '', + ), + ); } - return ctx.reply(ctx.t('msg-remaining-orders-this-month', { count: remainingOrdersCount })); + return ctx.reply( + combine( + ctx.t('msg-remaining-orders-this-month', { count: remainingOrdersCount }), + remainingOrdersCount === 0 ? ctx.t('msg-subscription-expired') : '', + ), + ); }); export { composer as pro }; diff --git a/apps/web/app/(main)/pro/page.tsx b/apps/web/app/(main)/pro/page.tsx index 3c63d52..d068c65 100644 --- a/apps/web/app/(main)/pro/page.tsx +++ b/apps/web/app/(main)/pro/page.tsx @@ -31,7 +31,7 @@ export default async function ProPage() {

- Подписка{' '} + Доступ{' '} Pro @@ -39,7 +39,7 @@ export default async function ProPage() {

{hasActiveSubscription - ? 'Ваша подписка Pro активна!' + ? 'Ваш Pro доступ активен!' : 'Разблокируйте больше возможностей'}

@@ -58,7 +58,7 @@ export default async function ProPage() { variant={canUseTrial ? 'outline' : 'default'} > - Оформить подписку через бота + Приобрести Pro доступ через бота diff --git a/apps/web/components/profile/subscription-bar.tsx b/apps/web/components/profile/subscription-bar.tsx index 28c86a3..2d10cd3 100644 --- a/apps/web/components/profile/subscription-bar.tsx +++ b/apps/web/components/profile/subscription-bar.tsx @@ -22,7 +22,7 @@ export function SubscriptionInfoBar() { if (error) return null; - const title = isActive ? 'Подписка Pro активна' : 'Подписка неактивна'; + const title = isActive ? 'Pro доступ активен' : 'Pro доступ неактивен'; let description = 'Попробуйте бесплатно'; diff --git a/packages/graphql/api/orders.ts b/packages/graphql/api/orders.ts index 1e780d1..e062487 100644 --- a/packages/graphql/api/orders.ts +++ b/packages/graphql/api/orders.ts @@ -39,7 +39,7 @@ export const ERRORS = { ORDER_LIMIT_EXCEEDED_CLIENT: 'Достигнут лимит заказов у этого мастера на месяц. Попробуйте записаться позже или к другому мастеру.', ORDER_LIMIT_EXCEEDED_MASTER: - 'Достигнут лимит заказов на месяц. Оформите Pro подписку для продолжения работы.', + 'Достигнут лимит заказов на месяц. Оформите Pro доступ для продолжения работы.', OVERLAPPING_TIME: 'Время пересекается с другими заказами', SLOT_CLOSED: 'Слот закрыт', }; diff --git a/packages/graphql/api/subscriptions.ts b/packages/graphql/api/subscriptions.ts index 4ddf787..cb6d9fe 100644 --- a/packages/graphql/api/subscriptions.ts +++ b/packages/graphql/api/subscriptions.ts @@ -11,9 +11,9 @@ if (!dayjs.prototype.minMax) { } export const ERRORS = { - FAILED_TO_CREATE_TRIAL_SUBSCRIPTION: 'Не удалось создать пробную подписку', - SUBSCRIPTION_PRICES_NOT_FOUND: 'Цены подписки не найдены', - SUBSCRIPTION_SETTING_NOT_FOUND: 'Настройки подписки не найдены', + FAILED_TO_CREATE_TRIAL_SUBSCRIPTION: 'Не удалось оформить доступ к пробному периоду', + SUBSCRIPTION_PRICES_NOT_FOUND: 'Цены Pro доступа не найдены', + SUBSCRIPTION_SETTING_NOT_FOUND: 'Настройки Pro доступа не найдены', TRIAL_PERIOD_ALREADY_USED: 'Пробный период уже был использован', TRIAL_PERIOD_NOT_ACTIVE: 'Пробный период неактивен', TRIAL_PERIOD_NOT_FOUND: 'Пробный период не найден', @@ -60,7 +60,7 @@ export class SubscriptionsService extends BaseService { data: { amount: subscriptionPrice.amount, currency: 'RUB', - description: existingSubscription ? 'Продление подписки' : 'Новая подписка', + description: existingSubscription ? 'Продление Pro доступа' : 'Новая подписка', period: subscriptionPrice.period, source: GQL.Enum_Subscriptionhistory_Source.Payment, state: GQL.Enum_Subscriptionhistory_State.Success,