Для того, чтобы бот 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 #программирование #создание_бота