Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Collapse
exlends
Категории
  1. Home
  2. Categories
  3. Языки программирования
  4. GoLang
  5. Пишем Telegram-бот на Go

Пишем Telegram-бот на Go

Scheduled Pinned Locked Moved GoLang
golangtelegrambot
3 Posts 2 Posters 115 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • kirilljsxK Online
    kirilljsxK Online
    kirilljsx
    js
    wrote on last edited by
    #1

    Сегодня создадим простого Telegram-бота на языке Go, который будет отвечать на команду /start сообщением “Привет мир!”.

    Первое что нам понадобится это установить зависимости, надеюсь что у вас Go уже установлен?

    Для работы используем библиотеку go-telegram-bot-api. Установите её:

    go get github.com/go-telegram-bot-api/telegram-bot-api/v5
    

    Далее создаем файл main.go и вставьте следующий код:

    package main
    
    import (
        "log"
    
        tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
    )
    
    func main() {
        // Замените "YOUR_BOT_TOKEN" на токен вашего бота
        bot, err := tgbotapi.NewBotAPI("YOUR_BOT_TOKEN")
        if err != nil {
            log.Panic(err)
        }
    
        bot.Debug = false // Включите true для отладки
    
        // Настраиваем параметры получения обновлений
        updateConfig := tgbotapi.NewUpdate(0)
        updateConfig.Timeout = 60 // Таймаут ожидания обновлений (в секундах)
    
        // Получаем обновления
        updates := bot.GetUpdatesChan(updateConfig)
    
        // Обрабатываем входящие сообщения
        for update := range updates {
            if update.Message != nil && update.Message.IsCommand() {
                // Проверяем команду /start
                if update.Message.Command() == "start" {
                    // Формируем ответ
                    msg := tgbotapi.NewMessage(update.Message.Chat.ID, "Привет!")
                    msg.ReplyToMessageID = update.Message.MessageID
    
                    // Отправляем сообщение
                    if _, err := bot.Send(msg); err != nil {
                        log.Panic(err)
                    }
                }
            }
        }
    }
    

    p.s. честно говоря на питоне слегка попроще писать ботов, но да ладно едем дальше))

    Теперь давайте запустим нашего бота, для этого не забудьте заменить YOUR_BOT_TOKEN, на токен вашего бота (его выдает BotFather при создании бота).

    Запустим бота:

    go run main.go
    

    После перейдите в телегу и напишите вашему боту в Telegram команду /start. Он ответит “Привет!”.

    Ну и в принципе все! Теперь можно придумывать всякие штучки, программировать бота как душе угодно.
    Я уже писал про бота на питоне в предидущем посте если кому-то интересно - ссылка

    1 Reply Last reply
    0
    • MugiwaraM Offline
      MugiwaraM Offline
      Mugiwara
      wrote on last edited by
      #2

      Ну, статья, конечно, интересная, но как-то всё слишком поверхностно. Видимо, автор решил, что мы все уже знаем, как создать бота в Telegram, и просто пропустил базовые шаги типа “как получить токен через BotFather”. Окей, ладно, предположим, что это “домашнее задание” для читателя.

      А выбор go-telegram-bot-api вообще остался загадкой. Это типа потому что она первая в выдаче Google? Насколько я знаю, есть альтернативы (например, telebot), которые выглядят чуть более дружелюбно. Или может, автор просто фанат этой либы? 😅

      Кстати, про производительность Go — да, звучит красиво, но давайте честно: сколько из нас пишут ботов, которые обрабатывают миллионы запросов в секунду? Для большинства задач Python с его python-telegram-bot справится на ура, и писать будет в разы быстрее. Но если хочется помучиться с типизацией и компиляцией — то да, Go ваш выбор!

      В целом, за пример спасибо, хотя код мог быть и покомпактнее. Если кто-то уже наколхозил callback-кнопки или inline-режим, буду рад глянуть готовый пример. А то самому писать лень, а копипастить — это святое. 🙃

      kirilljsxK 1 Reply Last reply
      0
      • MugiwaraM Mugiwara

        Ну, статья, конечно, интересная, но как-то всё слишком поверхностно. Видимо, автор решил, что мы все уже знаем, как создать бота в Telegram, и просто пропустил базовые шаги типа “как получить токен через BotFather”. Окей, ладно, предположим, что это “домашнее задание” для читателя.

        А выбор go-telegram-bot-api вообще остался загадкой. Это типа потому что она первая в выдаче Google? Насколько я знаю, есть альтернативы (например, telebot), которые выглядят чуть более дружелюбно. Или может, автор просто фанат этой либы? 😅

        Кстати, про производительность Go — да, звучит красиво, но давайте честно: сколько из нас пишут ботов, которые обрабатывают миллионы запросов в секунду? Для большинства задач Python с его python-telegram-bot справится на ура, и писать будет в разы быстрее. Но если хочется помучиться с типизацией и компиляцией — то да, Go ваш выбор!

        В целом, за пример спасибо, хотя код мог быть и покомпактнее. Если кто-то уже наколхозил callback-кнопки или inline-режим, буду рад глянуть готовый пример. А то самому писать лень, а копипастить — это святое. 🙃

        kirilljsxK Online
        kirilljsxK Online
        kirilljsx
        js
        wrote on last edited by
        #3

        @Mugiwara Ну ты душный конечно, go-telegram-bot-api я использую лишь потому что уже работал с ним, а если хочется дженериков и прочих финтов бери - telebot.

        А по поводу получения токена, тут уж извините! BotFather - 3 команды написать вон тебе Яндекс Алиса выдаст сразу как это сделать.

        Готовый пример будет попозже ))

        1 Reply Last reply
        0

        Категории

        • Главная
        • Новости
        • Фронтенд
        • Бекенд
        • Языки программирования

        Контакты

        • Сотрудничество
        • info@exlends.com
        • Наш чат
        • Наш ТГ канал

        © 2024 - 2025 ExLends, Inc. Все права защищены.

        Политика конфиденциальности
        • Login

        • Don't have an account? Register

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups