Найти тему
Laboratory SARD

Использование библиотек в разработке ботов

https://unsplash.com/photos/vpOeXr5wmR4?utm_source=unsplash&utm_medium=referral&utm_content=creditShareLink
https://unsplash.com/photos/vpOeXr5wmR4?utm_source=unsplash&utm_medium=referral&utm_content=creditShareLink

Для того, чтобы бот Telegram мог воспринимать различные команды и выполнять функции, можно воспользоваться такими библиотеками, как npm для JavaScript. В использовании NPM есть несколько уже реализованных решений, поэтому был выбран node-telegram-bot-api. В нем реализована большая часть функциональности API, и он очень хорошо обрабатывает ответы. Эту библиотеку легко установить из консоли :

npm i node-telegram-bot-api --save

Теперь обновим класс Bot - он будет использовать экземпляр класса, экспортируемого node-telegram-bot-api, в качестве клиента для взаимодействия с API (интерфейсом) Telegram:

import TelegramBotClient from 'node-telegram-bot-api'

export default class Bot {

 constructor(token) {

   this.client = new TelegramBotClient(token, { polling: true })

 }

 start() {

   this.client.on('message', message => {

     console.log('Получил сообщение', сообщение)

   })

 }

}

Необходимо передать два параметра клиенту - токен довольно прост, это токен, который мы получили от @BotFather. Объект options настраивает клиента на опрос обновлений. У вашего бота есть два способа получать сообщения из Telegram. Первый - это использование вебхука. Можно настроить платформу на отправку сообщений в какую-либо конечную точку, и читать сообщения оттуда. Это чистое решение, но в то же время оно подразумевает больше конфигурации. Например, конечная точка должна быть доступна через HTTPS. Самоподписанные сертификаты работают, но их настройка все равно более трудна, чем использование опроса.

Метод опроса запрос в Telegram для получения обновлений. Если их нет, сервер Telegram будет просто ждать, пока не появится одно или пока не будет достигнут тайм-аут. Таким образом, сразу после получения нового обновления Telegram разрешит ожидающий запрос, и ваш бот получит его почти сразу.

Мы не хотим, чтобы токен был жестко закодирован и доступен каждому, кто имеет доступ к коду. Поэтому мы поместим токен в файл .env, например

BOT_TOKEN=123456789:abcdefghijklmnoprqstuvwxyz

Поскольку мы уже вызываем dotenv.load() в нашем файле index.js, у нас есть все, что находится в .env, в process.env. Поэтому мы обновим index.js, чтобы передать этот токен нашему экземпляру бота.

Пока все хорошо, наш бот регистрирует каждое полученное сообщение. Сделаем еще один шаг и заставим его повторять все, что он получает. Это довольно просто с помощью node-telegram-bot-api, необходио отправитьточный текст, который мы получили и в какой чат (тот, из которого мы его получили):

- console.log('Got a message', message)

+ this.client.on('message', message => {

+ this.client.sendMessage(message.chat.id, message.text)

+ })

#telegram #bot #программирование #создание_бота