Telegram бот для заказа VPN

Дисклеймер

Использование VPN должно соответствовать законам Российской Федерации и исключать любые вредоносные действия, массовые рассылки или нарушения законодательства.

Несколько слов

Из-за известных проблем в моей стране, возросла потребность в качественном VPN. На рынке было много подобных сервисов, но все они были либо дорогими, либо качество у них было на уровне бесплатных. Поначалу я использовал Wireguard VPN который настраивался вручную и это было неудобно, клиентов было уже достаточно и я решил что нужно двигаться дальше. На просторах интернета я нашел OpenSource проект с красивым и простым web интерфейсом. Но время шло и мне это тоже наскучило. Я подумывал сделать Telegram бота, чтобы это всё автоматизировать и да у меня это в очередной раз получилось. Я написал свою библиотеку для работы с wg-easy: wg-easy-wrapper и 3x-ui. А далее оставалось только сделать Telegram бота. И спустя месяцы я уже выкатил стабильную сборку на прод и конверсия клиентов возросла в 1000 %. Это самый успешный коммерческий проект, который я создал.

Как реализован?

Как обычные Telegram боты. Использовал несколько паттернов программирования, а именно: Наблюдатель и Фабрику. Наблюдатель я использовал для взаимодействия с API wg-easy/3x-ui. Включить/выключить/создать config и многое другое.

Часть кода для работы наблюдателя

public interface ListenerAdapter {

    void onDisableClient(@NotNull ClientState clientState, UpdateController updateController);
    void onEnableClient(@NotNull ClientState clientState, UpdateController updateController);
    void onDeleteClient(@NotNull ClientState clientState, UpdateController updateController);
    void onExtend(@NotNull BillingData billingData, UpdateController updateController);
    void onBuy(@NotNull BillingData billingData, UpdateController updateController);
    void onRefill(@NotNull BillingData billingData, UpdateController updateController);
    void onBillExpired(@NotNull BillingData billingData);
    void onRenewal(@NotNull ClientRenewal clientRenewal, UpdateController updateController);
    void onVPNExpire(@NotNull ClientWg clientWg, UpdateController updateController);
    void onLinked(@NotNull ClientChatId clientChatId, UpdateController updateController);
    String onCreate(@NotNull CreateConfig createConfig, UpdateController updateController);
}

А хоть картинки то покажешь?

Да.

Вот UML диаграмма работы бота. (Устарела немного)


Панель управления конфигом


Скачивание конфига для WireGuard



14.01.2023