Как запустить бота в Телеграмме на js

Я начал погружение в мир IT лишь три недели назад. Серьезно, три недели назад я даже не понимал синтаксиса HTML, а знакомство с языками программирования заканчивалось школьной программой по Pascal 10-летней давности. Однако я решился поехать в IT-лагерь, для детей которого было бы неплохо сделать бота. Я решил, что это вряд ли так сложно. С этого начался длинный путь, в рамках которого я:

  • развернул облачный сервер с Ubuntu,
  • зарегистрировался на GitHub,
  • выучил базовый синтаксис JavaScript,
  • прочитал тонну статей на английском и русском языках,
  • сделал, наконец, бота,
  • написал эту статью, наконец.

mkdir bot

bot — это стало название моей папки. После этого я установил npm и Node.js, что позволит запускать мне потом код из файликов с разрешением *.js

sudo apt update sudo apt install nodejs sudo apt install npm

Очень рекомендую на этом этапе настроить подключение к серверу через свою консоль. Вот инструкция Это позволит работать с сервером напрямую через консоль своего компьютера.5. Как написать код первого бота. А вот теперь просто открытие для меня. Любая программа — это просто строки текста.

Бот телеграмм на JavaScript

Их можно вбить куда угодно, сохранить с нужным расширением и все. Ты прекрасен. Я использовал Atom, но реально, можно просто в блокноте стандартном писать. Главное — сохранить потом файл в нужном расширении. Это как написать текст в Word и сохранить.

Я сделал новый файл, в который вставил код из примера на странице telegraf и сохранил в файл index.js (вообще не обязательно называть файл так, но так принято). Важно — вместо BOT_TOKEN вставьте свой API-ключ из второго пункта.

const Telegraf = require(‘telegraf’) const bot = new Telegraf(process.env.BOT_TOKEN) bot.start((ctx) => ctx.reply(‘Welcome!’)) bot.help((ctx) => ctx.reply(‘Send me a sticker’)) bot.on(‘sticker’, (ctx) => ctx.reply(»)) bot.hears(‘hi’, (ctx) => ctx.reply(‘Hey there’)) bot.launch()

6. Как закинуть код на сервер через github Теперь мне нужно было закинуть как-то этот код на сервер и запустить его. Для меня это стало челленджем.

В итоге, после долгих мытарств я понял, что проще будет создать файл на github, который позовляет обновлять код при помощи команды в консоли. Я зарегал аккаунт на github и сделал новый проект, куда и загрузил файл. После этого мне нужно было понять, как же настроить загрузку файлов с моего аккаунта (открытого!) на сервер в папку bot (если вдруг вы вышли из нее — просто напишите cd bot).7. Как загрузить файлы на сервер через github ч.2 Мне нужно было поставить на сервер программу, которая будет загружать файлы с git. Я поставил git на сервер, вбив в консоль

apt-get install git

После этого мне нужно было настроить загрузку файлов. Для этого я вбил в командную строку

git clone git://github.com/b0tank/bot.git bot

В итоге все из проекта загрузилось на сервер. Ошибкой на данном этапе было, что я, по сути, сделал вторую папку внутри уже существующей папки bot. Адрес до файла выглядел как */bot/bot/index.js Я решил пренебречь этой проблемой. И чтобы подгрузить библиотеку telegraf, которую мы запрашиваем в первой строке кода, вбейте в консоль команду.

npm install telegraf

