Как написать Telegram бота на JavaScript? - коротко
Чтобы создать Telegram-бота на JavaScript, можно использовать библиотеку node-telegram-bot-api. Установите её с помощью npm (npm install node-telegram-bot-api), затем создайте бота и реализуйте обработку сообщений с помощью обратного вызова onText.
Как написать Telegram бота на JavaScript? - развернуто
Создание Telegram-бота с использованием JavaScript - это процесс, который включает несколько ключевых этапов: создание аккаунта в BotFather, настройка сервера для обслуживания запросов бота и написание кода на JavaScript. В этом ответе мы рассмотрим каждый из этих этапов подробно.
Создание аккаунта в BotFather
Первый шаг на пути к созданию Telegram-бота - это регистрация бота с помощью BotFather, официального бота для управления Telegram-ботами. Для этого вам нужно:
- Открыть Telegram и найти BotFather по имени.
- Начать диалог с BotFather и выполнить команду
/newbot
. - Следовать инструкциям, предоставленным BotFather, чтобы создать нового бота. Вам нужно будет придумать имя для вашего бота и указать его username (например,
my_bot_username
). - После успешного создания бота вы получите токен доступа, который будет использоваться для взаимодействия с Telegram API. Сохраните этот токен, так как он вам понадобится на следующих этапах.
Настройка сервера
Для обслуживания запросов бота необходимо настроить сервер, который будет принимать и обрабатывать HTTP-запросы от Telegram. Для этого можно использовать различные платформы, такие как Heroku, Glitch или собственный сервер. В данном случае мы рассмотрим настройку на Heroku, так как это простой и популярный способ для начала.
- Установите Heroku CLI (Command Line Interface) на вашем компьютере.
- Создайте новый проект в Heroku:
heroku create my-telegram-bot
- Клонируйте репозиторий и перейдите в директорию вашего проекта:
git clone https://git.heroku.com/my-telegram-bot.git cd my-telegram-bot
-
Создайте файл
server.js
и добавьте в него следующий код:const express = require('express'); const bodyParser = require('body-parser'); const app = express(); app.use(bodyParser.json()); app.post('/webhook', (req, res) => { const message = req.body; console.log(message); res.sendStatus(200); }); const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Server is running on port ${PORT}`); });
- Создайте файл
package.json
и добавьте в него следующие зависимости:{ "name": "my-telegram-bot", "version": "1.0.0", "description": "", "main": "server.js", "scripts": { "start": "node server.js" }, "author": "", "license": "ISC", "dependencies": { "body-parser": "^1.19.0", "express": "^4.17.1" } }
- Запустите сервер локально для тестирования:
npm install node server.js
- Если все работает корректно, разверните приложение на Heroku:
git add . git commit -m "Initial commit" git push heroku master
Написание кода на JavaScript
Теперь, когда ваш сервер настроен и работает, вы можете начать писать код для обработки сообщений от Telegram. Для этого вам нужно будет использовать библиотеку axios
для взаимодействия с Telegram API.
- Установите
axios
:npm install axios
-
Обновите ваш файл
server.js
, чтобы добавить логику для обработки сообщений:const express = require('express'); const bodyParser = require('body-parser'); const axios = require('axios'); const app = express(); const TOKEN = 'YOUR_BOT_TOKEN'; app.use(bodyParser.json()); app.post('/webhook', async (req, res) => { const message = req.body; console.log(message); if (message.message) { const chatId = message.message.chat.id; const text = message.message.text; await axios.post(`https://api.telegram.org/bot${TOKEN}/sendMessage`, { chat_id: chatId, text: `You said: ${text}` }); } res.sendStatus(200); }); const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Server is running on port ${PORT}`); });
Установка вебхука
Последний шаг - это установка вебхука для вашего бота. Это позволит Telegram отправлять запросы на ваш сервер при получении новых сообщений. Для этого выполните следующую команду в терминале:
heroku urls | grep -o 'https.*' > url.txt
Затем отправьте токен вашего бота и URL вебхука на сервер Telegram:
const TOKEN = 'YOUR_BOT_TOKEN';
const WEBHOOK_URL = `https://your-heroku-app.herokuapp.com/webhook`;
axios.post(`https://api.telegram.org/bot${TOKEN}/setWebhook`, { url: WEBHOOK_URL });
Теперь ваш Telegram-бот написанный на JavaScript готов к работе. Вы можете расширять функциональность бота, добавляя новые обработчики для различных типов сообщений и команд.