Add PostgreSQL, user/squad management, remove private domains from docs

This commit is contained in:
tgvpn
2026-05-21 01:13:23 +03:00
parent d0dc8d5822
commit 5e3229e998
17 changed files with 1171 additions and 58 deletions
+28 -5
View File
@@ -1,10 +1,15 @@
package main
import (
"context"
"log"
"os"
"os/signal"
"syscall"
"telegramvpn/internal/bot"
"telegramvpn/internal/config"
"telegramvpn/internal/db"
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
"github.com/joho/godotenv"
@@ -18,22 +23,40 @@ func main() {
log.Fatal(err)
}
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
defer stop()
database, err := db.Connect(ctx, cfg.DatabaseURL)
if err != nil {
log.Fatal(err)
}
defer database.Close()
api, err := tgbotapi.NewBotAPI(cfg.BotToken)
if err != nil {
log.Fatalf("не удалось подключиться к Telegram: %v", err)
}
api.Debug = cfg.BotDebug
log.Printf("бот @%s запущен, админ ID %d, панель %q (%s)",
api.Self.UserName, cfg.TelegramAdminID, cfg.RemnawaveName, cfg.RemnawavePanelURL)
log.Printf("бот @%s запущен, админ ID %d, панель %q, postgres ok",
api.Self.UserName, cfg.TelegramAdminID, cfg.RemnawavePanelURL)
handler := bot.NewHandler(cfg, api)
handler := bot.NewHandler(cfg, api, database)
handler.RegisterCommands()
u := tgbotapi.NewUpdate(0)
u.Timeout = 60
for update := range api.GetUpdatesChan(u) {
handler.HandleUpdate(update)
for {
select {
case <-ctx.Done():
log.Println("остановка бота…")
return
case update, ok := <-api.GetUpdatesChan(u):
if !ok {
return
}
handler.HandleUpdate(update)
}
}
}