package main import ( "log" "net/http" "os" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" "github.com/joho/godotenv" "worktimeBot/internal/bot" "worktimeBot/internal/db" "worktimeBot/pkg/i18n" ) func main() { // Load .env file if it exists (ignored when running inside Docker with env vars) _ = godotenv.Load() token := os.Getenv("BOT_TOKEN") dbPath := getEnvDefault("DB_PATH", "db.sqlite3") // Default HTTP client respects HTTP_PROXY env var automatically httpClient := http.DefaultClient botAPI, err := tgbotapi.NewBotAPIWithClient(token, tgbotapi.APIEndpoint, httpClient) if err != nil { log.Fatal(err) } dbStore, err := db.NewStore(dbPath) if err != nil { log.Fatal(err) } translator, _ := i18n.NewTranslator("en") handler := bot.NewHandler(botAPI, dbStore, translator) webhookURL := os.Getenv("BOT_WEBHOOK_URL") if webhookURL != "" { startWebhook(botAPI, handler, webhookURL) } else { // Fallback to long‑polling u := tgbotapi.NewUpdate(0) u.Timeout = 30 updates := botAPI.GetUpdatesChan(u) for update := range updates { if update.Message != nil { handler.HandleMessage(update) } } } } func getEnvDefault(key, defaultValue string) string { if val := os.Getenv(key); val != "" { return val } return defaultValue }