Как написать Telegram-бота на Node.js (Telegraf.js)

6 минут чтения
Средний рейтинг статьи — 4.9

Боты в Telegram — это программы, которые могут автоматически отвечать на сообщения, выполнять команды пользователей и отправлять уведомления, упрощая взаимодействие с сервисами и людьми. В этой статье мы разберемся, как создать простого бота с использованием Node.js и библиотеки Telegraf.js, даже если у вас нет большого опыта в программировании.

Установка Telegraf.js

Сначала убедитесь, что у вас установлен Node.js. Затем создайте папку для проекта и инициализируйте его:

mkdir telegram-bot && cd telegram-bot
npm init -y

Теперь установим Telegraf, библиотеку для работы с Telegram-ботами:

npm install telegraf

Получение токена бота

Чтобы создать бота, откройте Telegram и найдите @BotFather. Отправьте ему команду /newbot и следуйте инструкциям. В конце BotFather выдаст вам токен — сохраните его, он понадобится для подключения бота к Telegram.

Написание кода для бота

Создайте файл bot.js и добавьте туда следующий код:

const { Telegraf } = require('telegraf');
const bot = new Telegraf('YOUR_BOT_TOKEN');
 
bot.start((ctx) => ctx.reply('Привет! Я ваш Telegram-бот. Напишите что-нибудь!'));
bot.help((ctx) => ctx.reply('Я реагирую на команды /start и /help, а также на любые сообщения.'));
bot.on('text', (ctx) => ctx.reply(`Вы написали: ${ctx.message.text}`));
 
bot.launch();
 
console.log('Бот запущен!');

Замените 'YOUR_BOT_TOKEN' на свой токен из BotFather.

Запуск бота

Теперь можно запустить бота:

node bot.js

Если всё сделано правильно, бот будет реагировать на команды /start, /help и любые текстовые сообщения.

Добавление кнопок

Давайте сделаем бота более интерактивным и добавим клавиатуру с кнопками:

bot.command('menu', (ctx) => {
    ctx.reply('Выберите действие:', {
        reply_markup: {
            keyboard: [
                [{ text: 'Погода' }, { text: 'Новости' }],
                [{ text: 'Помощь' }]
            ],
            resize_keyboard: true
        }
    });
});
 
bot.hears('Погода', (ctx) => ctx.reply('Сегодня солнечно! ☀️'));
bot.hears('Новости', (ctx) => ctx.reply('Вот последние новости...'));
bot.hears('Помощь', (ctx) => ctx.reply('Напишите /help, чтобы узнать больше.'));

Теперь, когда пользователь введет /menu, появится клавиатура с кнопками.

Запуск бота на сервере

Если вы хотите, чтобы бот работал круглосуточно, запустите его на сервере с помощью pm2:

npm install -g pm2
pm2 start bot.js --name telegram-bot
pm2 save
pm2 startup

Итоги

Теперь у вас есть Telegram-бот на Node.js, который может отвечать на команды, обрабатывать текст и работать с кнопками. Дальше вы можете добавить в него интеграцию с API, поддержку картинок или даже базу данных!

6 минут чтения
Средний рейтинг статьи — 4.9

Настроить мониторинг за 30 секунд

Надежные оповещения о даунтаймах. Без ложных срабатываний