This commit is contained in:
recaptcha
2022-08-10 13:06:23 +02:00
parent d3d221f9e3
commit e59845661f
19 changed files with 4803 additions and 4 deletions
+18
View File
@@ -0,0 +1,18 @@
/*
* Хэндлинг команды about
*/
const errorHandler = require("../utils/error-handler");
const functions = require("../utils/functions");
const keyboards = require("../utils/keyboards");
module.exports = bot => async msg => {
try {
const opts = { //Опции (клавиатура и т.д.)
parse_mode: 'Markdown' //Форматирование текста
};
await bot.sendMessage(msg.chat.id, await functions.genAboutText(), opts);
bot.sendSticker(msg.chat.id, "CAACAgIAAxkBAAIFLmLxHZFlrrAaKxTmZdVwQkZ2L1ldAAIkBwACWiM9C1nC26Wtn2hwKQQ")
} catch (error) {
errorHandler(bot, msg.chat.id, error);
}
};
+67
View File
@@ -0,0 +1,67 @@
/*
* Хэндлинг команды account
*/
const errorHandler = require("../utils/error-handler");
const functions = require("../utils/functions");
const api = require("../network/api");
const keyboards = require("../utils/keyboards");
const modelUser = require('../models/user');
const user = require("../models/user");
module.exports = bot => async (msg, match) => {
try {
if(msg.text.startsWith(`/profile`) || msg.text.startsWith(`/anime`)) return; //Из-за небольшого бага пришлось сделать этот фикс-костыль
let chatId = msg.chat.id;
let accountName = match.input.replace(`/account`, ``)
//let args = msg.text.split(/\s/g);
if (accountName) { //Авторизация
accountName = await functions.deleteSymbols(accountName)
accountName = accountName.substr(1)
if(accountName.length < 3) return bot.sendMessage(chatId, `🚫 Никнейм пользователя должен состоять минимум из 3 символов.`);
let userDB = await modelUser.findOne({ _id: msg.from.id })
if(accountName.includes(`https://anixart.tv/profile/`) || accountName.includes(`https://mirror.anixart.tv/profile/`)) { //Если это ссылка (1 способ)
let id = accountName
.replace(`https://anixart.tv/profile/`, ``)
.replace(`https://mirror.anixart.tv/profile/`, ``)
let userAnixart = await api.getProfileById(id);
if(!userAnixart || userAnixart == null || userAnixart.code == 2 || userAnixart.profile == null || !userAnixart.profile) { //Если ссылка неверная
let errMsg = await bot.sendMessage(chatId, `🚫 Ссылка указана неверно.\nПример команды: \`/account https://anixart.tv/profile/0\``, { parse_mode: 'Markdown' });
return functions.deleteMessage(bot, errMsg, 6)
}
if(userDB && userDB.anixartId == userAnixart.profile.id) { //Если пользователь уже в этом аккаунте
let errMsg = bot.sendMessage(chatId, `🚫 Вы уже авторизированы с того же аккаунта!`);
return functions.deleteMessage(bot, errMsg, 6)
}
return bot.sendMessage(msg.chat.id, await functions.genAuthConfirmText(userAnixart.profile), { //Подтверждение
parse_mode: 'Markdown',
reply_markup: await keyboards.authConfirm(msg.from.id, userAnixart.profile.id, userAnixart.profile.login)
}
);
} else { //Второй способ логина
let userAnixart = await api.getProfileByName(accountName)
if(!userAnixart || userAnixart == null || userAnixart.code == 2 || userAnixart.profile == null || !userAnixart.profile) { //Если неверный ник
let errMsg = await bot.sendMessage(chatId, `🚫 Аккаунт, с ником *${accountName}* не найден!\nПерепроверьте Ваш ник и попробуйте снова.\n\n\`ПРИМЕЧАНИЕ: Если Ваш ник указан правильно, то попробуйте воспользоваться авторизацией через АЙДИ.\``, { parse_mode: 'Markdown' });
return functions.deleteMessage(bot, errMsg, 6)
}
if(userDB && userDB.anixartId == userAnixart.profile.id) { //Он уже в этом аккаунте
let errMsg = bot.sendMessage(chatId, `🚫 Вы уже авторизированы с того же аккаунта!`);
return functions.deleteMessage(bot, errMsg, 6)
}
return bot.sendMessage(msg.chat.id, await functions.genAuthConfirmText(userAnixart.profile), { //Подтверждение
parse_mode: 'Markdown',
reply_markup: await keyboards.authConfirm(msg.from.id, userAnixart.profile.id, userAnixart.profile.login)
}
);
}
}
const opts = { //Опции (клавиатура и т.д.)
parse_mode: 'Markdown', //Форматирование текста
reply_markup: await keyboards.authMenu(msg.from.id)
};
return bot.sendMessage(msg.chat.id, await functions.genAuthMenuText(msg.from.id), opts); //О способах, если аргумента нет
} catch (error) {
errorHandler(bot, msg.chat.id, error);
}
};
+46
View File
@@ -0,0 +1,46 @@
/*
* Хэндлинг команды anime (сказать, что я заебался делать эту команду - это ничего не сказать, но ебать она ахуенная. Я текуу-у-ууууу)
*/
const errorHandler = require("../utils/error-handler");
const functions = require("../utils/functions");
const keyboards = require("../utils/keyboards");
const api = require("../network/api");
module.exports = bot => async (msg, match) => {
try {
if(msg.text.startsWith(`/profile`) || msg.text.startsWith(`/account`)) return;
//если команда
let animeName = match.input.replace(`/anime`, ``)
if(animeName) {
animeName = await functions.deleteSymbols(animeName)
animeName = animeName.substr(1)
if (animeName.length > 2) {
let search_result = await api.getAnimeByName(animeName);
if(!search_result || search_result == null || search_result.code == 2 || search_result.content.length == 0) {
return bot.sendMessage(msg.chat.id, `🚫 Аниме по такому запросу не были найдены!`);
}
let maxPage = Math.ceil(search_result.total_count/5)
let getButtonMenu = await functions.getButtonMenu(search_result, 1)
let text = `*🔎 Anixart Anime Lists*\n\n*Список аниме:*\n- По запросу: \`${animeName}\`\n- Всего аниме в списке: ${search_result.total_count}\n- Страница: 1/${maxPage}\n\n~~~~~~~~~~~~~~~~~~\n`
text += getButtonMenu.text
return bot.sendMessage(msg.chat.id, text, {
parse_mode: 'Markdown',
reply_markup: await keyboards.searchAnime(msg.from.id, maxPage, 1, getButtonMenu.animeList, animeName)
});
} else {
return bot.sendMessage(msg.chat.id, `🚫 Название должно состоять минимум из 3 символов`);
}
}
const opts = { //Опции (клавиатура и т.д.)
parse_mode: 'Markdown', //Форматирование текста
reply_markup: await keyboards.animeMenu(msg.from.id)
};
bot.sendMessage(msg.chat.id, await functions.genAnimeMenuText(), opts);
} catch (error) {
errorHandler(bot, msg.chat.id, error);
}
};
+7
View File
@@ -0,0 +1,7 @@
//Простенький перенаправлятор
exports.start = require("./start");
exports.account = require("./account");
exports.profile = require("./profile");
exports.anime = require("./anime");
exports.about = require("./about");
//exports.search = require("./search");
+41
View File
@@ -0,0 +1,41 @@
/*
* Хэндлинг команды profile
*/
const errorHandler = require("../utils/error-handler");
const functions = require("../utils/functions");
const api = require("../network/api");
const keyboards = require("../utils/keyboards");
const modelUser = require('../models/user');
module.exports = bot => async (msg, match) => {
try {
if(msg.text.startsWith(`/account`) || msg.text.startsWith(`/anime`)) return; //Из-за небольшого бага пришлось сделать этот фикс-костыль
if(msg.from.is_bot) return;
let accountName = match.input.replace(`/profile`, ``)
let chatId = msg.chat.id;
let body
if(accountName) {
accountName = accountName.substr(1)
if (accountName.length < 3) return bot.sendMessage(chatId, `🚫 Никнейм пользователя должен состоять минимум из 3 символов.`);
body = await api.getProfileByName(accountName)
} else {
accountName = accountName.substr(1)
let user = await modelUser.findOne({ _id: msg.from.id })
if(!user) return bot.sendMessage(chatId, "*🚫 Вы не можете просмотреть свой профиль.*\nДля доступа к этой команде Вам нужно войти в аккаунт (требуется только Ваш *ник* или *айди*)\n\n*Используйте:* /account\n\n*Если вы не хотите авторизироваться, то можете просто посмотреть свой профиль, написав:*\n/profile \`(ваш ник на аниксарте без скобок)\`", { parse_mode: 'Markdown' })
body = await api.getProfileById(user.anixartId)
}
if (body == null || body.code == 2 || body.profile == null) return bot.sendMessage(chatId, "🚫 Профиля с таким именем не существует или его невозможно найти.");
let profile = body.profile;
const opts = { //Опции (клавиатура и т.д.)
parse_mode: 'Markdown', //Форматирование текста
reply_markup: await keyboards.profileKeyboard(msg.from.id, profile)
};
return bot.sendMessage(chatId, await functions.genProfileText(profile), opts);
} catch (error) {
errorHandler(bot, msg.chat.id, error);
}
};
+18
View File
@@ -0,0 +1,18 @@
/*
* Хэндлинг команды start
*/
const errorHandler = require("../utils/error-handler");
const functions = require("../utils/functions");
const keyboards = require("../utils/keyboards");
module.exports = bot => async msg => {
try {
const opts = { //Опции (клавиатура и т.д.)
parse_mode: 'Markdown' //Форматирование текста
};
await bot.sendMessage(msg.chat.id, await functions.genStartText(msg.from), opts);
bot.sendSticker(msg.chat.id, "CAACAgIAAxkBAAIFF2LxHJ4PO_MJruorbcq7M57p3t5RAAIPBwACWiM9C-6cSIsHEOb3KQQ")
} catch (error) {
errorHandler(bot, msg.chat.id, error);
}
};