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