8. Как запустить бота Для этого, находясь в папке с файлом (чтобы переходить из папки в папку через консоль — выполняйте команду формата cd bot Чтобы убедиться, что вы там, где нужно можно вбить команду, которая отобразит в консоли все файлы и папки, которые там лежат ls -a Для запуска я ввел в консоль

node index.js

Если нет никакой ошибки — все хорошо, бот работает. Ищите его в телеграме. Если ошибка есть — применяйте свои знания из 1 пункта.9. Как запустить бота в фоновом режиме Достаточно быстро вы поймете, что бот работает только тогда, когда вы сами сидите в консоли. Чтобы решить эту проблему я использовал команду

Еще по теме:  Telegram org без телефона

screen

После этого появится экран с каким-то текстом. Это значит, что все хорошо. Вы на виртуальном сервере на облачном сервере. Чтобы понять лучше, как это все работает — вот статья. Просто заходите в свою папку и вбивайте команду по запуску бота

node index.js

10. Как работает бот и как расширить его функционал Что же умеет наш бот из примера? Он умеет

bot.start((ctx) => ctx.reply(‘Welcome!’))

говорить «Welcome!» в момент старта (попробуйте поменять текст)

bot.help((ctx) => ctx.reply(‘Send me a sticker’))

в ответ на стандартную команду /help отправлять сообщение «Send me a sticker»

bot.on(‘sticker’, (ctx) => ctx.reply(»))

в ответ на стикер отправлять одобрение

bot.hears(‘hi’, (ctx) => ctx.reply(‘Hey there’))

отвечать «Hey there», если ему пишут ‘hi’ bot.launch() Если вы посмотрите код на github, то быстро поймете, что сильно далеко от этого функционала я не ушел. Что активно используется, так это функция ctx.replyWithPhoto Она позволяет отправлять заданное фото или gif в ответ на определенный текст.

Значимая часть кода была написана детьми 11-13 лет, которым я дал доступ к боту. Они ввели свои user-case. Думаю, легко определить, какая часть сделана была ими. Например, на сообщение «джейк» приходит гифка с известным персонажем из мультика Adventure Time. Чтобы развивать бота дальше, подключать клавиатуру нужно смотреть примеры, например, отсюда11.

Как обновлять код и перезапускать бота Не забывайте, что надо обновлять код не только на github, но и на сервере. Делать это просто — стопим бота (нажать ctrl+c), — вводим в консоль, находясь в целевой папке, git pull — вновь запускаем бота командой node index.js END Многие вещи, описанные в этом файле, будут супер очевидны для продвинутых программистов. Однако когда я сам пытался одним махом перепрыгнуть пропасть до мира ботов, мне очень не хватало подобного гайда. Гайда, в котором не пропускается очевидные и простые для любого IT-специалиста вещи. В дальнейшем я планирую пост про то, как сделать свое первое приложение на ReactNative в таком же стиле, подписывайтесь!

  • Главная »
  • NodeJS »
  • Node.JS: Делаем своего Telegram бота

Дата: 06.07.2017 в 17:53, Категория: NodeJS

Если вы открыли чат с ботом, кликаем на кнопку “Start“.

После чего, бот нам выдает все доступные команды.

Отправляем команду /newbot или кликаем по активной ссылке этой команды. Далее, бот нас попросить ввести имя для нашего бота.

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

Я решил во время статьи создать бота для этого блога и назвал его “Archakov Blog“.

На последнем этапе, бот попросит вас придумать никнейм (логин). К никнейму в конце обязательно надо добавить суффикс “bot” можно и “Bot“. К сожалению, никнейм поменять больше не получится. Если это ваш первый бот, не парьтесь и придумайте любой никнейм.

В итоге, получаем сообщение о том, что бот был создан и в конце будет указан его токен. Этот токен нам пригодится в процессе разработки.

Не советую делиться токеном с другими людьми. Так как он дает полный доступ к вашему боту. Начиная от редактирования имени и до удаления бота.

Теперь приступим к написанию кода и первым делом установим Node.JS. У меня OS X и хочу предупредить, что от операционной системы не будет зависеть разработка нашего бота.

Как установить Node.JS рассказывать я не хочу и не буду.

Для этого обращаемся к гугл с запросом как установить Node.JS.

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

Советую поучиться работать с npm командой в консоли.

Заранее установите этот менеджер пакетов, он нам скоро пригодится. Кстати, очень крутая и полезная штука, в будущем пригодится. Особенно, когда наступит апокалипсис, будете сидеть и пакеты устанавливать…

Создаем папку с тестовым проектом, к примеру telegram-bot . Далее, в этой папке создаем файл index.js и все! Вы красавчик! Бот создан, можете работать с ним.

Ага, канешна.

Код сам не напишется!

Прежде чем его и писать, установим модуль node-telegram-bot-api . Для этого открываем консоль, пропишем путь к директории нашего проекта cd telegram-bot (укажите полный путь к этой папке).

В моем случае, это cd /Applications/MAMP/htdocs/telegram-bot .

Если вы на Windows, советую создавать папку в корне диска, чтобы можно было обращаться к проекту по короче, к примеру cd C:telegram-bot .

Отлично, теперь не забываем про npm . В консоли вбиваем команду: npm install node-telegram-bot-api или yarn add node-telegram-bot-api (в зависимости от того, что вы используете yarn или npm).

И через несколько секунд модуль установился. Ура! В репозитории уже есть пример кода и с помощью этого кода, сделаем своего мега-тру-бота.

Теперь перейдем к файлу index.js и напишем немного кода.

// Подключаем библиотеку для работы с Telegram API в переменную var TelegramBot = require(‘node-telegram-bot-api’); // Устанавливаем токен, который выдавал нам бот var token = ‘ТУТ_ВСТАВЛЯЕМ_ТОКЕН’; // Включить опрос сервера. Бот должен обращаться к серверу Telegram, чтобы получать актуальную информацию // Подробнее: https://core.telegram.org/bots/api#getupdates var bot = new TelegramBot(token, < polling: true >); // Написать мне . (/echo Hello World! — пришлет сообщение с этим приветствием, то есть «Hello World!») bot.onText(//echo (.+)/, function (msg, match) < var fromId = msg.from.id; // Получаем ID отправителя var resp = match[1]; // Получаем текст после /echo bot.sendMessage(fromId, resp); >); // Простая команда без параметров bot.on(‘message’, function (msg) < var chatId = msg.chat.id; // Берем ID чата (не отправителя) // Фотография может быть: путь к файлу, поток (stream) или параметр file_id var photo = ‘cats.png’; // в папке с ботом должен быть файл «cats.png» bot.sendPhoto(chatId, photo, < caption: ‘Милые котята’ >); >);

Еще по теме:  Спам бот Телеграмм разблокировать номер

В начале кода мы подключили модуль (библиотеку) для работы с Telegram API. Далее, в переменной token вставляем наш токен, который выдавал нам BotFather при создании нашего бота.

Работа с командами очень простая и понятная. Советую немного потренироваться еще с регулярными выражениями, правильно составлять команду по маске. Данный модуль содержит кучу полезных методов. Прочтите документацию в репозитории этого модуля.

Давайте в качестве моего примера, попробуем сделать напоминалку важных дел. Конечно, пример не ахти, но кому-нибудь будет полезно.

Подключаем модуль для работы с Telegram API и прописываем токен:

var TelegramBot = require(‘node-telegram-bot-api’); var token = ‘ТУТ_ВСТАВЛЯЕМ_ТОКЕН’; var bot = new TelegramBot(token, );

Далее, создаем переменную в которой будут храниться все заметки от пользователя.

var notes = [];

Добавляем команду /напомни , с помощью которой и будем добавлять напоминание.

bot.onText(/напомни (.+) в (.+)/, function (msg, match) < var userId = msg.from.id; var text = match[1]; var time = match[2]; notes.push(< ‘uid’: userId, ‘time’: time, ‘text’: text >); bot.sendMessage(userId, ‘Отлично! Я обязательно напомню, если не сдохну :)’); >);

  • userId – хранит ID пользователя который прислал сообщение.
  • text – хранит первый параметр – текст. Его бот и должен прислать мне.
  • time – хранит второй параметр – время. Устанавливаем время когда прийдет уведомление.

