Загрузка...

Пишем Telegram бота на NodeJS + Telegraf.js [ЧАСТЬ 1]

Тема в разделе Node.js создана пользователем kudasa1 6 июн 2025 в 21:17. 145 просмотров

Загрузка...
  1. kudasa1
    kudasa1 Автор темы 6 июн 2025 в 21:17 4 6 ноя 2019
    ВНИМАНИЕ!!! Гайд рассчитан для новичков в этой теме.

    Привет, я покажу как практически любой человек, зная лишь базу программирования,
    сможет написать своего первого Telegram бота, который вы сможете дорабатывать.

    Что нам понадобится: NodeJS, IDE/Редактор кода, мотивация.

    Официальный сайт NodeJS
    Если у вас уже есть IDE (обычно я использую WebStorm), то это отлично. Но если же у вас нет таковой программы, советую установить Visual Studio Code , стабильный и проверенный временем редактор кода.
    Предлагаю поставить задачу:
    Сделаем простенького бота, который будет реагировать на наши сообщения или команды.

    Первым делом, создаем папку в любом месте, в которой будет храниться ваш проект.
    Далее, открываем наш редактор Visual Studio Code, и видим такую картину:
    [IMG]
    Слева нажимаем "Open Folder", открываем созданную вами папку.
    Первым делом, нам нужно понять, с чем мы будем работать.
    Telegraf.js - простая и популярная библиотека для разработки Telegram ботов, поэтому будем использовать её.

    1.1 Открываем терминал (CTRL + SHIFT + "tilda(под кнопкой ESC)")
    Если мы видим, что мы находимся в нужной нам папке, шикарно.
    [IMG]
    1.2 Инициализируем наш проект
    Пишем команду:
    ⁡npm init -y

    Что такое npm?
    Данной командой, мы, с помощью нашего пакетного менеджера инициализируем наш проект, можно сказать подготавливаем, для дальнейшей установки библиотек. Флаг -y означает, что мы оставляем текущие, базовые настройки проекта.
    После чего, видим, что у нас в терминале появилась какая-то непонятная шляпа, а также создался файл package.json
    Что за файл package.json?
    [IMG]

    1.3 Настройка package.json
    Добавляем параметр "type" со значением "module". Это означает, что мы будем подключать наши модули (библиотеки) с помощью import.
    Модульность в JS
    [IMG]

    Также меняем 7 строку. Что она делает? Мы создаем некий скрипт, с помощью которого NodeJS будет запускать наш файл.
    start - название скрипта/команды
    node "имя файла.js" - для запуска нашего файла


    [IMG]

    1.4 Установка зависимостей
    Открываем терминал, пишем:
    ⁡npm install telegraf

    [IMG]

    1.5 Пишем код
    В текущей директории проекта создаем файл index.js

    Вы можете его назвать как хотите, будь то main.js, bot.js, но тогда вам нужно будет сменить в package.json скрипте start на node main.js например.
    [IMG]
    Пишем:
    ⁡import { Telegraf } from "telegraf"

    ⁡const bot = new Telegraf("TOKEN")

    ⁡ bot.launch()

    ⁡ process.once('SIGINT', () => bot.stop('SIGINT'))

    ⁡ process.once('SIGTERM', () => bot.stop('SIGTERM'))


    Импортируем нашу библиотеку Telegraf.
    В константе bot хранятся все методы для нашего бота.
    bot.launch - для запуска, 7 и 8 строки для корректной остановки бота.
    Мы видим, что на 3 строке, нам надо подключить наш токен. Без него мы не сможем управлять нашим ботом.
    Где его взять?

    Выглядит он примерно вот так: 7288719245:AAECu32vcCMjW9mBW-6ob77rCSD7pWTRgzc
    [IMG]
    Вставляем его в нашу строку и у нас получается:
    [IMG]
    Отлично.
    Теперь нам надо, чтобы бот нам отвечал, например на команду старт.
    В нашей библиотеке константы bot есть метод start, который обрабатывает входящую в него команду /start от пользователя.
    Давайте мы сделаем обработку этой команды с ответом.
    ⁡bot.start((ctx) => ctx.reply('Welcome'))

    [IMG]
    У ctx есть много методов, ctx.reply - ответ на сообщение, ctx.deleteMessage - удаляет сообщения.
    Все их можно посмотреть тут.

    Чтобы запустить бота, открываем терминал, пишем:
    ⁡npm run start
    ⁡ или
    ⁡npm start

    В данном случае start это как раз таки то самое название скрипта, которое мы прописывали в package.json.
    Можно запустить напрямую через node:
    ⁡node ./index.js

    Бот запущен, можно проверять.

    [IMG]
    Это был краткий, но подробный урок как начать писать ботов на telegram.
    В дальнейшем я буду продолжать, это была только первая часть.

    Если вы хотите сами разобраться в библиотеке, то вот:
    Официальная документация Telegraf.js

    Если у вас возникли какие-то вопросы или ошибки, пишите в личку.
     
    6 июн 2025 в 21:17 Изменено
  2. neverlate
    grammy > telegraf имхо, но симпа за старание :finger_up:
     
Top