AnixartBot/commands/account.js
2022-08-10 13:06:23 +02:00

67 lines
4.3 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Хэндлинг команды 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);
}
};