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