[Node.js] Бот-первонах

прекрати
Пользователь
Статус
Оффлайн
Регистрация
18 Дек 2018
Сообщения
100
Реакции[?]
35
Поинты[?]
0
Всем привет! Это моя первая тема, поэтому могут быть косяки как в оформлении, так и в содержании. Сегодня я вам покажу своего бота-первонаха, который, собственно, оставляет комментарии под постами в группах. Давайте приступим к самому коду.

Для начала нам нужно установить Node.js, мой гайд с установкой Node.js и с установкой модулей находится здесь.
Затем устанавливаем модуль vk-io в той же папке, в которой и будут находиться файлы index.js и config.js:
npm install vk-io --save
Или же, если Вы используете Yarn:
yarn add vk-io

Далее для работы с самими файлами понадобится любой текстовый редактор, для меня это Visual Studio Code, так как в нём есть встроенная консоль, с которой мне намного удобнее работать, но если у вас нет Visual Studio Code, можете использовать любой текстовый редактор в перемешку с консолью (cmd).

Начнём с файла конфигурации - создадим файл (или скачаем, файлы будут в конце темы) config.js. В нём хранится вся нужна нам информация: ваш токен, ссылки на группы, фразы и миллисекунды.

JavaScript:
let TOKEN = 'Здесь будет ваш токен.'; // токен
let GROUPS = ['https://vk.com/group', 'https://vk.com/group']; // ссылки на группы
let PHRASES = ['Message 1', 'Message 2']; // сообщения, которые бот будет оставлять под постом
let MILLISECONDS = 1000; // через сколько обновлять новости (в миллисекундах)

module.exports = {
  TOKEN,
  GROUPS,
  PHRASES,
  MILLISECONDS,
};
Некоторые из вас могут задаться вопросом: "как получить токен от страницы?". Объясняю. Заходим на
Пожалуйста, авторизуйтесь для просмотра ссылки.
vkhost, нажимаем на кнопку VK API, подтверждаем и копируем всё, что находится после слов access_token= и перед знаком &:1553600132759.png

Далее создадим (или скачаем) файл index.js, в нём будет построена вся логика бота, которая нам не интересна:
JavaScript:
let { VK } = require('vk-io');
let sample = (array) => array[Math.round((array.length - 1) * Math.random())];

let { TOKEN, GROUPS, PHRASES, MILLISECONDS } = require('./config');

let vk = new VK({
  token: TOKEN,
});

console.log('> Бот запущен.');

let commented = [];
let ids = [];

(async () => {
  ids = await Promise.all(GROUPS.map(async (link) => {
    let res = await vk.snippets.resolveResource(link);
    if (!res || res.type !== 'group') throw new Error('Ссылка должна вести на группу');
    return -res.id;
  }));

  setInterval(async () => {
    let { items } = await vk.api.newsfeed.get({ filters: 'post', count: 1 });
    let post = items[0];
  
    if (!ids.includes(post.source_id) || commented.includes(post.post_id)) return;
  
    let message = sample(PHRASES);
  
    commented.push(post.post_id);
  
    try {
      await vk.api.wall.createComment({ owner_id: post.source_id, post_id: post.post_id, message });
    } catch (e) {
      let errors = {
        213: 'Нет доступа к комментированию записи (возможно, комментарии были закрыты)',
        222: 'Запрещённые гиперссылки',
        223: 'Превышен лимит комментариев на стене',
      };

      let error = errors[e.code] || 'Неизвестная ошибка';

      throw new Error(error);
    }
  
    console.log(`> Был оставлен комментарий <<${message}>>`);
  }, MILLISECONDS);
})();
ВАЖНО, чтобы файлы находились в одной папке или просто находились рядом.

После всех проделанных манипуляций просто запускаем файл index.js, написав в консоли/терминале: node index.js.

Собственно, вот и всё! Теперь, если вы знаете как установить бота на сервер, можете поставить его на сервер и бот будет работать 24/7! Это самая простая версия бота-первонаха, так что если вы хорошо знаете Node.js, вы можете переделать некоторые моменты в коде либо же вообще переписать его и добавить своё!

Файлы:

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.



Changelog
28.03.2019 - фикс ошибок по типу "> Был оставлен комментарий <<undefined>>", добавлена обработка ошибок.

В комментариях можете оставлять вопросы, если у вас появились какие-нибудь ошибки, постараюсь ответить! Также вы можете предлагать идеи для написания бота тоже в комментарии и возможно я эту идею воплощу даже в код!
 
Последнее редактирование:
Эксперт
Статус
Оффлайн
Регистрация
31 Мар 2017
Сообщения
997
Реакции[?]
652
Поинты[?]
0
Для начала нам нужно установить Node.js, гайды, надеюсь, сможете найти сами в интернете, а затем устанавливаете модуль vk-io.
Гайдов на югейме вроде как нет, поэтому сделаешь темку и по этому?
Думаю ты сможешь отличный курс составить и выкладывать свои полезные наработки в использовании таких библиотек.

