Как отправить сообщение из javascript в telegram
Перейти к содержимому

Как отправить сообщение из javascript в telegram

  • автор:

Пишем Телеграм-бота на JavaScript

Сегодня будем делать бота — это отличное (и быстрое) занятие, которое развивает уставший мозг и даёт возможность отправить друзьям ссылочку со словами «Смотри, это моё».

  • Редактор кода, чтобы писать код. Если не знаете, какой выбрать — мы уже рассказывали. Если не умеете писать код, то вот инструкция, как его написать и запустить.
  • Node.js любой версии, выше 0.12. Нужно, чтобы библиотека для ботов заработала. Как установить Node.js.
  • Консоль. Или встроенный в систему вариант, или какой-нибудь другой.
  • VPN. Возможно но не факт, потому что Телеграм работает не везде.

Находим в поиске Телеграма бота @botFather — это главный инструмент для создания ботов. Набираем в нём /newbot .

Придумываем название и имя боту. Название — то, как он будет подписан в списке контактов. Имя — строка, по которой его можно будет найти. Обратите внимание, что имя должно оканчиваться на bot . В ответ мы получим токен — длинную последовательность символов, которая пригодится нам в будущем. Мы назвали бота echoKeksBot , но вам придётся придумать другое название, потому что это уже занято. Извините.

Создаем папку в любом месте и открываем её в консоли. Там пишем npm init -y — эта команда создаст файл package.json , который выглядит примерно так:

Теперь установим node-telegram-bot-api — это библиотека для создания телеграм-ботов на Node.js. Введём команду:

Создадим пустой файл index.js и напишем там самого простого бота, который будет отвечать на любое сообщение:

Тут всё просто, в консоли пишем node index.js , заходим к нашему боту в телеграм и начинаем с ним общаться. Не закрывайте консоль — бот работает только на вашем компьютере, и без консоли он не станет отвечать.

Как видим, бот успешно отвечает. Но бот-повторяха — не интересно, усложним задачу. Пусть бот присылает нам картинку.

Добавим картинку с Кексом в папку с проектом. Для отправки изображения используем метод .sendPhoto() — передадим в него id чата и путь до картинки. Получится такой код:

Как написать Телеграм-бота на JavaScript

Евгений Шкляр

Сегодня будем делать бота — это отличное (и быстрое) занятие, которое развивает уставший мозг и даёт возможность отправить друзьям ссылочку со словами «Смотри, это моё».

Для работы понадобятся

  • Редактор кода, чтобы писать код. Если не знаете, какой выбрать — мы уже рассказывали. Если не умеете писать код, то вот инструкция, как его написать и запустить.
  • Node.js любой версии, выше 0.12. Нужно, чтобы библиотека для ботов заработала. Как установить Node.js.
  • Консоль. Или встроенный в систему вариант, или какой-нибудь другой.
  • VPN. Возможно но не факт, потому что Телеграм работает не везде.

Шаг 1. Регистрируем бота

Находим в поиске Телеграма бота @botFather — это главный инструмент для создания ботов. Набираем в нём /newbot .

Придумываем название и имя боту. Название — то, как он будет подписан в списке контактов. Имя — строка, по которой его можно будет найти. Обратите внимание, что имя должно оканчиваться на bot . В ответ мы получим токен — длинную последовательность символов, которая пригодится нам в будущем. Мы назвали бота echoKeksBot , но вам придётся придумать другое название, потому что это уже занято. Извините.

Создание бота

Шаг 2. Создаём проект

Создаем папку в любом месте и открываем её в консоли. Там пишем npm init -y — эта команда создаст файл package.json , который выглядит примерно так:

Содержимое файла package.json

Теперь установим node-telegram-bot-api — это библиотека для создания телеграм-ботов на Node.js. Введём команду:

Создадим пустой файл index.js и напишем там самого простого бота, который будет отвечать на любое сообщение:

Шаг 3. Запускаем бота

Тут всё просто, в консоли пишем node index.js , заходим к нашему боту в телеграм и начинаем с ним общаться. Не закрывайте консоль — бот работает только на вашем компьютере, и без консоли он не станет отвечать.

