golang telegram
В этой статье вы узнаете, как легко установить связь между вашим ботом и программой, написанной на языке программирования Golang.
Цели
Ваш бот будет обрабатывать два возможных варианта:
- Словарь: вы отправляете слово, а бот присылает вам различные значения, основанные на классификации слова по частям речи
- Информация об авторе: отвечает на запрос информации об авторе
Создание Telegram-бота
Первое, что вам следует сделать, это создать бота в своём аккаунте Telegram. Для этого вам нужно будет найти в Телеграмме BotFather и отправить ему команду /newbot, предварительно выбрав имя для вашего бота. После этого вы получите токен. Этот токен очень важен, он как пароль для управления вашим ботом.
Первые шаги
В Telegram существуют серверы, которые работают как промежуточное программное обеспечение между чатами и приложением. Они очень похожи на почтовое отделение, но вместо почтового индекса здесь у вас есть chat_id.
Вы должны создать структуру для своего бота, чтобы он мог конкретно отвечать на запросы пользователей. Итак, мы создадим структуру для обработки запросов от Telegram.
Здесь вы можете посмотреть другие поля, включённые в запрос: https://core.telegram.org/bots/api#update
Вы должны изменить “YOUR_TOKEN” на токен, который предоставит вам BotFather, поэтому “bot” + YOUR_TOKEN.
Но... что он будет делать?
Легко понять, что каждый раз, когда запускается обработчик, это означает, что если вы отправляете сообщение внутри чата со своим ботом (да, вы должны открыть чат с созданным вами ботом) — он ответит вам: Hello World.
Внедрение вашего бота “Hello World”
Я должен выразить огромную благодарность автору https://www.sohamkamani.com/golang/telegram-bot / для этого урока, потому что он очень помог мне понять, как мы можем создать бота и развернуть его.
- Установите ngrok отсюда https://ngrok.com/download
- После установки вы запускаете на своем терминале следующую команду:
3. Теперь вы должны иметь возможность видеть свой общедоступный IP:
В данном случае это: https://d860-85-245-152-103.eu.ngrok.io
4. Откройте терминал заново и запустите:
(следует добавить после “bot” ваш личный токен)
После запуска этой команды вы должны увидеть:
Достаточно быстро и легко создать общедоступный IP-адрес и подключиться к вашему локальному IP 3000. Это не производственное решение, потому что ngrok позволяет вам иметь один и тот же общедоступный IP-адрес только в течение 2 часов, используя бесплатный доступ. Но в любом случае, это действительно полезно знать для вашего развития.
Протестируйте вашего бота
Зайдите в чат своего бота и напишите что-нибудь, и бот ответит вам ”Hello Word".
Пример использования словаря
Мы будем использовать FREE DICTIONARY API, https://dictionaryapi.dev /. Это действительно полный API, который предоставляет нам информацию о: значениях, синонимах, антонимах, частях речи и т.д. Чтобы использовать это, мы должны создать запрос к API, подобный приведённому ниже примеру:
В качестве примера, чтобы получить определение английского слова hello, вы можете отправить запрос наhttps://api.dictionaryapi.dev/api/v2/entries/en/hello
Для этого урока я решил использовать только значения слова, но идея будет заключаться в том, чтобы получить одно определение для каждой части речи. Например, если мы выберем слово TIME, API найдет 3 части речи, и первое определение для каждой будет:
- noun: Неизбежное продвижение в будущее с прохождением настоящих и прошлых событий.
- verb: Измерять или записывать время, продолжительность или скорость.
- interjection: напоминание судьи игрокам продолжить игру после паузы.
Итак, в этом случае сообщение должно отображаться следующим образом:
Код для этого:
В этом фрагменте кода у нас есть 3 функции и 1 структура.
Я объясню, как работает этот фрагмент кода:
- wordsPlay(chatId int64, string_input string) - это основная функция данного варианта использования. Создаёт URL-адрес для запроса.
- getWordData(url string) получает URL и запрашивает API, после получения результата создаёт структуру из ранее определённой структуры ответа.
- Основная функция (wordsPlay) проверяет, является ли результат из Dictionary API действительным, если нет, отправляет сообщение с надписью:
Если результат действителен, то вызывает функцию для форматирования выходных данных.
4. formatResponse(response Response) получает объект Response, а затем создаёт строку, используя значения для каждой из найденных частей речи:
5. Отправляет ответ боту, используя chat_id
Чтобы этот код заработал, нам нужно обновить код обработчика, но давайте реализуем авторский вариант использования. В этом простом случае мы хотим ответить, указав только имя автора бота и местоположение:
Чтобы всё сработало, нам нужно создать записи для функций. Это означает, что нам нужно определить, когда мы должны вызывать “wordsPlay”, а когда “author”. После скриншотов вы сможете увидеть полный код.
Полный код
Ваши последующие шаги
Вы могли бы создать бота, который будет выдавать синонимы для необходимых слов. Это очень помогло бы вам при написании писем, сообщений или любых других видов текстов.
Статья была взята из этого источника:
Для чего создавать дополнительный слой в виде API? Это все можно было написать в одном софте, если было сложно интегрировать go-telegram-bot-api или написать собственную либу взаимодействия, то для чего писать статью?
По сути статья не про бот на go, статья про мидлварь на go ¯\_(ツ)_/¯