а затем устанавливаете модуль vk-io.
тут важно отметить и то, что устанавливать нужно в той папке, в которой будут находится все нужные файлы, а не просто вписать в цмд...
Код:
npm install vk-io --save
Ну и плюс отлично было бы, если бы ты так же составил гайд как это разместить на хостинге, т.к. не все хостинги поддерживают node.js, точнее там небольшая оговорка идёт на то, что нужен ВДС а не ВПС, поэтому любой новичок сможет так же этого не знать.

Как пример можно взять тот же амазон и протестировать на нём.

Развивай ветку и получишь себе кураторку в дальнейшем, главное не останавливайся раз уж начал :>
 

Вложения

Забаненный
Статус
Оффлайн
Регистрация
24 Мар 2019
Сообщения
4
Реакции[?]
0
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
чё так сложно то а
 
Эксперт
Статус
Оффлайн
Регистрация
31 Мар 2017
Сообщения
997
Реакции[?]
652
Поинты[?]
0
как скачать модуль vk-io
Код:
cd C:\Users\User\Documents\test
// Открываешь свою папку с проектом через CMD , либо же SHIFT + ПКМ по папке и открыть через командную строку.

//Затем делаешь установку библиотеки и всего необходимого для работы скрипта.
npm install vk-io
Ну а дальше просто делаешь
Код:
node index
И твоё говно запустилось.

Если хочешь удалённо запустить, тебе нужен ВДС.

Пожалуйста, авторизуйтесь для просмотра ссылки.

Перед началом всего, установи сам NODEJS.
 
прекрати
Пользователь
Статус
Оффлайн
Регистрация
18 Дек 2018
Сообщения
100
Реакции[?]
35
Поинты[?]
0
Гайдов на югейме вроде как нет, поэтому сделаешь темку и по этому?
Думаю ты сможешь отличный курс составить и выкладывать свои полезные наработки в использовании таких библиотек.


тут важно отметить и то, что устанавливать нужно в той папке, в которой будут находится все нужные файлы, а не просто вписать в цмд...
Код:
npm install vk-io --save
Ну и плюс отлично было бы, если бы ты так же составил гайд как это разместить на хостинге, т.к. не все хостинги поддерживают node.js, точнее там небольшая оговорка идёт на то, что нужен ВДС а не ВПС, поэтому любой новичок сможет так же этого не знать.

Как пример можно взять тот же амазон и протестировать на нём.

Развивай ветку и получишь себе кураторку в дальнейшем, главное не останавливайся раз уж начал :>
спасибо за уточнение, забыл написать, но уже дополнил, сейчас примусь за написание установки Node.js на всеми любимый Windows :4Head:
 
прекрати
Пользователь
Статус
Оффлайн
Регистрация
18 Дек 2018
Сообщения
100
Реакции[?]
35
Поинты[?]
0
Обновил, добавил ссылку на свой же гайд по установке Node.js и модулей
 
бихопчек
Забаненный
Статус
Оффлайн
Регистрация
27 Мар 2018
Сообщения
136
Реакции[?]
20
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
1553693606551.png
 
бихопчек
Забаненный
Статус
Оффлайн
Регистрация
27 Мар 2018
Сообщения
136
Реакции[?]
20
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Начинающий
Статус
Оффлайн
Регистрация
28 Янв 2019
Сообщения
12
Реакции[?]
2
Поинты[?]
0
1553702380901.png
Что делать, если бот написано запущен, но как я оставляю коммент в тестовой группе, то ничего не комментирует?
 
Последнее редактирование:
прекрати
Пользователь
Статус
Оффлайн
Регистрация
18 Дек 2018
Сообщения
100
Реакции[?]
35
Поинты[?]
0
прекрати
Пользователь
Статус
Оффлайн
Регистрация
18 Дек 2018
Сообщения
100
Реакции[?]
35
Поинты[?]
0
ezforme1 и все, у кого возникли проблемы с кодом - обновил файл index.js как в теме, так и на Я.Диске. Выяснилось, что я просто не провёл финальный тест на работоспособность, извините :) Сейчас всё норм, просто скачайте файл и замените или замените сам код index.js и всё будет работать
 
бихопчек
Забаненный
Статус
Оффлайн
Регистрация
27 Мар 2018
Сообщения
136
Реакции[?]
20
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
прекрати
Пользователь
Статус
Оффлайн
Регистрация
18 Дек 2018
Сообщения
100
Реакции[?]
35
Поинты[?]
0
Обновил, пофиксил ошибку "> Был оставлен комментарий <<undefined>>", добавил обработку ошибок, добавил Changelog :sunglasses:
 
Сверху Снизу