Запуск бота

Как видим, бот успешно отвечает. Но бот-повторяха — не интересно, усложним задачу. Пусть бот присылает нам картинку.

Шаг 4. Отсылаем картинку

Добавим картинку с Кексом в папку с проектом. Для отправки изображения используем метод .sendPhoto() — передадим в него id чата и путь до картинки. Получится такой код:

Запускаем бота, проверяем, работает:

Получаем от бота изображение с Кексом

Шаг 5. Добавим клавиатуру. И пёсика

Добавим фотографию милого пёсика в корень проекта. Теперь там две картинки.

Создадим конфигурацию для клавиатуры в боте, пусть у нас будет 3 кнопки: «Хочу кота», «Хочу пёсика» и «Пойти учиться».

Получаем от бота изображение с пёсиком

На нажатия первых двух кнопок мы ответим соответствующим сообщением в Телеграме, а последняя уведёт на внешний ресурс.

Чтобы отличить первые 2 кнопки, воспользуемся полем callback_data , где будем передавать тип кнопки. Для обработки нажатий добавим слушателя на событие callback_query , и в зависимости от значения query.data отправим нужную картинку к пользователю.

Не забудем про возможные ошибки и предложим пользователю попробовать снова, если он ввёл что-то не то. Перезапустим бота и проверим — всё работает. Главное — не закрывать консоль, иначе бот перестанет отвечать.

Полный файл с кодом: index.js.

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

Познакомьтесь с JavaScript бесплатно

На интерактивных тренажёрах. А вместе с JavaScript — бесплатное знакомство с HTML и CSS.

Начало работы

В первую очередь нужно зарегистрировать бота. Сделать это можно в приложении Telegram через BotFather.

Нажмите Start в чате и просмотрите доступные варианты. Вам понадобится выбрать название для бота и имя пользователя, а затем можно сохранять ключ.

После этого бот начнет отображаться в поиске Telegram — для этого просто введите @<bot-username> . Однако пока никаких действий выполнять он не будет.

Переходим к коду. Для работы с API Telegram воспользуемся пакетом NPM. Устанавливаем его с помощью команды yarn add node-telegram-bot-api .

Пакет готов к работе. Добавляем токен в переменную:

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

onText позволяет реагировать на сообщения, соответствующие регулярным выражениям. В этом варианте /\/echo (.+)/ означает, что вам нужно написать /echo , а следом за ним какой-либо текст.

Переменная chatId представляет ID пользователя, который используется для отправки сообщения. Чтобы бот мог самостоятельно выполнять эту функцию, ID должны где-то храниться.

bot.sendMessage применятся для отправки сообщений. Строка resp посылается после команды echo . Бот отправляет обратно то, что он получает.

Запускаем node app.js , открываем чат с ботом и отправляем ему следующее.

Автоматическая отправка сообщений

Как было сказано выше, чтобы отправлять пользователям сообщения, понадобится chatId , который нужно где-то хранить. В приложениях для этого стоит выбрать энергонезависимые хранилища, такие как MySQL, MongoDB и любые другие базы данных.

В этом примере мы будем хранить идентификаторы в массиве. Пользователь может зарегистрироваться в боте с помощью /register . После этого он будет получать сообщения.

Бот отправляет сообщение каждому пользователю один раз в секунду. Для этого достаточно пройтись по массиву с циклом for .

После отправки /register боту мы начинаем получать много спама.

Реакция на все сообщения

bot.onText позволяет реагировать на сообщения, соответствующие регулярному выражению. Чтобы обрабатывать любой входящий текст, нужно воспользоваться bot.on("message") — он запускается каждый раз, когда кто-то отправляет сообщение.

Вот простой пример. Бот реагирует на каждое сообщение, но отвечает, только когда пользователь присылает текст “dog”.

Отправка опросов

В Telegram можно обменивать не только стикерами, видео и текстом, но и опросами. Создавать их очень просто.

Сразу после ID мы передаем вопрос, а затем идет массив возможных вариантов ответов. Вы можете добавить больше опций по желанию.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *