Node vk bot api примеры

Последнее время начал увлекаться разработкой приложений на Node.JS. Понравился своей гибкостью и тем, что приложения можно писать на JavaScript, а с ним я хоть немного дружу.

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

И в этой статье я коротко расскажу о том, как создать своего бота на Node.JS. Кстати, вот ссылка на репозиторий бота.

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

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

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

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

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

Бот в вк (на node js)

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

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

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

Теперь приступим к написанию кода и первым делом установим 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 .

Vkontakte BOT (vk_api python) [1] | Настройка и структура.

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

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

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

Источник: archakov.im

Как обратиться к API VK через node-vk-bot-api

Есть библиотека — node-vk-bot-api Как с помощью нее обратиться например за методом users.get (возвращающее информацию о профиле) До этого использовал библиотеку botact Там в документации был пример Usage:

const data = await bot.api(‘users.get’, < user_ids: 1 >)
С этим всё понятно. Но вторая библиотека старая и не реагирует на сообщения в беседе, только в ЛС.
Отслеживать
задан 1 мар 2019 в 12:25
52 6 6 бронзовых знаков

1 ответ 1

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

node-vk-bot-api предоставляет возможность работы с API при помощи метода «execute»

Пример

bot.execute(«users.get», < user_ids: 1456214 >, (result) => < console.log(result) >)
Отслеживать
ответ дан 1 мар 2019 в 17:17
Denis Pupyrev Denis Pupyrev
141 5 5 бронзовых знаков
Дай бох тебе здоровья!
2 мар 2019 в 19:38

  • javascript
  • node.js
  • vkontakte-api
    Важное на Мете

Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

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

Пишем бота для telegram на node.js

Как оказывается, написать бота для telegram, как два пальца об асфальт.

Если кому-то нужно разработать бота для telegram или для другой платформы, напишите мне в VK — сделаем. Также интегрируем с 1С и остальными требуемыми программными продуктами.

Для чего можно использовать бота:

  • Социальные боты в электронной коммерции. Боты-продажники;
  • Боты напоминалки;
  • Проводить обучение;
  • Использоваться для управления умным домом и многое другое, все на что способна фантазия!

Итак, чтобы написать бота нам потребуется:

Вначале опишу какой простой бот получился в Telegram

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

И так описание бота, который будем разрабатывать:

  • умеет отправлять пользователю на запрос — классическую музыку рандомно
  • Две клавиатуры прикрутил к нему обычную и инлайновую
  • Отвечать на кое-какие сообщения

Начинаем писать бота в Telegram

В телеграм находим BotFather.

Еще по теме:  Если кто то мальчик женщин vk

/newbot

Придумываем название боту. И имя юзера. Он нам выдаст токен, который будем использовать.

Также у него есть и другие команды, для задания описания бота, команд и прочего:

Начинаем разработку бота на Node.js

В консоли пишем:

npm init -y

для создания package.json и управления зависимостями.

npm install —save node-telegram-bot-api

Файл index.js получился такой самый простой:

