- Статус
 - Оффлайн
 
- Регистрация
 - 17 Мар 2018
 
- Сообщения
 - 120
 
- Реакции
 - 25
 
С чем мы будем работать - 
Начинаем работу:
переходим в bot/index.js
	
	
		
			
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
заменяем 
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
 на 
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
		
	
	
	
		
			
	
	
	
		
			
	
	
	
		
			
	
Добавляем команды:
	
	
		
			
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
		
	
	
	
		
			
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
		
	
	
	
		
			
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
		
	
	
	
		
			
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
		
	
	
	
		
			
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
		
	
Добавляем систему банов:
	
	
		
			
	
	
	
		
			
	
Сурс:
	
	
		
			
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
		
	
Пример моего бота: https://vk.com/oskar_bot
				
			
	Пожалуйста, авторизуйтесь для просмотра ссылки.
Начинаем работу:
переходим в bot/index.js
			
				Код:
			
		
		
		  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);
  }
	
			
				Код:
			
		
		
		res[0].first_name
	
			
				Код:
			
		
		
		@id${message.user}(${_this.users[message.user].nick})
	находим 
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
заменяем на 
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
		
			
				Код:
			
		
		
		_this.users[message.user] = {
  nick: res[0].first_name,
  balance: 5000
	
			
				Код:
			
		
		
		_this.users[message.user] = {
  nick: res[0].first_name,
  balance: 5000,
  lvl: 0
}
	находим 
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
 заменяем на 
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
		
			
				Код:
			
		
		
		  this.on = function (p,d,f,a = false) {
  _this.commands.push({
  "pattern": p,  // Паттерн команды, например /^!test/i
  "description": d,  // Описание команды
  "func": f,  // Функция команды
  "admin": a,            // Является ли команда администраторкой, по умолчанию 0
  })
  }
	
			
				Код:
			
		
		
		  this.on = function (p,d,f,a = 0) {
	находим 
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
 заменяем на 
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
		
			
				Код:
			
		
		
		if(cmd.admin && !~config.admins.indexOf(message.user)) return;
	
			
				Код:
			
		
		
		 if(_this.users[message.user].lvl < cmd.admin) return;
	Добавляем команды:
			
				Код:
			
		
		
		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, "ᅠ") : result.toString()
  );
}, 2);
	
			
				Код:
			
		
		
		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-ти символов!`)
  );
});
	
			
				Код:
			
		
		
		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);
	
			
				Код:
			
		
		
		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);
	
			
				Код:
			
		
		
		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
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
создаем в /db/bans.json и вводим туда {}
В начале кода пишем this.bans = require("../db/bans.json");
Ищем this.db и добавляем
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Добавляем 
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
		Добавляем в this.on
			
				Код:
			
		
		
		 "ban": b ; b = false
	В начале кода пишем this.bans = require("../db/bans.json");
Ищем this.db и добавляем
			
				Код:
			
		
		
		fs.writeFileSync("./db/bans.json", JSON.stringify(_this.bans, null, "\t"));
	
			
				Код:
			
		
		
		      if(_this.bans[message.user]){
         if(cmd.ban == false && _this.bans[message.user].ban == true){
          return;
         }
       }
	Ban:
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Unban:
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
		
			
				Код:
			
		
		
		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);
	
			
				Код:
			
		
		
		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);
	
			
				Код:
			
		
		
		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;
	
			
				Последнее редактирование: 
			
		
	
								
								
									
	
								
							
							
				