package main import ( "strconv" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" "github.com/bwmarrin/discordgo" "github.com/SevereCloud/vksdk/v2/api" ) // Получить имя пользователя VK по id func (b *Bridge) GetVKUserName(userID int) (string, error) { resp, err := b.VK.UsersGet(api.Params{"user_ids": userID}) if err != nil || len(resp) == 0 { return strconv.Itoa(userID), err } return resp[0].FirstName + " " + resp[0].LastName, nil } // Структура для хранения клиентов type Bridge struct { Telegram *tgbotapi.BotAPI Discord *discordgo.Session VK *api.VK } func NewBridge(telegramToken, discordToken, vkToken string) (*Bridge, error) { // Telegram tgBot, err := tgbotapi.NewBotAPI(telegramToken) if err != nil { return nil, err } // Discord dg, err := discordgo.New("Bot " + discordToken) if err != nil { return nil, err } // VK vk := api.NewVK(vkToken) return &Bridge{ Telegram: tgBot, Discord: dg, VK: vk, }, nil } // Отправка сообщения в Telegram func (b *Bridge) SendToTelegram(chatID int64, text string) error { msg := tgbotapi.NewMessage(chatID, text) _, err := b.Telegram.Send(msg) return err } // Отправка сообщения в Discord func (b *Bridge) SendToDiscord(channelID, text string) error { _, err := b.Discord.ChannelMessageSend(channelID, text) return err } // Отправка сообщения в VK func (b *Bridge) SendToVK(peerID int, text string) error { _, err := b.VK.MessagesSend(api.Params{ "peer_id": peerID, "message": text, "random_id": 0, }) return err }