Как написать Telegram бота на JavaScript?

Как написать 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-ботами. Для этого вам нужно:

  1. Открыть Telegram и найти BotFather по имени.
  2. Начать диалог с BotFather и выполнить команду /newbot.
  3. Следовать инструкциям, предоставленным BotFather, чтобы создать нового бота. Вам нужно будет придумать имя для вашего бота и указать его username (например, my_bot_username).
  4. После успешного создания бота вы получите токен доступа, который будет использоваться для взаимодействия с Telegram API. Сохраните этот токен, так как он вам понадобится на следующих этапах.

Настройка сервера

Для обслуживания запросов бота необходимо настроить сервер, который будет принимать и обрабатывать HTTP-запросы от Telegram. Для этого можно использовать различные платформы, такие как Heroku, Glitch или собственный сервер. В данном случае мы рассмотрим настройку на Heroku, так как это простой и популярный способ для начала.

  1. Установите Heroku CLI (Command Line Interface) на вашем компьютере.
  2. Создайте новый проект в Heroku:
    heroku create my-telegram-bot
    
  3. Клонируйте репозиторий и перейдите в директорию вашего проекта:
    git clone https://git.heroku.com/my-telegram-bot.git
    cd my-telegram-bot
    
  4. Создайте файл 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}`);
    });
    
  5. Создайте файл 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"
     }
    }
    
  6. Запустите сервер локально для тестирования:
    npm install
    node server.js
    
  7. Если все работает корректно, разверните приложение на Heroku:
    git add .
    git commit -m "Initial commit"
    git push heroku master
    

Написание кода на JavaScript

Теперь, когда ваш сервер настроен и работает, вы можете начать писать код для обработки сообщений от Telegram. Для этого вам нужно будет использовать библиотеку axios для взаимодействия с Telegram API.

  1. Установите axios:
    npm install axios
    
  2. Обновите ваш файл 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 готов к работе. Вы можете расширять функциональность бота, добавляя новые обработчики для различных типов сообщений и команд.