setInterval(function() < for (var i = 0; i < notes.length; i++) < const curDate = new Date().getHours() + ‘:’ + new Date().getMinutes(); if (notes[i][‘time’] === curDate) < bot.sendMessage(notes[i][‘uid’], ‘Напоминаю, что вы должны: ‘+ notes[i][‘text’] + ‘ сейчас.’); notes.splice(i, 1); >> >, 1000);

Чтобы вы поняли как работает код выше, я нарисовал схему:

Итого:

var TelegramBot = require(‘node-telegram-bot-api’); var token = ‘ТУТ_ВСТАВЛЯЕМ_ТОКЕН’; var bot = new TelegramBot(token, ); var notes = []; bot.onText(/напомни (.+) в (.+)/, function (msg, match) < var userId = msg.from.id; var text = match[1]; var time = match[2]; notes.push(< ‘uid’: userId, ‘time’: time, ‘text’: text >); bot.sendMessage(userId, ‘Отлично! Я обязательно напомню, если не сдохну :)’); >); setInterval(function() < for (var i = 0; i < notes.length; i++) < const curDate = new Date().getHours() + ‘:’ + new Date().getMinutes(); if (notes[i][‘time’] === curDate) < bot.sendMessage(notes[i][‘uid’], ‘Напоминаю, что вы должны: ‘+ notes[i][‘text’] + ‘ сейчас.’); notes.splice(i, 1); >> >, 1000);

Еще по теме:  Как сохранять самоуничтожающие фотки в Телеграмме на Андроиде

Сохраняем наш скрипт, я назвал reminder.js . Запускаем его через консоль, командой node reminder.js

В итоге, я получил свое ожидаемое напоминание.

Спасибо за внимание. Не ленитесь учить JavaScript, за ним будущее веб и в частности всей галактики! Так же, выкладываю полный файл reminder.js.

ПОДПИШИСЬ НА ОБНОВЛЕНИЯ

Только новые публикации и никакого мусора.

  • https://habr.com/ru/post/447006/
  • https://archakov.im/post/telegram-bot-on-nodejs.html

Источник: geopressa.ru

