InjBot-OpenSource bot

setlocale(0, "");
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
17 Мар 2018
Сообщения
120
Реакции
25
С чем мы будем работать -
Пожалуйста, авторизуйтесь для просмотра ссылки.


Начинаем работу:
переходим в bot/index.js
Код:
Expand Collapse Copy
  message.plain = async function (text, params = {}) {
   const res = await _this.vk.api.users.get({
   user_id: message.user
  })
   return message.send(`res[0].first_name` + ', ' + text, params);
  }
заменяем
Код:
Expand Collapse Copy
res[0].first_name
на
Код:
Expand Collapse Copy
@id${message.user}(${_this.users[message.user].nick})
находим
Код:
Expand Collapse Copy
_this.users[message.user] = {
  nick: res[0].first_name,
  balance: 5000
заменяем на
Код:
Expand Collapse Copy
_this.users[message.user] = {
  nick: res[0].first_name,
  balance: 5000,
  lvl: 0
}
находим
Код:
Expand Collapse Copy
  this.on = function (p,d,f,a = false) {
  _this.commands.push({
  "pattern": p,  // Паттерн команды, например /^!test/i
  "description": d,  // Описание команды
  "func": f,  // Функция команды
  "admin": a,            // Является ли команда администраторкой, по умолчанию 0
  })
  }
заменяем на
Код:
Expand Collapse Copy
  this.on = function (p,d,f,a = 0) {
находим
Код:
Expand Collapse Copy
if(cmd.admin && !~config.admins.indexOf(message.user)) return;
заменяем на
Код:
Expand Collapse Copy
 if(_this.users[message.user].lvl < cmd.admin) return;

Добавляем команды:
Код:
Expand Collapse Copy
bot.on(/^!\s(.*)/i, "eval -- исполняет JS код", function (message, core) {
  var result;
  try {
  result = "Result: "+eval(message.args[1]).toString();
  } catch (err) {
  return message.reply("⛔Error⛔: " + err.toString());
  }
  return message.reply(
  typeof result === "object" ? JSON.stringify(result, null, "&#4448;") : result.toString()
  );
}, 2);
Код:
Expand Collapse Copy
bot.on(/^!(?:nick|ник)\s(.*)/i, "nick -- установить себе ник", function (message, { users }) {
  let
  nick = message.args[1];
  users[message.user].nick =
  nick.length < 15 ?
  users[message.user].nick = nick : users[message.user].nick;
  message.plain(
  (nick.length < 15 ?
  `ник ${nick}, был успешно установлен!` : `ник не может быть больше 15-ти символов!`)
  );
});
Код:
Expand Collapse Copy
bot.on(/^!(?:id|айди)\s(.*)/i, "", function (message, { vk }) {
  vk.api.users.get({
  user_ids: message.args[1]
  }).then(async function (response) {
  message.append("Данные о пользователе: ");
  await response.map(e => {
  message.append("Имя: " + `${e.first_name}` + "; Фамилия: " + `${e.last_name}` + "; ID: " + `${e.id}`);
  });
  return message.apply({ attachment: "photo-161789250_456239296" });
  });
}, 1);
Код:
Expand Collapse Copy
bot.on(/^права\s([0-2])/i, "", function (message, { vk,users,bans }) {
   if(!message.hasFwd()) return message.reply("Нужно пересланное сообщение!");
   vk.api.messages.getById({
     message_ids: message.id
   }).then(function (res) {
     let
       id = res.items[0].fwd_messages[0].user_id,
       lvl = Number(message.args[1]),
       prava =
         lvl == 0 ?
           `пользователя` : lvl == 1 ?
             `модератора` : lvl == 2 ?
               `админа` : 'фих знает каго'
     if(!users[id]){
       return message.plain("Пользователя нет в базе данных");
     }
     if(!users[id].lvl == lvl) {
       return message.plain("У пользователя уже установленны эти права")
     }
     else if(users[message.user].lvl < users[id].lvl){
       return message.plain('Вы не можете менять права данному пользователю');
     }
     else{
       users[id].lvl = lvl;
     }
     vk.api.users.get({
       user_id: id
     }).then(function (res){
     message.plain(`${res[0].first_name} ${res[0].last_name} были установлены права ${prava}`);})
   });
}, 2);
Код:
Expand Collapse Copy
bot.on(/^!кости\s([0-9]+)/i, "кости <ставка> -- игрка в кости...", function (message, { utils, users }) {
  let
  first = Number(message.args[1]),
  a = utils.random(6),
  b = utils.random(6);
   message.plain(
     `Тебе выпало: ${a}, а мне: ${b}.\n` +
     (first < 200 ?
       `Ставка не может быть меньше 200!` : first > users[message.user].balance ?
         `У тебя недостаточно денег!`: a > b ?
           `Ты победил и получил - ${first} монет` : a === b ?
             `Ничья!(` : `Ты проиграл - ${first} монет`)
  );
  users[message.user].balance =
     first < 200 ?
       users[message.user].balance : users[message.user].balance < first ?
         users[message.user].balance : b < a ?
           users[message.user].balance += first : b === a ?
             users[message.user].balance : users[message.user].balance -= first;
});
Добавляем систему банов:
Переходим в /bot/index.js
Добавляем в this.on
Код:
Expand Collapse Copy
 "ban": b ; b = false
создаем в /db/bans.json и вводим туда {}
В начале кода пишем this.bans = require("../db/bans.json");
Ищем this.db и добавляем
Код:
Expand Collapse Copy
fs.writeFileSync("./db/bans.json", JSON.stringify(_this.bans, null, "\t"));
Добавляем
Код:
Expand Collapse Copy
      if(_this.bans[message.user]){
         if(cmd.ban == false && _this.bans[message.user].ban == true){
          return;
         }
       }
Ban:
Код:
Expand Collapse Copy
bot.on(/^бан\s(.*)/i, "", function (message, { vk,users,bans }) {
   if(!message.hasFwd()) return message.reply("Нужно пересланное сообщение!");
   vk.api.messages.getById({
     message_ids: message.id
   }).then(function (res) {
     let
       id = res.items[0].fwd_messages[0].user_id,
       reason = message.args[1] ? message.args[1] : `Причина не указана`
     if(!users[id]){
       return message.plain("Пользователя нет в базе данных");
     }
     else if(users[message.user].lvl < users[id].lvl){
       return message.plain("Вы не можете банить данного пользователя");
     }
     if(!bans[id]) {
       bans[id] = {
         nick: users[id].nick,
         ban: true,
         reason: reason
       }
     }
     else if(bans[id].ban == true){
       return message.plain('Данный пользователь уже забанен');
     }
     else{
       bans[id].ban = true;
       bans[id].reason = reason;
     }
     vk.api.users.get({
       user_id: id
     }).then(function (res){
     message.plain(`${res[0].first_name} ${res[0].last_name} был забанен с причиной: "${reason}"`);})
   });
}, 1);
Unban:
Код:
Expand Collapse Copy
bot.on(/^анбан/i, "", function (message, { vk,users,bans }) {
   if(!message.hasFwd()) return message.reply("Нужно пересланное сообщение!");
   vk.api.messages.getById({
     message_ids: message.id
   }).then(function (res) {
     let
       id = res.items[0].fwd_messages[0].user_id
     if(!users[id]){
       return message.plain("Пользователя нет в базе данных");
     }
     if(!bans[id]) {
       return message.plain("Пользователя нет в базе банов")
     }
     else if(users[message.user].lvl < users[id].lvl){
       return message.plain("Вы не можете разбанить данного пользователя");
     }
     else if(bans[id].ban == false){
       return message.plain('Данный пользователь не забанен');
     }
     else{
       bans[id].ban = false;
     }
     vk.api.users.get({
       user_id: id
     }).then(function (res){
     message.plain(`${res[0].first_name} ${res[0].last_name} был разбанен`);})
   });
}, 1);
Сурс:
Код:
Expand Collapse Copy
const VK = require("vk-io");
const fs = require("fs");

function InjBot (config) {
  _this = this;

  this.vk = new VK({
  call: "execute",
  token: config.access_token
  })
  // Commands array
  this.commands = [];
  this.utils = require("./utils");
  this.sets = config;
  // Примитивная база
  this.users = require("../db/users.json");
   this.bans = require("../db/bans.json");

  _this.vk.api.users.get()
  .then(function (res) {
  _this.sets.id = res[0].id;
  return console.log(`[VK] new account ${res[0].first_name} ${res[0].last_name} | ${res[0].id}`);
  })
 
  this.start = function () {
  _this.vk.longpoll.start()
  .then(() => console.log(`[BOT] Longpoll has been started..`))
 
  _this.vk.longpoll.on("message", async function (message) {
  if(!message.text || ~message.flags.indexOf("outbox")) return;
  // Добавление нового юзера в "базу", если его нет
  if(!_this.users[message.user]) {
  _this.vk.api.users.get({
  user_ids: message.user
  }).then(function (res) {
  _this.users[message.user] = {
  nick: res[0].first_name,
  balance: 5000,
             lvl: 0
  }
  })
  }

  var cmd = _this.commands.find(e => e.pattern.test(message.text));
  if(!cmd) return;
  if(_this.users[message.user].lvl < cmd.admin) return;
       if(_this.bans[message.user]){
         if(cmd.ban == false && _this.bans[message.user].ban == true){
          return;
         }
       }
  // Logs
  console.log(`[MSG] Message from ${message.user}` + (message.chat ? ' | Chat_id: ' + message.chat : '') + `, message: ${message.text.match(/.{0,36}/).join("")}`);
  // Args
  message.args = message.text.match(cmd.pattern) || [];
  // Append / apply
  message.body = "";
  message.append = (text) => message.body += text + '\n';
  message.apply = function (params = {}) {
  message.reply(message.body, params);
  message.body = "";
  }
  // Plain сообщение, т.е "Имя + текст"
  message.plain = async function (text, params = {}) {
  const res = await _this.vk.api.users.get({
  user_id: message.user
  })
  return message.send(`@id${message.user}(${_this.users[message.user].nick})` + ', ' + text, params);
  }
  // Применение функции
  cmd.func(message, _this);
  })

  _this.vk.longpoll.on("chat.invite", function (action) {
  if(action.invite === _this.sets.id) return;
  _this.vk.api.users.get({
  user_ids: action.invite
  }).then(function (res) {
  return action.send(`Приветствую *id${action.invite} (${res[0].first_name}) в нашей крутой беседе`);
  })
  })

  _this.vk.longpoll.on("chat.kick", function (action) {
  if(action.invite === _this.sets.id) return;
  return action.send(`Пока :C`);
  })

  /*setInterval(async() => {
  _this.vk.api.friends.getRequests({})
  .then(res => {
  if(res.count == 0) return;
  res.items.map(x => {
  _this.vk.api.friends.add({ user_id: x })
  .catch(() => {
  _this.vk.api.friends.delete({ user_id: x })
  })
  });
  })
  _this.vk.api.friends.getRequests({out: 1})
  .then(res => {
  if(res.count == 0) return;
  res.items.map(x => {
  _this.vk.api.friends.delete({ user_id: x })
  })
  })
  }, 60000)*/
  }

  this.on = function (p,d,f,a = 0,b = false) {
  _this.commands.push({
  "pattern": p,  // Паттерн команды, например /^!test/i
  "description": d,  // Описание команды
  "func": f,  // Функция команды
  "admin": a,            // Является ли команда администраторкой, по умолчанию 0
       "ban": b             // Могут ли команду использовать забаненные
  })
  }

  this.db = {
  save: () => {
  setInterval(() => {
  fs.writeFileSync("./db/users.json", JSON.stringify(_this.users, null, "\t"));
         fs.writeFileSync("./db/bans.json", JSON.stringify(_this.bans, null, "\t"));
  }, 1000)
  }
  }
}

module.exports = InjBot;
Пример моего бота: https://vk.com/oskar_bot
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
С чем мы будем работать -
Пожалуйста, авторизуйтесь для просмотра ссылки.


Начинаем работу:
переходим в bot/index.js
Код:
Expand Collapse Copy
  message.plain = async function (text, params = {}) {
   const res = await _this.vk.api.users.get({
   user_id: message.user
  })
   return message.send(`res[0].first_name` + ', ' + text, params);
  }
заменяем
Код:
Expand Collapse Copy
res[0].first_name
на
Код:
Expand Collapse Copy
@id${message.user}(${_this.users[message.user].nick})
находим
Код:
Expand Collapse Copy
_this.users[message.user] = {
  nick: res[0].first_name,
  balance: 5000
заменяем на
Код:
Expand Collapse Copy
_this.users[message.user] = {
  nick: res[0].first_name,
  balance: 5000,
  lvl: 0
}
находим
Код:
Expand Collapse Copy
  this.on = function (p,d,f,a = false) {
  _this.commands.push({
  "pattern": p,  // Паттерн команды, например /^!test/i
  "description": d,  // Описание команды
  "func": f,  // Функция команды
  "admin": a,            // Является ли команда администраторкой, по умолчанию 0
  })
  }
заменяем на
Код:
Expand Collapse Copy
  this.on = function (p,d,f,a = 0) {
находим
Код:
Expand Collapse Copy
if(cmd.admin && !~config.admins.indexOf(message.user)) return;
заменяем на
Код:
Expand Collapse Copy
 if(_this.users[message.user].lvl < cmd.admin) return;

Добавляем команды:
Код:
Expand Collapse Copy
bot.on(/^!\s(.*)/i, "eval -- исполняет JS код", function (message, core) {
  var result;
  try {
  result = "Result: "+eval(message.args[1]).toString();
  } catch (err) {
  return message.reply("⛔Error⛔: " + err.toString());
  }
  return message.reply(
  typeof result === "object" ? JSON.stringify(result, null, "&#4448;") : result.toString()
  );
}, 2);
Код:
Expand Collapse Copy
bot.on(/^!(?:nick|ник)\s(.*)/i, "nick -- установить себе ник", function (message, { users }) {
  let
  nick = message.args[1];
  users[message.user].nick =
  nick.length < 15 ?
  users[message.user].nick = nick : users[message.user].nick;
  message.plain(
  (nick.length < 15 ?
  `ник ${nick}, был успешно установлен!` : `ник не может быть больше 15-ти символов!`)
  );
});
Код:
Expand Collapse Copy
bot.on(/^!(?:id|айди)\s(.*)/i, "", function (message, { vk }) {
  vk.api.users.get({
  user_ids: message.args[1]
  }).then(async function (response) {
  message.append("Данные о пользователе: ");
  await response.map(e => {
  message.append("Имя: " + `${e.first_name}` + "; Фамилия: " + `${e.last_name}` + "; ID: " + `${e.id}`);
  });
  return message.apply({ attachment: "photo-161789250_456239296" });
  });
}, 1);
Код:
Expand Collapse Copy
bot.on(/^права\s([0-2])/i, "", function (message, { vk,users,bans }) {
   if(!message.hasFwd()) return message.reply("Нужно пересланное сообщение!");
   vk.api.messages.getById({
     message_ids: message.id
   }).then(function (res) {
     let
       id = res.items[0].fwd_messages[0].user_id,
       lvl = Number(message.args[1]),
       prava =
         lvl == 0 ?
           `пользователя` : lvl == 1 ?
             `модератора` : lvl == 2 ?
               `админа` : 'фих знает каго'
     if(!users[id]){
       return message.plain("Пользователя нет в базе данных");
     }
     if(!users[id].lvl == lvl) {
       return message.plain("У пользователя уже установленны эти права")
     }
     else if(users[message.user].lvl < users[id].lvl){
       return message.plain('Вы не можете менять права данному пользователю');
     }
     else{
       users[id].lvl = lvl;
     }
     vk.api.users.get({
       user_id: id
     }).then(function (res){
     message.plain(`${res[0].first_name} ${res[0].last_name} были установлены права ${prava}`);})
   });
}, 2);
Код:
Expand Collapse Copy
bot.on(/^!кости\s([0-9]+)/i, "кости <ставка> -- игрка в кости...", function (message, { utils, users }) {
  let
  first = Number(message.args[1]),
  a = utils.random(6),
  b = utils.random(6);
   message.plain(
     `Тебе выпало: ${a}, а мне: ${b}.\n` +
     (first < 200 ?
       `Ставка не может быть меньше 200!` : first > users[message.user].balance ?
         `У тебя недостаточно денег!`: a > b ?
           `Ты победил и получил - ${first} монет` : a === b ?
             `Ничья!(` : `Ты проиграл - ${first} монет`)
  );
  users[message.user].balance =
     first < 200 ?
       users[message.user].balance : users[message.user].balance < first ?
         users[message.user].balance : b < a ?
           users[message.user].balance += first : b === a ?
             users[message.user].balance : users[message.user].balance -= first;
});
Добавляем систему банов:
Переходим в /bot/index.js
Добавляем в this.on
Код:
Expand Collapse Copy
 "ban": b ; b = false
создаем в /db/bans.json и вводим туда {}
В начале кода пишем this.bans = require("../db/bans.json");
Ищем this.db и добавляем
Код:
Expand Collapse Copy
fs.writeFileSync("./db/bans.json", JSON.stringify(_this.bans, null, "\t"));
Добавляем
Код:
Expand Collapse Copy
      if(_this.bans[message.user]){
         if(cmd.ban == false && _this.bans[message.user].ban == true){
          return;
         }
       }
Ban:
Код:
Expand Collapse Copy
bot.on(/^бан\s(.*)/i, "", function (message, { vk,users,bans }) {
   if(!message.hasFwd()) return message.reply("Нужно пересланное сообщение!");
   vk.api.messages.getById({
     message_ids: message.id
   }).then(function (res) {
     let
       id = res.items[0].fwd_messages[0].user_id,
       reason = message.args[1] ? message.args[1] : `Причина не указана`
     if(!users[id]){
       return message.plain("Пользователя нет в базе данных");
     }
     else if(users[message.user].lvl < users[id].lvl){
       return message.plain("Вы не можете банить данного пользователя");
     }
     if(!bans[id]) {
       bans[id] = {
         nick: users[id].nick,
         ban: true,
         reason: reason
       }
     }
     else if(bans[id].ban == true){
       return message.plain('Данный пользователь уже забанен');
     }
     else{
       bans[id].ban = true;
       bans[id].reason = reason;
     }
     vk.api.users.get({
       user_id: id
     }).then(function (res){
     message.plain(`${res[0].first_name} ${res[0].last_name} был забанен с причиной: "${reason}"`);})
   });
}, 1);
Unban:
Код:
Expand Collapse Copy
bot.on(/^анбан/i, "", function (message, { vk,users,bans }) {
   if(!message.hasFwd()) return message.reply("Нужно пересланное сообщение!");
   vk.api.messages.getById({
     message_ids: message.id
   }).then(function (res) {
     let
       id = res.items[0].fwd_messages[0].user_id
     if(!users[id]){
       return message.plain("Пользователя нет в базе данных");
     }
     if(!bans[id]) {
       return message.plain("Пользователя нет в базе банов")
     }
     else if(users[message.user].lvl < users[id].lvl){
       return message.plain("Вы не можете разбанить данного пользователя");
     }
     else if(bans[id].ban == false){
       return message.plain('Данный пользователь не забанен');
     }
     else{
       bans[id].ban = false;
     }
     vk.api.users.get({
       user_id: id
     }).then(function (res){
     message.plain(`${res[0].first_name} ${res[0].last_name} был разбанен`);})
   });
}, 1);
Сурс:
Код:
Expand Collapse Copy
const VK = require("vk-io");
const fs = require("fs");

function InjBot (config) {
  _this = this;

  this.vk = new VK({
  call: "execute",
  token: config.access_token
  })
  // Commands array
  this.commands = [];
  this.utils = require("./utils");
  this.sets = config;
  // Примитивная база
  this.users = require("../db/users.json");
   this.bans = require("../db/bans.json"); 

  _this.vk.api.users.get()
  .then(function (res) {
  _this.sets.id = res[0].id;
  return console.log(`[VK] new account ${res[0].first_name} ${res[0].last_name} | ${res[0].id}`);
  })
 
  this.start = function () {
  _this.vk.longpoll.start()
  .then(() => console.log(`[BOT] Longpoll has been started..`))
 
  _this.vk.longpoll.on("message", async function (message) {
  if(!message.text || ~message.flags.indexOf("outbox")) return;
  // Добавление нового юзера в "базу", если его нет
  if(!_this.users[message.user]) {
  _this.vk.api.users.get({
  user_ids: message.user
  }).then(function (res) {
  _this.users[message.user] = {
  nick: res[0].first_name,
  balance: 5000,
             lvl: 0
  }
  })
  }

  var cmd = _this.commands.find(e => e.pattern.test(message.text));
  if(!cmd) return;
  if(_this.users[message.user].lvl < cmd.admin) return;
       if(_this.bans[message.user]){
         if(cmd.ban == false && _this.bans[message.user].ban == true){
          return;
         }
       } 
  // Logs
  console.log(`[MSG] Message from ${message.user}` + (message.chat ? ' | Chat_id: ' + message.chat : '') + `, message: ${message.text.match(/.{0,36}/).join("")}`);
  // Args
  message.args = message.text.match(cmd.pattern) || [];
  // Append / apply
  message.body = "";
  message.append = (text) => message.body += text + '\n';
  message.apply = function (params = {}) {
  message.reply(message.body, params);
  message.body = "";
  }
  // Plain сообщение, т.е "Имя + текст"
  message.plain = async function (text, params = {}) {
  const res = await _this.vk.api.users.get({
  user_id: message.user
  })
  return message.send(`@id${message.user}(${_this.users[message.user].nick})` + ', ' + text, params);
  }
  // Применение функции
  cmd.func(message, _this);
  })

  _this.vk.longpoll.on("chat.invite", function (action) {
  if(action.invite === _this.sets.id) return;
  _this.vk.api.users.get({
  user_ids: action.invite
  }).then(function (res) {
  return action.send(`Приветствую *id${action.invite} (${res[0].first_name}) в нашей крутой беседе`);
  })
  })

  _this.vk.longpoll.on("chat.kick", function (action) {
  if(action.invite === _this.sets.id) return;
  return action.send(`Пока :C`);
  })

  /*setInterval(async() => {
  _this.vk.api.friends.getRequests({})
  .then(res => {
  if(res.count == 0) return;
  res.items.map(x => {
  _this.vk.api.friends.add({ user_id: x })
  .catch(() => {
  _this.vk.api.friends.delete({ user_id: x })
  })
  });
  })
  _this.vk.api.friends.getRequests({out: 1})
  .then(res => {
  if(res.count == 0) return;
  res.items.map(x => {
  _this.vk.api.friends.delete({ user_id: x })
  })
  })
  }, 60000)*/
  }

  this.on = function (p,d,f,a = 0,b = false) {
  _this.commands.push({
  "pattern": p,  // Паттерн команды, например /^!test/i
  "description": d,  // Описание команды
  "func": f,  // Функция команды
  "admin": a,            // Является ли команда администраторкой, по умолчанию 0
       "ban": b             // Могут ли команду использовать забаненные
  })
  }

  this.db = {
  save: () => {
  setInterval(() => {
  fs.writeFileSync("./db/users.json", JSON.stringify(_this.users, null, "\t"));
         fs.writeFileSync("./db/bans.json", JSON.stringify(_this.bans, null, "\t"));
  }, 1000)
  }
  }
}

module.exports = InjBot;
Скажи токо честно, ты спиздил это или сам сделал ?
 
Назад
Сверху Снизу