const TelegramBot = require(‘node-telegram-bot-api’); const token = ‘СЮДА_ВСТАВЛЯЕМ_ТОКЕН_КОТОРЫЙ_ПОЛУЧИЛИ’; const bot = new TelegramBot(token, ); bot.onText(//echo (.+)/, (msg, match) => < const chatId = msg.chat.id; const resp = match[1]; // the captured «whatever» bot.sendMessage(chatId, resp); >); bot.on(‘message’, (msg) => < const chatId = msg.chat.id; bot.sendMessage(chatId, ‘Получили твое сообщение! Спасибо!’); >);

Вставляем свой токен, который получили от BotFather и можно его разместить на бесплатном хостинге Heroku, и все сразу заработает, самый простой ботик!

Но лучше токен, поместить в переменную окружения, также можно на Heroku.

Полезные ссылки по ботам Телеграм

Документация по ботам telegram находится: https://core.telegram.org/bots/api

Также есть сайт и на русском с описанием: https://tlgrm.ru/docs/bots/api

Описываю какой код бота для Телеграм получился

const fs = require(‘fs’);

Подключаем библиотеку для работы с файлами

const TelegramBot = require(‘node-telegram-bot-api’); const token = process.env.TELEGRAM_BOT_TOKEN; const bot = new TelegramBot(token, ); const idAdmin = 32949386;

Подключаем библиотеку node-telegram-bot-api, токен получаем из переменной окружения, и устанавливаем константу idAdmin — ему дополнительно сообщения потом будем слать.

bot.on(‘message’, (msg) => < const chatId = msg.chat.id; const first_name = msg.chat.first_name; if (msg.text) < const text = msg.text.toLowerCase(); if (~text.indexOf(«привет»)) < bot.sendMessage(chatId, ‘Приветик, ‘ + first_name + ‘!’); >else if (~text.indexOf(«start»)) < >else if (~text.indexOf(«закрыть»)) < bot.sendMessage(chatId, ‘Клавиатура закрыта’, < reply_markup: < remove_keyboard: true >>); > else if (~text.indexOf(«клав»)) < openKlava(chatId); >else if (~text.indexOf(«здраст»)) < bot.sendMessage(chatId, ‘Здравствуй, здравствуй, ‘ + first_name + ‘!’); >else if (~text.indexOf(«здравст»)) < bot.sendMessage(chatId, ‘Здравствуй, здравствуй, ‘ + first_name + ‘!’); >else if (~text.indexOf(«дур»)) < bot.sendMessage(chatId, » + first_name + ‘, не ругайся, а то обижусь!’); >else if (~text.indexOf(«туп»)) < bot.sendMessage(chatId, » + first_name + ‘, не ругайся, а то обижусь!’); >else if (~text.indexOf(«класи»)) < openClassik(chatId, first_name); >else if (~text.indexOf(«класси»)) < openClassik(chatId, first_name); >else if (~text.indexOf(«про автора»)) < bot.sendMessage(chatId, ‘Про автора бота’, < reply_markup: < inline_keyboard: [ [ < text: ‘Автор’, url: ‘https://polyakovdmitriy.ru’ >], [ < text: ‘Классика’, callback_data: ‘classik’ >] ] > >) > else < bot.sendMessage(chatId, » + first_name + ‘, я тебя не понимать!’); >> bot.forwardMessage(chatId, idAdmin, msg.message_id); >);

Здесь у нас в bot.on(‘message’ — прилетают все сообщения.

const chatId = msg.chat.id; — Достаем id чата.

const first_name = msg.chat.first_name; — Достаем имя пользователя.

Здесь: Если пришел текст привет — то бот отвечает: Приветик, Имя! if (~text.indexOf(«привет»)) < bot.sendMessage(chatId, ‘Приветик, ‘ + first_name + ‘!’);

И также остальные текстовые фразы обрабатывает.

bot.sendMessage(chatId, ‘Про автора бота’, < reply_markup: < inline_keyboard: [ [ < text: ‘Автор’, url: ‘https://polyakovdmitriy.ru’ >], [ < text: ‘Классика’, callback_data: ‘classik’ >] ] > >)

Этим кодом создается клавиатура инлайновая.

bot.forwardMessage(chatId, idAdmin, msg.message_id); — этим кодом все сообщения пересылаются админу.

bot.onText(//start/, (msg, match) => < const chatId = msg.chat.id; bot.sendMessage(chatId, ‘Приветик, ‘ + msg.chat.first_name + ‘!’); openKlava(chatId); >);

Еще по теме:  Как оформить группу в ВК для продажи товара

Здесь обрабатывается команда /start

bot.on(‘callback_query’, (query) => < const chatId = query.message.chat.id; if (query.data === ‘classik’) < openClassik(chatId, query.message.chat.first_name); >>);

Этим кодом обрабатывается callback — от инлайновой клавиатуры.

bot.on(‘contact’, (msg) => < const chatId = msg.chat.id; bot.sendMessage(chatId, ‘Спасибо! Ваш заказ принят, мы с Вами свяжемся!’); >);

Этим кодом отлавливается контакты, которые отправили боту, хотя их можно также отловить bot.on(‘message’ — сюда они тоже приходят.

function openKlava(chatId) < bot.sendMessage(chatId, ‘Клавиатура открыта’, < reply_markup: < keyboard: [ [ < text: ‘Классика’ >, < text: ‘Закрыть’ >], [ < text: ‘Заказать разработку бота’, request_contact: true >], [ < text: ‘Про автора’ >] ], one_time_keyboard: true > >) >

Здесь создаем клавиатуру.

request_contact: true — обозначает запрос контактов, также можно запрашивать локацию.

function openClassik(chatId, first_name) < fs.readdir(‘./klasik/’, function(err,files) < const rf = files[Math.floor(Math.random()*files.length)]; bot.sendMessage(chatId, » + first_name + ‘, лови классическую музыку!’); bot.sendAudio(chatId, ‘./klasik/’ + rf).then(()=>< bot.sendMessage(chatId, ‘И слушай!’); >); >) >

Этот код отправляет классическую музыку, случайно выбранную из папки ./klasik/

Итого файл index.js полностью:

const fs = require(‘fs’); const TelegramBot = require(‘node-telegram-bot-api’); const token = process.env.TELEGRAM_BOT_TOKEN; const bot = new TelegramBot(token, ); const idAdmin = 32949386; bot.on(‘message’, (msg) => < const chatId = msg.chat.id; const first_name = msg.chat.first_name; if (msg.text) < const text = msg.text.toLowerCase(); if (~text.indexOf(«привет»)) < bot.sendMessage(chatId, ‘Приветик, ‘ + first_name + ‘!’); >else if (~text.indexOf(«start»)) < >else if (~text.indexOf(«закрыть»)) < bot.sendMessage(chatId, ‘Клавиатура закрыта’, < reply_markup: < remove_keyboard: true >>); > else if (~text.indexOf(«клав»)) < openKlava(chatId); >else if (~text.indexOf(«здраст»)) < bot.sendMessage(chatId, ‘Здравствуй, здравствуй, ‘ + first_name + ‘!’); >else if (~text.indexOf(«здравст»)) < bot.sendMessage(chatId, ‘Здравствуй, здравствуй, ‘ + first_name + ‘!’); >else if (~text.indexOf(«дур»)) < bot.sendMessage(chatId, » + first_name + ‘, не ругайся, а то обижусь!’); >else if (~text.indexOf(«туп»)) < bot.sendMessage(chatId, » + first_name + ‘, не ругайся, а то обижусь!’); >else if (~text.indexOf(«класи»)) < openClassik(chatId, first_name); >else if (~text.indexOf(«класси»)) < openClassik(chatId, first_name); >else if (~text.indexOf(«про автора»)) < bot.sendMessage(chatId, ‘Про автора бота’, < reply_markup: < inline_keyboard: [ [ < text: ‘Автор’, url: ‘https://polyakovdmitriy.ru’ >], [ < text: ‘Классика’, callback_data: ‘classik’ >] ] > >) > else < bot.sendMessage(chatId, » + first_name + ‘, я тебя не понимать!’); >> bot.forwardMessage(chatId, idAdmin, msg.message_id); >); bot.onText(//start/, (msg, match) => < const chatId = msg.chat.id; bot.sendMessage(chatId, ‘Приветик, ‘ + msg.chat.first_name + ‘!’); openKlava(chatId); >); bot.on(‘callback_query’, (query) => < const chatId = query.message.chat.id; if (query.data === ‘classik’) < openClassik(chatId, query.message.chat.first_name); >>); bot.on(‘contact’, (msg) => < const chatId = msg.chat.id; bot.sendMessage(chatId, ‘Спасибо! Ваш заказ принят, мы с Вами свяжемся!’); >); function openClassik(chatId, first_name) < fs.readdir(‘./klasik/’, function(err,files) < const rf = files[Math.floor(Math.random()*files.length)]; bot.sendMessage(chatId, » + first_name + ‘, лови классическую музыку!’); bot.sendAudio(chatId, ‘./klasik/’ + rf).then(()=>< bot.sendMessage(chatId, ‘И слушай!’); >); >) > function openKlava(chatId) < bot.sendMessage(chatId, ‘Клавиатура открыта’, < reply_markup: < keyboard: [ [ < text: ‘Классика’ >, < text: ‘Закрыть’ >], [ < text: ‘Заказать разработку бота’, request_contact: true >], [ < text: ‘Про автора’ >] ], one_time_keyboard: true > >) >

Структура проекта получилась такая:

Успехов в создании ботиков!

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

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