Как вызвать бот Telegram для отправки сообщения - PullRequest
0 голосов
/ 16 июня 2019

Не могу понять, как заставить (запустить) локальный сервер с ботом-телеграммой отправить сообщение на канал.

Например, отправить уведомление пользователю с веб-сайта, где он зарегистрировался и подключил свою телеграмму. Предположим, что пользователь уже запустил диалог с ботом и готов получать от него сообщения.

У меня есть отдельный сервер, который может отправлять запросы на сервер с ботом, но я не могу понять, как получать и обрабатывать запросы на этом сервере telegram-bot.

Я использую библиотеку go telegram-bot-api, и в данный момент сервер использует метод длинного опроса вместо веб-хуков. Таким образом, он получает некоторые события API Telegram через канал обновления.

Мой код является лишь копией примера в telegram-bot-api golang lib git repo:

func main() {
    bot, err := tgbotapi.NewBotAPI("MyAwesomeBotToken")
    if err != nil {
        log.Panic(err)
    }

    bot.Debug = true

    log.Printf("Authorized on account %s", bot.Self.UserName)

    u := tgbotapi.NewUpdate(0)
    u.Timeout = 60

    updates, err := bot.GetUpdatesChan(u)

    for update := range updates {
        if update.Message == nil { // ignore any non-Message Updates
            continue
        }

        log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text)

        msg := tgbotapi.NewMessage(update.Message.Chat.ID, update.Message.Text)
        msg.ReplyToMessageID = update.Message.MessageID

        bot.Send(msg)
    }
}

Я ожидаю, что мой бот будет вызван (запущен) из стороннего сервиса, получит некоторые данные из него, сгенерирует сообщение и отправит его пользователю через чат.

В настоящее время моя реализация такова: бот получает сообщения от пользователя по каналу обновления, обрабатывает его и отправляет ответное сообщение.

1 Ответ

0 голосов
/ 17 июня 2019

telegram-bot-api отправляет сообщения в Telegram Bot API с использованием HTTP-запросов POST.

Подробнее здесь: https://github.com/go-telegram-bot-api/telegram-bot-api/blob/master/bot.go#L71

Вы можете просто инициализировать другой экземпляр BotAPI внутри логики сервера и использовать его для асинхронной отправки сообщений. Это не повлияет на активные длинные опросы или веб-хуки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...