package main import ( "log" "os" "strconv" ) func main() { log.Println("Go Chat Bridge запущен.") telegramToken := os.Getenv("TELEGRAM_TOKEN") discordToken := os.Getenv("DISCORD_TOKEN") vkToken := os.Getenv("VK_TOKEN") if telegramToken == "" || discordToken == "" || vkToken == "" { log.Fatal("Необходимо задать переменные окружения TELEGRAM_TOKEN, DISCORD_TOKEN, VK_TOKEN") } bridge, err := NewBridge(telegramToken, discordToken, vkToken) if err != nil { log.Fatalf("Ошибка инициализации Bridge: %v", err) } log.Println("Bridge успешно инициализирован:", bridge) // Получаем ID чатов/каналов из переменных окружения telegramChatID := os.Getenv("TELEGRAM_CHAT_ID") // int64 discordChannelID := os.Getenv("DISCORD_CHANNEL_ID") // string vkPeerID := os.Getenv("VK_PEER_ID") // int forward := func(text string, from string) { log.Printf("[Bridge] Пересылка сообщения от %s: %s", from, text) // Определяем источник и рассылаем в остальные платформы switch { case from == "telegram": // В Discord и VK if discordChannelID != "" { _ = bridge.SendToDiscord(discordChannelID, "[TG] "+text) } if vkPeerID != "" { // конвертация vkPeerID в int if id, err := strconv.Atoi(vkPeerID); err == nil { _ = bridge.SendToVK(id, "[TG] "+text) } } case from == "discord": // В Telegram и VK if telegramChatID != "" { if id, err := strconv.ParseInt(telegramChatID, 10, 64); err == nil { _ = bridge.SendToTelegram(id, "[DS] "+text) } } if vkPeerID != "" { if id, err := strconv.Atoi(vkPeerID); err == nil { _ = bridge.SendToVK(id, "[DS] "+text) } } case from == "vk": // В Telegram и Discord if telegramChatID != "" { if id, err := strconv.ParseInt(telegramChatID, 10, 64); err == nil { _ = bridge.SendToTelegram(id, "[VK] "+text) } } if discordChannelID != "" { _ = bridge.SendToDiscord(discordChannelID, "[VK] "+text) } } } bridge.StartTelegramListener(func(text, _ string) { forward(text, "telegram") }) bridge.StartDiscordListener(func(text, _ string) { forward(text, "discord") }) bridge.StartVKListener(func(text, _ string) { forward(text, "vk") }) select {} // Блокируем main, чтобы слушатели работали }