Как написать телеграмм бота для получения форм с сайта? [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме.

Закрыт 1 год назад .

Написал фронт, но никогда не работал с ботами в тг, та и в принципе с ботами. Может кто-то помочь с реализацией. У меня есть форма, есть бот (botFathers) но нету кода для работы бота

Отслеживать
задан 4 янв 2022 в 1:15
1 1 1 бронзовый знак

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Осмелюсь предположить, что вам поможет данный способ.

  • Создайте бота, получите токен.
  • Создайте обычный чат(чат группу), получите id чата.
  • Добавьте бота в чат(чат группу), дайте ему права, запустите.
  • Создайте форму на сайте. Думаю вы понимаете как она строится.

Ваше имя Номер телефона

  • Далее пишите обработчик в данном случаи send.php

$name, ‘Телефон:’ => $phone ); //Настраиваем внешний вид сообщения в телеграме foreach($arr as $key => $value) < $txt .= «».$key.» «.$value.»%0A»; >; //Передаем данные боту $sendToTelegram = fopen(«https://api.telegram.org/bot/sendMessage?chat_id=text=»,»r»); //Выводим сообщение об успешной отправке if ($sendToTelegram) < alert(‘Спасибо! Ваша заявка принята. Мы свяжемся с вами в ближайшее время.’); >//А здесь сообщение об ошибке при отправке else < alert(‘Что-то пошло не так. ПОпробуйте отправить форму ещё раз.’); >> ?>
Отслеживать
ответ дан 4 янв 2022 в 7:21
Max Watson Max Watson
1,191 4 4 серебряных знака 14 14 бронзовых знаков

Пишешь сервер, например на nodejs.. На сервере хранишь токен своего бота. Устанавливаешь необходимые зависимости npm i node-telegram-bot-api

const http = require(‘http’); const TelegramBot = require(‘node-telegram-bot-api’); const token = process.env.TOKEN || «токен бота узнаешь у botFathers» const bot = new TelegramBot(token, < polling: true, >); const chatId = process.env.CHATID || «id чата»; //Узнать id чата bot.on(‘message’, function (msg)) http.createServer( (req,res)=>< if( req.url ===»/message/»)< res.writeHead(200, < «Content-Type»: «application/json; charset=utf-8», «Access-Control-Allow-Origin»: «*»,//Внимание к данному заголовку «Date»: new Date() >); let formData = »; req.on(‘data’, function(chunk) < formData += chunk.toString(); >); req.on(‘end’, function() < let data = JSON.parse(formData); let str = «Категория: » + data.category + «nИмя: » + data.name+»nНомер: » + data.num; bot.sendMessage(chat_id, str).//бот отправляет сообщение с инфой из формы then(data=>). catch(err=>); >); res.end(«Ваша заявка оформлена.»); >else< res.writeHead(200, ); res.end(`

Ок

`) > >).listen(3000,()=>)

Форма и обработчик формы, отправляет данные на сервер, принимает ответ с сервера..

let formData = document.forms.communication; let xhr = new XMLHttpRequest(); function goSendIt() < if (formData.nam.value formData.num.value) < let obj = < category: formData.cat.value, name: formData.nam.value, num: formData.num.value >let str = JSON.stringify(obj); xhr.open(«POST», «/message/»); xhr.send(str); xhr.onreadystatechange = function() < if (xhr.readyState === XMLHttpRequest.DONE xhr.status === 200) < console.log(xhr.responseText); >> > else < alert(«Не заполнена») >>

Оформить заявку

Выберите категорию Обратный звонок Ваше имя Ваш номер телефона

Источник: ru.stackoverflow.com

Запуск NodeJS приложения на VPS на примере Telegram бота

В данном уроке вы узнаете, как запустить любое nodejs приложение на удаленном vps хостинге на примере telegram бота. В данном уроке мы создадим простого telegram бота, который будет приветствовать пользователя по имени и определять, с какой операционной системы он был запущен. Далее мы соединим наш проект с системой контроля версий git. После этого вы увидите шаги, которые необходимо выполнить, для запуска проекта на удаленном сервере.

Профессия Frontend-разработчик PRO

Готовим Frontend-разработчиков с нуля

На курсе вы научитесь создавать интерфейсы веб-сервисов с помощью языков программирования и дополнительных технологий. Сможете разрабатывать планировщики задач, мессенджеры, интернет-магазины…

До 10 проектов в портфолио для старта карьеры
Подходит для новичков без опыта в программировании
Практика на вебинарах с разработчиками из крупных компаний

Источник: webformyself.com

Рейтинг
( Пока оценок нет )
Загрузка ...