package main import ( "log" "os" "strconv" "strings" ) func main() { log.Println("Go Chat Bridge запущен.") telegramToken := os.Getenv("TELEGRAM_TOKEN") discordToken := os.Getenv("DISCORD_TOKEN") if telegramToken == "" || discordToken == "" { log.Fatal("Необходимо задать переменные окружения TELEGRAM_TOKEN, DISCORD_TOKEN") } bridge, err := NewBridge(telegramToken, discordToken) 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 forward := func(text string, from string, sender string, media []string) { // Собираем итоговый текст с медиа URL, если есть msg := text if len(media) > 0 { if msg != "" { msg += "\n" } msg += strings.Join(media, "\n") } log.Printf("[Bridge] Пересылка сообщения от %s (%s): %s", from, sender, msg) switch from { case "telegram": // Для Discord отправляем файлы, если есть, иначе текст if discordChannelID != "" { if len(media) > 0 { files, derr := bridge.DownloadFiles(media) if derr == nil && len(files) > 0 { _ = bridge.SendFilesToDiscord(discordChannelID, files, "[TG] "+sender+": "+text) bridge.CleanupFiles(files) } else { _ = bridge.SendToDiscord(discordChannelID, "[TG] "+sender+": "+msg) } } else { _ = bridge.SendToDiscord(discordChannelID, "[TG] "+sender+": "+msg) } } case "discord": // Для Telegram отправляем файлы, если есть, иначе текст if telegramChatID != "" { if id, err := strconv.ParseInt(telegramChatID, 10, 64); err == nil { if len(media) > 0 { files, derr := bridge.DownloadFiles(media) if derr == nil && len(files) > 0 { _ = bridge.SendFilesToTelegram(id, files, "[DS] "+sender+": "+text) bridge.CleanupFiles(files) } else { _ = bridge.SendToTelegram(id, "[DS] "+sender+": "+msg) } } else { _ = bridge.SendToTelegram(id, "[DS] "+sender+": "+msg) } } } } } bridge.StartTelegramListener(func(text string, sender string, media []string) { forward(text, "telegram", sender, media) }) bridge.StartDiscordListener(discordChannelID, func(text string, sender string, media []string) { forward(text, "discord", sender, media) }) log.Println("Chat Bridge запущен и работает") select {} // Бесконечный цикл для поддержания работы программы }