Задать вопрос
@Jason_Kings

Как сделать запрет на создание уже существующего промокода?

Здравствуйте, возникла такая проблема. Я написал команду для создания промокода. По сути в ней работает все, кроме запрета на создания уже существующего промокода. В моем случае уже есть промокод `#jk`, однако любой желающий все равно может создать его. Перепробовал уже много методов, ничего не помогло. Последняя надежда на вас так сказать.
const Discord = module.require("discord.js");
const fs = require("fs");
const settings = require('../botconfig.json');
module.exports.run = async (bot,message,args) => {
    Promo.findOne({guildID: message.guild.id, ownerpromoID: message.author.id}, (err,dat) => {
        if(!dat){
            let errorMess = new Discord.RichEmbed()
            .setColor('RED')
            .setDescription(`**Вы отсутствуете в базе данных. Обратитесь к Разработчику** \`Jason Kings#5476\` **для решения проблемы. Код ошибки:** \`775\``)
            return message.channel.send(errorMess)
          }
          if(err) {
          let xembed = new Discord.RichEmbed()
          .setColor(`RED`)
          .setDescription(`**Не удалось создать промокод. Ошибка:** \`${err}\``)
          return message.channel.send(xembed)
          }
          if(!args[0]) return message.delete() && message.channel.send(`<@${message.author.id}>, \`Введите название вашего будущего промокода! Пример: /createpromocode #jk\``).then(msg => msg.delete(15000));
    if (!args[0].startsWith("#")) return message.delete() && message.channel.send(`<@${message.author.id}>, \`Название вашего промокода должно начинаться с "#"! Пример: /createpromocode jk\``).then(msg => msg.delete(15000));
    if(`${dat.promocode =args[0]}`) return message.delete() && message.channel.send(`<@${message.author.id}>, \`такой промокод уже есть!\``)
    if(dat.promocode !=`${dat.promocode ="-"}`) return message.delete() && message.channel.send(`<@${message.author.id}>, \`Вы уже создали свой промокод!\``).then(msg => msg.delete(15000));
    message.channel.send(`<@${message.author.id}>, \`Вы успешно создали свой промокод\` **${args[0]}**`)
    dat.promocode =`${args[0]}`
    dat.lvlpromo =1
    dat.save()
    })
}
module.exports.help = {
    name: "createpromocode"
}
  • Вопрос задан
  • 141 просмотр
Подписаться 1 Средний 4 комментария
Пригласить эксперта
Ответы на вопрос 1
Alexandre888
@Alexandre888 Куратор тега Discord
Javascript-разработчик
слабо понимаю, что у вас не выходит, но у вас же в коде есть строка:
if(`${dat.promocode =args[0]}`) return message.delete() && message.channel.send(`<@${message.author.id}>, \`такой промокод уже есть!\``)

если в ней проблема, то я советую сделать вам ряд следующий изменений:
1. зачем вам нужен шаблонный литерал в условии, если можно сделать просто так:
if (dat.promocode = args[0]) . . .
2. вместо = в условии, используйте ===
3. зачем вы используйте message.channel.send, если для упоминания пользователя и последующего сообщения достаточно будет message.reply("текст")
4. уберите из строки && и message.delete(), после чего оставьте только message.reply.
если код с такими изменениями заработает - значит уже можно задуматься об удалении сообщения.
если же не сработает - значит проблема в dat.promocode и подход уже нужен будет совсем другой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы