# Техническое задание на разработку чат-бота
1. Оператор самостоятельно создает контейнеры и добавляет в определенную папку файлы с доступами к VPN, которые бот будет отправлять клиентам. Файлы должны быть разделены по странам (Пункт 6).
2. Когда клиент начинает взаимодействовать с ботом, бот приветствует его и предлагает три кнопки: “Связаться с админом”, “Купить VPN” и "Проверить остаток подписки".
3. Если клиент выбирает “Связаться с админом”, бот предоставляет контактные данные администратора.
4. Если клиент выбирает “Купить VPN”, ему предлагается выбрать страну и срок подписки.
5. Цены за VPN подписку будут на все страны одинаковые и захардкожены в коде. Сроки подписки и цены следующие:
- 1 месяц - 100 рублей
- 6 месяцев - 550 рублей
- 12 месяцев - 1000 рублей
6. Бот будет определять страну, для которой сделан конфиг, по номеру (с 1 по 100 - Швейцария, с 101 по 200 - Нидерланды, с 201 по 300 - Германия). Конфиг страна => деапозон должен настраиваться в админ-боте в группе админов.
7. После выбора страны и срока, клиент производит оплату через Prime Payments (при условии, что у вас зарегистрирован магазин для оплаты).
8. После оплаты, чат-бот отправляет клиенту файл с доступом к VPN из списка, который был загружен оператором и соответствует выбранной стране.
9. Если файлы с доступами к VPN для определенной страны заканчиваются, бот должен уведомить администраторов о необходимости генерации новых контейнеров для этой страны.
10. Если клиент выбирает "Проверить остаток подписки", бот сообщает пользователю дату окончания его подписки.
11. Добавить кнопку "Тестовый период на 1 неделю", котоая будет давать доступ пользователю к VPN на 1 неделю. И при окончании подписки предложит оплатить на n период или отправт в чат сообщение об отключении vpn для данного пользователя
## Сценарий продления подписки
1. Уведомление о продлении: За 5 дней до окончания подписки, бот уведомляет клиента о необходимости продления и предоставляет ссылку на продление. В день окончания подписки повторяется уведомление.
2. Если пользователь не отключил к нему доступ - то спустя 5 дней после окончания подписки/тестового периода бот предложит ему продолжить и оплатить подписку.
3. Если клиент не продлевает подписку, бот отправляет сообщение администраторам с указанием того, какой контейнер нужно выключить.
4. Продление подписки: Когда клиент выбирает продлить подписку, бот предлагает ему опции для продления подписки, аналогично покупке новой подписки (выбор страны и срока подписки с соответствующими ценами). И добавляет кнопку "Продолжить существующую подписку", которая переводит пользователя сразу на оплату.
5. Перед оплатой подписки, бот предлагает клиенту возможность использовать промо-код, если есть, с кнопкой "Использовать промокод". Типы промо-кодов указаны в разделе "Промо-коды".
6. Оплата: Клиент производит оплату через интегрированную платежную систему Prime Payments.
7. Подтверждение продления: После успешной оплаты, бот отправляет клиенту подтверждение о продлении подписки, а также обновляет информацию о сроках действия подписки в базе данных.
## Дополнительные функции для администраторов
1. Администраторы могут генерировать промо-коды с фиксированным процентом скидки(список вариантов промо кодов указан в пункте "Промо-коды"). Промо-коды сохраняются в базе данных и могут быть выгружены в excel.
2. В админском чат-боте добавить возможность просмотра отчетов об использованных промо-кодов и оплатах. Отчеты должны включать информацию о количестве использованных промо-кодов, скидках, общей сумме оплат и других соответствующих данных.
3. Админ должен иметь возможность задавать конфиг "страна => деапозон номеров" в админ группе.
## Промо-коды
1. Есть 3 вида промо-кодов
- Одноразовый во всех смыслах, который генерируется 1 раз и используется 1 раз (не важно каким пользователем). Скидка 30% задается хардкодно.
- Многоразовый, который может использоваться всеми пользователями неограниченное количество раз - он привязывается к пользователю и дает ему пожизненно скидку -30%, но в то же время запрещает использовать другие промо-коды
- Многоразовый, который 1 пользователь может использовать 1 раз, но его могут использовать n-пользователей.
2. Нужно запретить суммировать скидки и промокоды при оплате.