2023-07-15 04:17:04 +12:00

61 lines
3.5 KiB
TypeScript
Raw 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.

import { CacheType, ChatInputCommandInteraction, Message, PermissionFlagsBits, SlashCommandBuilder } from 'discord.js';
import ConfigController from '../controller/ConfigController';
import EcoController from '../controller/EcoController';
import { Command } from '.';
export default {
data: new SlashCommandBuilder()
.setName('link')
.setDescription('Link Discord and Game accaunt')
.setDescriptionLocalization("ru", "Связь Discord и Игрового аккаунта")
.addStringOption(opt => opt.setName("id").setDescription("SteamID64 or SLGID").setDescriptionLocalization("ru", "SteamID64 или SLGID").setRequired(true))
.addStringOption(opt => opt.setName("code").setDescription("Confirmation code").setDescriptionLocalization("ru", "Код подтверждения").setRequired(false)),
async execute(interaction) {
var id = interaction.options.getString('id')
var codeConfirmation = interaction.options.getString('code')
const ecoController = new EcoController()
const user = global.config.users.get(interaction.user.id)
const userCode = global.config.authCodes.get(interaction.user.id)
const userG = global.config.usersInGame.filter(u => u.SlgId === id || u.SteamId === id).length > 0 ?
global.config.usersInGame.filter(u => u.SlgId === id || u.SteamId === id)[0] : null
await interaction.deferReply({ ephemeral: true })
const code = Math.floor(1000 + Math.random() * 9000).toString();
const codeUser = Math.floor(1000 + Math.random() * 9000).toString();
try {
if (!!codeConfirmation && !!userG) {
if (userCode === codeConfirmation && !id) {
global.config.users.set(interaction.user.id, userG)
global.config.authCodes.set(interaction.user.id, "-")
await interaction.followUp(`Аккаунт успешно привязан`)
} else {
await interaction.followUp(`Ошибка привязки аккаунта, проверьте введённые данные`)
}
return
} else if (user === undefined && !!userG && user === undefined) {
const status = await ecoController.Message(`Для связи аккаунтов введите код ${code}, иначе проигнорируйте данное сообщение`, `ChatLink${codeUser}`, `@${userG.Name}`)
if (!!status && status.Success) {
await interaction.followUp(`Код отправлен в личные сообщения от пользователя \`ChatLink${codeUser}\`, для продолжения введите эту команду, указав код полученный в игре`)
} else {
await interaction.followUp("Ошибка отправки кода")
}
global.config.authCodes.set(interaction.user.id, code)
return
} else if (user !== undefined) {
await interaction.followUp("Ваш аккаунт уже привязан, для отвязки свяжитесь с администрацией")
} else if (!userG) {
await interaction.followUp("Такой пользователь не найден на сервере")
} else {
await interaction.followUp("Вы уже воспользовались данной функцией, обратитесь к администрации в случае возникновения проблемы")
}
} catch (error) {
await interaction.editReply("Ошибка отправки кода")
console.log(error)
}
},
} as Command