function sendFilesByQuery(chatId, query) {
User.findOne({ telegramId: chatId }).then((user) => {
// фильтры на основе которых формируется запрос
if (user.filter.time === 1) {
time = { $gte: 2000 };
}
if (user.filter.time === 2) {
time = { $gte: 2015 };
}
if (user.filter.pop === 1) {
pop = { $lt: 71 };
}
if (user.filter.pop === 2) {
pop = { $gt: 9 };
}
if (user.filter.time === 0) {
delete query.year;
}
if (user.filter1.pop === 0) {
delete query.viewed;
}
query = {
type: query.toString(),
viewed: pop,
year: time,
};
//Поиск все подходящих документов
File.find(query).then((files) => {
//Формируется масссив только _id, чтобы дальше исключить повторы
let queryfiles = files.map((element) => element._id);
//Массив со всеми id
let allfiles;
//Массив с просмотренными id
let userfiles;
//Массив с отфильтрованными не просмотренными id
let rndfile;
switch (query) {
case "1":
userfiles = user.files.type1;
allfiles = user.allfiles.type1;
//Исключаем повторы из массива
rndfile = queryfiles.filter((f) => !userfiles.includes(f));
bot.sendMessage(chatId, "text");
break;
}
File.findById(rndfile)
//Восстанавливает целый рандомный документ из id
.skip(Math.floor(Math.random() * rndfile.length))
.then((rndfile) => {
bot.sendDocument(chatId, rndfile.gif);
if (!rndfile) {
bot.sendMessage(chatId, "text");
}
if (userfiles.length >= allfiles.length - 1) {
clearfilesType(user.telegramId, query);
}
});
});
});
}
function sendFilesByQuery(chatId, query) {
User.findOne({ telegramId: chatId }).then((user) => {
// фильтры на основе которых формируется запрос
if (user.filter.time === 1) {
time = { $gte: 2000 };
}
if (user.filter.time === 2) {
time = { $gte: 2015 };
}
if (user.filter.pop === 1) {
pop = { $lt: 71 };
}
if (user.filter.pop === 2) {
pop = { $gt: 9 };
}
if (user.filter.time === 0) {
delete query.year;
}
if (user.filter1.pop === 0) {
delete query.viewed;
}
query = {
type: query.type.toString(),
viewed: pop,
year: time,
//Здесь отсеиваются просмотренные файлы
_id: {
$nin: watched,
},
};
File.find(query).then((file) => {
rndfile = file[Math.floor(Math.random() * file.length)];
let allfiles;
let userfiles;
switch (query.type) {
case "1":
userfiles = user.files1;
allfiles = user.allfiles;
break;
}
bot.sendDocument(chatId, rndfile.gif);
if (!rndfile) {
bot.sendMessage(chatId, "text");
}
if (userfiles1.length >= allfiles.length - 1) {
clearfilesType(user.telegramId, query);
}
});
});
}