nexagns72
22-09-2017, 20:02
В своём проекте «Чат Бот Наполеон Вк» я планирую использовать данную нубскую базу данных
var fs = require('fs')
function Model (fields, dbPath) {
this.fields = fields
this.dbPath = dbPath
var fs = require('fs');
var defaultBase = {
"items": [],
"count": 0
}
if (fs.existsSync(this.dbPath)) {
var base = JSON.parse(fs.readFileSync(this.dbPath, 'UTF-8'))
} else {
var base = defaultBase
}
this.rows = base.items
this.count = base.count
this.save = () => {
var base = {items: this.rows, count: this.count}
fs.writeFileSync(this.dbPath, JSON.stringify(base))
}
this.makeId = () => {
var text = "";
var possible = "abcdefghijklmnopqrstuvwxyz0123456789";
for (var i = 0; i < 10; i++)
text += possible.charAt(Math.floor(Math.random() * possible.length));
return text;
}
this.insert = (o) => {
this.count = this.count + 1
var id = this.makeId()
var r = {_id: id}
for (f in this.fields) {
r[f] = o[f]
}
this.rows.push(r)
this.save()
return r
}
this.findOne = (n, v, b) => {
var res = []
b.forEach((row)=>{
if (this.fields[n] == 'number') {
if (row[n] == v) {
res.push(row)
}
} else if (this.fields[n] == 'string') {
if (row[n].toLowerCase() == v.toLowerCase()) {
res.push(row)
}
}
})
return res
}
this.get = (id) =>{
var r = false
this.rows.forEach((item)=>{
if (!r && item._id == id)
r = item
})
return r
}
this.find = (o) =>{
var b = this.rows
for (i in o) {
r = this.findOne(i, o[i], b)
}
if (r.length > 0) {
return r
} else
return false
}
this.delete = (o) =>{
var r = this.find(o)
r.forEach((item)=>{
var index = this.rows.indexOf(item);
if (index > -1) {
this.rows.splice(index, 1);
}
})
this.save()
}
}
function Db (models, p = false) {
this.p = {
dbPath: __dirname,
modelPath: __dirname
}
if (p) {
for(i in p) {
this.p[i] = p[i]
}
}
this.models = []
models.forEach((m)=>{
var name = m.name
this.models[name] = new Model(m, this.p)
this[name] = this.models[name]
})
}
module.exports = Model
Бот работает на модуле VK Promise (https://www.npmjs.com/package/VK-Promise)
Бот состоит из
1) Config.js
module.exports =
{
access_token: 'ТУТ МОЙ ТОКЕН ОТ ВК'
}
2) Intro.js (Приветствие когда запускаешь в консоли
var fs = require('fs')
var interval = 100
var intro = fs.readFileSync('./intro.txt', 'UTF-8')
var strings = intro.split('\n')
writeString(strings)
function writeString(strings) {
if (strings.length > 0) {
var string = strings.shift()
console.log(string);
if (string.trim() != '') setTimeout(()=>{writeString(strings)}, interval)
else writeString(strings)
}
}
Само интро записано в тхт файл и берется от туда
3) napoleon.js собственно сам бот, один момент, ответы на команду /все команды тоже берутся из тхт файла
//Node.js Bot for VK "Napoleon" v1.0
const Db = require('noob-db')
var infa = new Db ({
name: 'string',
text: 'string'
}, './infa.json')
var fs = require('fs')
//Приветствие
require('./intro.js')
//Загрузка конфига
var config = require('./config.js')
//Загрузка текста со списком команд
var help = fs.readFileSync('./help.txt', 'UTF-8')
//Подключение модуля "VK-Promise"
var VK = require("VK-Promise")
//Токен задается в файле "config.js"
var vk = new VK(config.access_token);
//Запуск LongPoll сервера
vk.init_longpoll();
var commands = [
{com: '/test', reply: 'OK'},
{com: '/Команды', reply: help},
{com: '/Когда умер Наполеон?', reply: ['Историю учить надо было, долбоеб!', 'Загугли, или чо блять, тебе еще и подсказать как в гугол войти кек', 'Он умер, когда твоя мамка под стол пешком ходила', '5 мая 1821', 'Незнаю, отыбись', 'А ты с какой целью интерисуешься?', 'Ну что я тебе могу сказать, выглядишь ты как долбоеб, а спрашиваешь такие умные вещи! Подозрительно как то...']},
{com: '/Где умер Наполеон?', reply: ['На кровати твоей мамки кек', 'На лесобазе', 'На Широтной', 'Он не умер, он жиф', 'Точно не в России', 'Где то там далеко, где нету спайса и анаши', 'не ну я хз, я не шарю в током', 'В пизде. Грубо, зато в рифму']},
{com: '/От чего умер Наполеон?', reply: ['От цирроза печени', 'От рака матки, он же телкой был', 'От пули в лоб', 'ИВО ЧО УБЕЛЕ ЧТО ЛЕ', 'От твоих тупых вопросов', 'Все из за тебя, я тебе говорю!']},
{com: '/Зачем умер Наполеон?', reply: ['Что бы потом все создавали его фейки 😉', 'Его заморозили и скоро он даст пиздов вам', 'Что бы выяснить чо там как на небесеах', 'Прост)))', 'Не важно...', 'Спроси че полегче', 'Нахуй послан уебок']},
{com: '/С какого ты района Бонапарт?', reply: ['С Широтной конечно', 'В переходе на Максима Горького сижу', 'С элитного', 'Лесобаза', 'КПД еба']},
{com: '/Бонапарт, го на стрелу к кристаллу', reply: ['Не, я зассал', 'Я в стороне постою', 'Ну приходи, я тебя выебу', 'Чо ито токое крестал?', 'Хм...зря ты конечно меня туда позвал, потому что я выбью тебе зубы так, что чистить их придется тебе через задний проход', 'Го кек']},
{com: '/Кто сливает Ге?', reply: ['Казанцев', 'Викторовна', 'Якуб', 'Чапский', 'Никто', 'Сокол', 'Архипова', 'Ягода', 'Ялын русский паринь', 'Филятова', 'Поздняк', 'Киррюша', 'Джоник', 'Тарасова', 'Паншин', 'Пидоры кокието', 'Опять слеле зоебали', 'Крысенов']},
{com: '/Баер', reply: 'Ибанька 2'},
{com: 'Нормальные есть?', reply: 'Нет, одни норкоманы кокие-то'},
{com: '/инфа+',
action: (msg, arg)=>{
var name = arg.shift() // получаем первое слово
var text = arg.getText(); //получаем остальной текст
infa.insert({name: name, text: text})
.write()
}
},
{com: '/инфа',
action: (msg, arg)=>{
var name = arg.shift()
var r = infa.find({ name: name })
if (r) {
var text = 'Инфа про ' + name + ':'
r.forEach((i)=>{
text += '\n- ' + i.text
})
msg.reply(text)
} else {
msg.reply('Нет инфы про ' + name)
}
}
},
]
function doCommand(msg) {
commands.forEach((command) => {
if (command.reply) {
if (command.com.toLowerCase() == msg.body.toLowerCase()) {
if (Array.isArray(command.reply)) var reply = command.reply[Math.floor(Math.random() * command.reply.length)];
else var reply = command.reply
msg.reply(reply)
}
}
if (command.action) {
var arg = msg.body.split(' ')
Object.defineProperty(arg, "getText", {enumerable: false, writable: true});
arg.getText = () => {
return arg.join(' ');
}
var c = arg.shift()
if (c.toLowerCase() == command.com.toLowerCase()) {
command.action(msg, arg)
}
}
})
}
// Отлов сообщений
vk.on("message", function(event, msg) {
if (msg.body == 'Ga))') {
msg.send("Onal")
}
if (msg.body.toLowerCase() == 'Га'.toLowerCase()) {
msg.send("Онал")
}
if (msg.body.toLowerCase() == 'Да, онал'.toLowerCase()) {
msg.send("Ггг")
}
if (msg.body.toLowerCase() == '/Кто сливает Ге?'.toLowerCase()) {
var replies = ['Казанцев', 'Викторовна', 'Якуб', 'Чапский', 'Никто', 'Сокол', 'Архипова', 'Ягода', 'Ялын русский паринь', 'Филятова', 'Поздняк', 'Киррюша', 'Джоник', 'Тарасова', 'Паншин', 'Пидоры кокието', 'Опять слеле зоебали', 'Крысенов']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == '/Бонапарт, расскажи анекдот'.toLowerCase()) {
var replies = ['Отечественная военная новинка: удлинённый штык для айфона, позволяющий делать селфи во время боя', '— Как ты сюда попал? — спрашивает заключенный у только что прибывшего. — По рассеянности, — отвечает новичок. — Я хотел украсть невесту, но успел прихватить только приданое. ', 'Поздняя осень. У окна стоят два программиста, новичок и матерый, курят. Новичок (восторженно): — О, снег падает! Матерый (задумчиво, не отрывая взгляда): — Да, 15 килобайт в секунду….', 'На овощном рынке покупатель-женщина длительное время щупает на прилавке подряд все огурцы. Продавщица, смотря на это действие, замечает: - Женщина, не мните огурцы! Всё равно твёрже не будут!', 'Моего парня все время возбуждает то что я плачу, чем сильнее реву, тем сильне у него стоит. (Комментарий: Этому парню, вместо порно, лучше передачу Жди Меня смотреть)', 'Я не понимаю что такое анекдот, поэтому иди ка ты куда шел']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == '/Что меня ждет вечером?'.toLowerCase()) {
var replies = ['Онал 👉👌😨😌', 'По ебалу получишь😡', 'У тебя будет романтик с любой участницой беседочки на выбор (ну и может чета еще перепадет)😍', 'Куча бабла 🔟0⃣0⃣💲', 'Птичка', 'Ничего', 'Пика дроченая♠ и хуй точеный 🍡', 'Грязное бельишко 👙']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
/* Викторина с вопросами
Количество вариантов ответов = 2
Для того что бы бот мог ответить вам,
правильно ли вы ответили или нет,
необходимо написать один из вариантов ответа.
Затем бот выдаст результат в соотвествии
со строкой из //Варианты ответов */
if (msg.body.toLowerCase() == '/Задай вопрос'.toLowerCase()) {
var replies = ['Сколько ног у улитки? \n Напиши свой ответ "/Одна" или "/Две"', 'Кто из президентов США написал свой собственный рассказ про Шерлока Холмса? \n Напиши свой ответ "Франклин Рузвельт" или "Рональд Рейган"', 'Какую пошлину ввели в XII веке в Англии для того чтобы заставить мужчин пойти на войну? \n Напиши свой ответ "Налог на тунеядство" или "Налог на трусость"', 'Основой для «Сказки о рыбаке и рыбке Пушкина послужила сказка братьев Гримм «Рыбак и его жена». В ней немецкая «коллега» нашей старухи превратилась в: \n Выбери правильный ответ. "Папу Римского" или "Директора рыбзавода"', 'Кто из знаменитых художников за жизнь продал всего одну картину? \n Напиши верный ответ "Ренуар" или "Ван Гог"', 'Российский мультфильм, удостоенный «Оскара», — это… \n Напиши верный ответ "Простоквашино" или "Старик у моря"', 'Один известный писатель рассказывал, что списал образ старушки-вредины со своей бывшей жены. При этом бабулька оказалась удивительно похожей на Коко Шанель. На голове у нее всегда была шляпка со складной тульей, благодаря которой она и получила прозвище. \n Выбери верный ответ "Шапокляк" или "Мадам Баттерфляй"', 'У индейцев из немногочисленного североамериканского племени квакиутл есть традиция: беря деньги в долг, они оставляют в залог… \n Выбери варинат ответа "Амулет" или "Имя"', 'Высота Останкинской башни — 540 метров. Сколько нужно размотать рулонов туалетной бумаги, чтобы получилось столько же метров? \n Выбери правильный вариант ответа "10" или "20"']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
//Варианты ответов
if (msg.body.toLowerCase() == '/Одна'.toLowerCase()) {
msg.reply("Какой ты вумный игрок! Правильно!!!😃🎁")
}
if (msg.body.toLowerCase() == '/Две'.toLowerCase()) {
var replies = ['Ну ты и ебанутый(ая)...неверно. Иди загугли ответ!!!😡😡😡', 'Нихуя подобного, думай и отвечай правильно блэт!']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == 'Франклин Рузвельт'.toLowerCase()) {
msg.reply("Какой ты вумный игрок! Правильно!!!😃🎁 \n \n 32-1 президент США Франклин Рузвельт был известен и как писатель. В 1945 году он попытался воскресить образ знаменитого литературного героя, написав сочинение «Бейкер-стрит фолио: пять записок о Шерлоке Холмсе от Франклина Делано Рузвельта».")
}
if (msg.body.toLowerCase() == 'Рональд Рейган'.toLowerCase()) {
var replies = ['Ну ты и ебанутый(ая)...неверно. Иди загугли ответ!!!😡😡😡', 'Бляяяяяяять ты тупой. НЕ ВЕРНО!!!!!!!!!!!!!!!']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == 'Налог на трусость'.toLowerCase()) {
msg.reply("Какой ты вумный игрок! Правильно!!!😃🎁 \n \n Англичанам приходилось платить налог на трусость. Им облагали всех, кто не желал принимать участие в войнах во славу короля.")
}
if (msg.body.toLowerCase() == 'Налог на тунеядство'.toLowerCase()) {
var replies = ['Ну ты и ебанутый(ая)...неверно. Иди загугли ответ!!!😡😡😡', 'Нет ни угадал']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == 'Папу Римского'.toLowerCase()) {
msg.reply("Какой ты вумный игрок! Правильно!!!😃🎁 \n \n Героиня сказки братьев Гримм «Рыбак и его жена» превратилась в папу Римского. И только после желания стать Господом Богом осталась ни с чем.")
}
if (msg.body.toLowerCase() == 'Директора рыбзавода'.toLowerCase()) {
var replies = ['Ну ты и ебанутый(ая)...неверно. Иди загугли ответ!!!😡😡😡', 'Подумай еще хорошенько...']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == 'Ван Гог'.toLowerCase()) {
msg.reply("Какой ты вумный игрок! Правильно!!!😃🎁 \n \n Единственная проданная при жизни картина Ван Гога — «Красные виноградники в Арле».")
}
if (msg.body.toLowerCase() == 'Ренуар'.toLowerCase()) {
var replies = ['Ну ты и ебанутый(ая)...неверно. Иди загугли ответ!!!😡😡😡', 'Не правильно']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == 'Старик у моря'.toLowerCase()) {
msg.reply("Какой ты вумный игрок! Правильно!!!😃🎁 \n \n В 2000 году премию «Оскар» вручили российскому режиссеру, художнику-мультипликатору Александру Петрову за лучший короткометражный мультфильм года «Старик и море», снятый по мотивам повести Эрнеста Хемингуэя.")
}
if (msg.body.toLowerCase() == 'Простоквашино'.toLowerCase()) {
var replies = ['Ну ты и ебанутый(ая)...неверно. Иди загугли ответ!!!😡😡😡']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == 'Шапокляк'.toLowerCase()) {
msg.reply("Какой ты вумный игрок! Правильно!!!😃🎁 \n \n Правильный ответ — Шапокляк.")
}
if (msg.body.toLowerCase() == 'Мадам Баттерфляй'.toLowerCase()) {
var replies = ['Ну ты и ебанутый(ая)...неверно. Иди загугли ответ!!!😡😡😡']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == 'Имя'.toLowerCase()) {
msg.reply("Какой ты вумный игрок! Правильно!!!😃🎁 \n \n Индеец племени квакиутль, беря деньги в долг, может оставить в залог свое имя. Пока он не возвратит долг, к нему никто не обратится по имени.")
}
if (msg.body.toLowerCase() == 'Амулет'.toLowerCase()) {
var replies = ['Ну ты и ебанутый(ая)...неверно. Иди загугли ответ!!!😡😡😡']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == '10'.toLowerCase()) {
msg.reply("Какой ты вумный игрок! Правильно!!!😃🎁 \n \n Это всего 10 рулонов (стандартный рулон — 54 метра)")
}
if (msg.body.toLowerCase() == '20'.toLowerCase()) {
var replies = ['Ну ты и ебанутый(ая)...неверно. Иди загугли ответ!!!😡😡😡']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == '/Факты о Бонапарте'.toLowerCase()) {
var replies = ['Сидит в говнобеседке', 'Помогал строить Наяганьским деревенщинам славный город Тюмень', 'Охранник Ашана', 'Лох. Пидр.', 'Фсе факты в гугле есть', 'Пшла нахуй, инфу ищо копать на меня собрались...крысы ебаные', 'Умер 5 мая 1821 года']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == 'Наполеон'.toLowerCase()) {
msg.reply("Вкусный тортик 😍🎂🎂🎂")
}
doCommand(msg)
});
В этом napoleon.js есть пример как записать инфу о ком то, вот к примеру -
Я пишу боту /Инфа+ (ИМЯ) (САМ ТЕКСТ МНОЮ ПРИДУМАННЫЙ)
Далее пишу ему /Инфа (ЧЬЕ УКАЗАЛ ИМЯ ВЫШЕ) и он мне отвечат ИНФА ПРО (ИМЯ) (МОЙ ПРИДУМАННЫЙ ТЕКСТ)
А сохраняет и берет инфу он из файла infa.json
Так вот вопрос! Как сделать еще несколько таких вариаций, типа к примеру
Я пишу ему /(СВОЯ НОВАЯ КОМАНДА) = (ВАРИАНТ ОТВЕТА) и так несколько раз, он все запомнил к примеру в файл comands.json
И введя ему /(СВОЯ КОМАНДА) он отвечал моими заданными вариантами ответов рандомно
Ну и еще на десерт вопросик...
Как сделать что бы можно было например используя в беседке его, назначать ему те или иные права, к примеру присвоить такому то такому то ИД значение что он может добавлять новых участников, а вот такой то нет ну и к премеру что бы не изменяли название в беседке правило, если кто то изменит, бот изменит на исходное.
Помогите пожалуйста разобраться
var fs = require('fs')
function Model (fields, dbPath) {
this.fields = fields
this.dbPath = dbPath
var fs = require('fs');
var defaultBase = {
"items": [],
"count": 0
}
if (fs.existsSync(this.dbPath)) {
var base = JSON.parse(fs.readFileSync(this.dbPath, 'UTF-8'))
} else {
var base = defaultBase
}
this.rows = base.items
this.count = base.count
this.save = () => {
var base = {items: this.rows, count: this.count}
fs.writeFileSync(this.dbPath, JSON.stringify(base))
}
this.makeId = () => {
var text = "";
var possible = "abcdefghijklmnopqrstuvwxyz0123456789";
for (var i = 0; i < 10; i++)
text += possible.charAt(Math.floor(Math.random() * possible.length));
return text;
}
this.insert = (o) => {
this.count = this.count + 1
var id = this.makeId()
var r = {_id: id}
for (f in this.fields) {
r[f] = o[f]
}
this.rows.push(r)
this.save()
return r
}
this.findOne = (n, v, b) => {
var res = []
b.forEach((row)=>{
if (this.fields[n] == 'number') {
if (row[n] == v) {
res.push(row)
}
} else if (this.fields[n] == 'string') {
if (row[n].toLowerCase() == v.toLowerCase()) {
res.push(row)
}
}
})
return res
}
this.get = (id) =>{
var r = false
this.rows.forEach((item)=>{
if (!r && item._id == id)
r = item
})
return r
}
this.find = (o) =>{
var b = this.rows
for (i in o) {
r = this.findOne(i, o[i], b)
}
if (r.length > 0) {
return r
} else
return false
}
this.delete = (o) =>{
var r = this.find(o)
r.forEach((item)=>{
var index = this.rows.indexOf(item);
if (index > -1) {
this.rows.splice(index, 1);
}
})
this.save()
}
}
function Db (models, p = false) {
this.p = {
dbPath: __dirname,
modelPath: __dirname
}
if (p) {
for(i in p) {
this.p[i] = p[i]
}
}
this.models = []
models.forEach((m)=>{
var name = m.name
this.models[name] = new Model(m, this.p)
this[name] = this.models[name]
})
}
module.exports = Model
Бот работает на модуле VK Promise (https://www.npmjs.com/package/VK-Promise)
Бот состоит из
1) Config.js
module.exports =
{
access_token: 'ТУТ МОЙ ТОКЕН ОТ ВК'
}
2) Intro.js (Приветствие когда запускаешь в консоли
var fs = require('fs')
var interval = 100
var intro = fs.readFileSync('./intro.txt', 'UTF-8')
var strings = intro.split('\n')
writeString(strings)
function writeString(strings) {
if (strings.length > 0) {
var string = strings.shift()
console.log(string);
if (string.trim() != '') setTimeout(()=>{writeString(strings)}, interval)
else writeString(strings)
}
}
Само интро записано в тхт файл и берется от туда
3) napoleon.js собственно сам бот, один момент, ответы на команду /все команды тоже берутся из тхт файла
//Node.js Bot for VK "Napoleon" v1.0
const Db = require('noob-db')
var infa = new Db ({
name: 'string',
text: 'string'
}, './infa.json')
var fs = require('fs')
//Приветствие
require('./intro.js')
//Загрузка конфига
var config = require('./config.js')
//Загрузка текста со списком команд
var help = fs.readFileSync('./help.txt', 'UTF-8')
//Подключение модуля "VK-Promise"
var VK = require("VK-Promise")
//Токен задается в файле "config.js"
var vk = new VK(config.access_token);
//Запуск LongPoll сервера
vk.init_longpoll();
var commands = [
{com: '/test', reply: 'OK'},
{com: '/Команды', reply: help},
{com: '/Когда умер Наполеон?', reply: ['Историю учить надо было, долбоеб!', 'Загугли, или чо блять, тебе еще и подсказать как в гугол войти кек', 'Он умер, когда твоя мамка под стол пешком ходила', '5 мая 1821', 'Незнаю, отыбись', 'А ты с какой целью интерисуешься?', 'Ну что я тебе могу сказать, выглядишь ты как долбоеб, а спрашиваешь такие умные вещи! Подозрительно как то...']},
{com: '/Где умер Наполеон?', reply: ['На кровати твоей мамки кек', 'На лесобазе', 'На Широтной', 'Он не умер, он жиф', 'Точно не в России', 'Где то там далеко, где нету спайса и анаши', 'не ну я хз, я не шарю в током', 'В пизде. Грубо, зато в рифму']},
{com: '/От чего умер Наполеон?', reply: ['От цирроза печени', 'От рака матки, он же телкой был', 'От пули в лоб', 'ИВО ЧО УБЕЛЕ ЧТО ЛЕ', 'От твоих тупых вопросов', 'Все из за тебя, я тебе говорю!']},
{com: '/Зачем умер Наполеон?', reply: ['Что бы потом все создавали его фейки 😉', 'Его заморозили и скоро он даст пиздов вам', 'Что бы выяснить чо там как на небесеах', 'Прост)))', 'Не важно...', 'Спроси че полегче', 'Нахуй послан уебок']},
{com: '/С какого ты района Бонапарт?', reply: ['С Широтной конечно', 'В переходе на Максима Горького сижу', 'С элитного', 'Лесобаза', 'КПД еба']},
{com: '/Бонапарт, го на стрелу к кристаллу', reply: ['Не, я зассал', 'Я в стороне постою', 'Ну приходи, я тебя выебу', 'Чо ито токое крестал?', 'Хм...зря ты конечно меня туда позвал, потому что я выбью тебе зубы так, что чистить их придется тебе через задний проход', 'Го кек']},
{com: '/Кто сливает Ге?', reply: ['Казанцев', 'Викторовна', 'Якуб', 'Чапский', 'Никто', 'Сокол', 'Архипова', 'Ягода', 'Ялын русский паринь', 'Филятова', 'Поздняк', 'Киррюша', 'Джоник', 'Тарасова', 'Паншин', 'Пидоры кокието', 'Опять слеле зоебали', 'Крысенов']},
{com: '/Баер', reply: 'Ибанька 2'},
{com: 'Нормальные есть?', reply: 'Нет, одни норкоманы кокие-то'},
{com: '/инфа+',
action: (msg, arg)=>{
var name = arg.shift() // получаем первое слово
var text = arg.getText(); //получаем остальной текст
infa.insert({name: name, text: text})
.write()
}
},
{com: '/инфа',
action: (msg, arg)=>{
var name = arg.shift()
var r = infa.find({ name: name })
if (r) {
var text = 'Инфа про ' + name + ':'
r.forEach((i)=>{
text += '\n- ' + i.text
})
msg.reply(text)
} else {
msg.reply('Нет инфы про ' + name)
}
}
},
]
function doCommand(msg) {
commands.forEach((command) => {
if (command.reply) {
if (command.com.toLowerCase() == msg.body.toLowerCase()) {
if (Array.isArray(command.reply)) var reply = command.reply[Math.floor(Math.random() * command.reply.length)];
else var reply = command.reply
msg.reply(reply)
}
}
if (command.action) {
var arg = msg.body.split(' ')
Object.defineProperty(arg, "getText", {enumerable: false, writable: true});
arg.getText = () => {
return arg.join(' ');
}
var c = arg.shift()
if (c.toLowerCase() == command.com.toLowerCase()) {
command.action(msg, arg)
}
}
})
}
// Отлов сообщений
vk.on("message", function(event, msg) {
if (msg.body == 'Ga))') {
msg.send("Onal")
}
if (msg.body.toLowerCase() == 'Га'.toLowerCase()) {
msg.send("Онал")
}
if (msg.body.toLowerCase() == 'Да, онал'.toLowerCase()) {
msg.send("Ггг")
}
if (msg.body.toLowerCase() == '/Кто сливает Ге?'.toLowerCase()) {
var replies = ['Казанцев', 'Викторовна', 'Якуб', 'Чапский', 'Никто', 'Сокол', 'Архипова', 'Ягода', 'Ялын русский паринь', 'Филятова', 'Поздняк', 'Киррюша', 'Джоник', 'Тарасова', 'Паншин', 'Пидоры кокието', 'Опять слеле зоебали', 'Крысенов']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == '/Бонапарт, расскажи анекдот'.toLowerCase()) {
var replies = ['Отечественная военная новинка: удлинённый штык для айфона, позволяющий делать селфи во время боя', '— Как ты сюда попал? — спрашивает заключенный у только что прибывшего. — По рассеянности, — отвечает новичок. — Я хотел украсть невесту, но успел прихватить только приданое. ', 'Поздняя осень. У окна стоят два программиста, новичок и матерый, курят. Новичок (восторженно): — О, снег падает! Матерый (задумчиво, не отрывая взгляда): — Да, 15 килобайт в секунду….', 'На овощном рынке покупатель-женщина длительное время щупает на прилавке подряд все огурцы. Продавщица, смотря на это действие, замечает: - Женщина, не мните огурцы! Всё равно твёрже не будут!', 'Моего парня все время возбуждает то что я плачу, чем сильнее реву, тем сильне у него стоит. (Комментарий: Этому парню, вместо порно, лучше передачу Жди Меня смотреть)', 'Я не понимаю что такое анекдот, поэтому иди ка ты куда шел']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == '/Что меня ждет вечером?'.toLowerCase()) {
var replies = ['Онал 👉👌😨😌', 'По ебалу получишь😡', 'У тебя будет романтик с любой участницой беседочки на выбор (ну и может чета еще перепадет)😍', 'Куча бабла 🔟0⃣0⃣💲', 'Птичка', 'Ничего', 'Пика дроченая♠ и хуй точеный 🍡', 'Грязное бельишко 👙']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
/* Викторина с вопросами
Количество вариантов ответов = 2
Для того что бы бот мог ответить вам,
правильно ли вы ответили или нет,
необходимо написать один из вариантов ответа.
Затем бот выдаст результат в соотвествии
со строкой из //Варианты ответов */
if (msg.body.toLowerCase() == '/Задай вопрос'.toLowerCase()) {
var replies = ['Сколько ног у улитки? \n Напиши свой ответ "/Одна" или "/Две"', 'Кто из президентов США написал свой собственный рассказ про Шерлока Холмса? \n Напиши свой ответ "Франклин Рузвельт" или "Рональд Рейган"', 'Какую пошлину ввели в XII веке в Англии для того чтобы заставить мужчин пойти на войну? \n Напиши свой ответ "Налог на тунеядство" или "Налог на трусость"', 'Основой для «Сказки о рыбаке и рыбке Пушкина послужила сказка братьев Гримм «Рыбак и его жена». В ней немецкая «коллега» нашей старухи превратилась в: \n Выбери правильный ответ. "Папу Римского" или "Директора рыбзавода"', 'Кто из знаменитых художников за жизнь продал всего одну картину? \n Напиши верный ответ "Ренуар" или "Ван Гог"', 'Российский мультфильм, удостоенный «Оскара», — это… \n Напиши верный ответ "Простоквашино" или "Старик у моря"', 'Один известный писатель рассказывал, что списал образ старушки-вредины со своей бывшей жены. При этом бабулька оказалась удивительно похожей на Коко Шанель. На голове у нее всегда была шляпка со складной тульей, благодаря которой она и получила прозвище. \n Выбери верный ответ "Шапокляк" или "Мадам Баттерфляй"', 'У индейцев из немногочисленного североамериканского племени квакиутл есть традиция: беря деньги в долг, они оставляют в залог… \n Выбери варинат ответа "Амулет" или "Имя"', 'Высота Останкинской башни — 540 метров. Сколько нужно размотать рулонов туалетной бумаги, чтобы получилось столько же метров? \n Выбери правильный вариант ответа "10" или "20"']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
//Варианты ответов
if (msg.body.toLowerCase() == '/Одна'.toLowerCase()) {
msg.reply("Какой ты вумный игрок! Правильно!!!😃🎁")
}
if (msg.body.toLowerCase() == '/Две'.toLowerCase()) {
var replies = ['Ну ты и ебанутый(ая)...неверно. Иди загугли ответ!!!😡😡😡', 'Нихуя подобного, думай и отвечай правильно блэт!']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == 'Франклин Рузвельт'.toLowerCase()) {
msg.reply("Какой ты вумный игрок! Правильно!!!😃🎁 \n \n 32-1 президент США Франклин Рузвельт был известен и как писатель. В 1945 году он попытался воскресить образ знаменитого литературного героя, написав сочинение «Бейкер-стрит фолио: пять записок о Шерлоке Холмсе от Франклина Делано Рузвельта».")
}
if (msg.body.toLowerCase() == 'Рональд Рейган'.toLowerCase()) {
var replies = ['Ну ты и ебанутый(ая)...неверно. Иди загугли ответ!!!😡😡😡', 'Бляяяяяяять ты тупой. НЕ ВЕРНО!!!!!!!!!!!!!!!']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == 'Налог на трусость'.toLowerCase()) {
msg.reply("Какой ты вумный игрок! Правильно!!!😃🎁 \n \n Англичанам приходилось платить налог на трусость. Им облагали всех, кто не желал принимать участие в войнах во славу короля.")
}
if (msg.body.toLowerCase() == 'Налог на тунеядство'.toLowerCase()) {
var replies = ['Ну ты и ебанутый(ая)...неверно. Иди загугли ответ!!!😡😡😡', 'Нет ни угадал']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == 'Папу Римского'.toLowerCase()) {
msg.reply("Какой ты вумный игрок! Правильно!!!😃🎁 \n \n Героиня сказки братьев Гримм «Рыбак и его жена» превратилась в папу Римского. И только после желания стать Господом Богом осталась ни с чем.")
}
if (msg.body.toLowerCase() == 'Директора рыбзавода'.toLowerCase()) {
var replies = ['Ну ты и ебанутый(ая)...неверно. Иди загугли ответ!!!😡😡😡', 'Подумай еще хорошенько...']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == 'Ван Гог'.toLowerCase()) {
msg.reply("Какой ты вумный игрок! Правильно!!!😃🎁 \n \n Единственная проданная при жизни картина Ван Гога — «Красные виноградники в Арле».")
}
if (msg.body.toLowerCase() == 'Ренуар'.toLowerCase()) {
var replies = ['Ну ты и ебанутый(ая)...неверно. Иди загугли ответ!!!😡😡😡', 'Не правильно']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == 'Старик у моря'.toLowerCase()) {
msg.reply("Какой ты вумный игрок! Правильно!!!😃🎁 \n \n В 2000 году премию «Оскар» вручили российскому режиссеру, художнику-мультипликатору Александру Петрову за лучший короткометражный мультфильм года «Старик и море», снятый по мотивам повести Эрнеста Хемингуэя.")
}
if (msg.body.toLowerCase() == 'Простоквашино'.toLowerCase()) {
var replies = ['Ну ты и ебанутый(ая)...неверно. Иди загугли ответ!!!😡😡😡']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == 'Шапокляк'.toLowerCase()) {
msg.reply("Какой ты вумный игрок! Правильно!!!😃🎁 \n \n Правильный ответ — Шапокляк.")
}
if (msg.body.toLowerCase() == 'Мадам Баттерфляй'.toLowerCase()) {
var replies = ['Ну ты и ебанутый(ая)...неверно. Иди загугли ответ!!!😡😡😡']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == 'Имя'.toLowerCase()) {
msg.reply("Какой ты вумный игрок! Правильно!!!😃🎁 \n \n Индеец племени квакиутль, беря деньги в долг, может оставить в залог свое имя. Пока он не возвратит долг, к нему никто не обратится по имени.")
}
if (msg.body.toLowerCase() == 'Амулет'.toLowerCase()) {
var replies = ['Ну ты и ебанутый(ая)...неверно. Иди загугли ответ!!!😡😡😡']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == '10'.toLowerCase()) {
msg.reply("Какой ты вумный игрок! Правильно!!!😃🎁 \n \n Это всего 10 рулонов (стандартный рулон — 54 метра)")
}
if (msg.body.toLowerCase() == '20'.toLowerCase()) {
var replies = ['Ну ты и ебанутый(ая)...неверно. Иди загугли ответ!!!😡😡😡']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == '/Факты о Бонапарте'.toLowerCase()) {
var replies = ['Сидит в говнобеседке', 'Помогал строить Наяганьским деревенщинам славный город Тюмень', 'Охранник Ашана', 'Лох. Пидр.', 'Фсе факты в гугле есть', 'Пшла нахуй, инфу ищо копать на меня собрались...крысы ебаные', 'Умер 5 мая 1821 года']
var reply = replies[Math.floor(Math.random() * replies.length)];
msg.reply(reply)
}
if (msg.body.toLowerCase() == 'Наполеон'.toLowerCase()) {
msg.reply("Вкусный тортик 😍🎂🎂🎂")
}
doCommand(msg)
});
В этом napoleon.js есть пример как записать инфу о ком то, вот к примеру -
Я пишу боту /Инфа+ (ИМЯ) (САМ ТЕКСТ МНОЮ ПРИДУМАННЫЙ)
Далее пишу ему /Инфа (ЧЬЕ УКАЗАЛ ИМЯ ВЫШЕ) и он мне отвечат ИНФА ПРО (ИМЯ) (МОЙ ПРИДУМАННЫЙ ТЕКСТ)
А сохраняет и берет инфу он из файла infa.json
Так вот вопрос! Как сделать еще несколько таких вариаций, типа к примеру
Я пишу ему /(СВОЯ НОВАЯ КОМАНДА) = (ВАРИАНТ ОТВЕТА) и так несколько раз, он все запомнил к примеру в файл comands.json
И введя ему /(СВОЯ КОМАНДА) он отвечал моими заданными вариантами ответов рандомно
Ну и еще на десерт вопросик...
Как сделать что бы можно было например используя в беседке его, назначать ему те или иные права, к примеру присвоить такому то такому то ИД значение что он может добавлять новых участников, а вот такой то нет ну и к премеру что бы не изменяли название в беседке правило, если кто то изменит, бот изменит на исходное.
Помогите пожалуйста разобраться