【问题标题】:Javascript - toggle xp system (mongodb and discord.js with discord-xp api)Javascript - 切换 xp 系统(mongodb 和 discord.js 与 discord-xp api)
【发布时间】:2021-06-11 18:25:45
【问题描述】:

我用 discord-xpmongodb 制作了 discord.js XP 系统,我想让 XP 系统可切换,但我可以'不要真的这样做,我会感谢你的帮助。 当我关闭命令时,它会在数据库中执行它的操作,但在发送消息时仍然会给我 XP。 我怀疑问题出在 ToggleXP.js 中,我认为问题出在 index.js 文件中 ToggleXP.js:

const Discord = require('discord.js');
const bot = new Discord.Client();
const toggleLevels = require('../Schema/level-toggle-schema')

module.exports.run = async (bot, message, args) => {
  if (args[0] === 'off' || args[0] === 'disable' || args[0] === 'disabled') {
    const settings = await toggleLevels.findOne({

      guildID: message.guild.id,

    }, async (err, guild) => {
      if (err) console.error(err)

      if (!guild) {

        const newGuild = new toggleLevels({
          guildID: message.guild.id,
          enabled: 'true'
        })

        newGuild.save()
          .then(result => console.log(result))
          .catch(err => console.error(err));

      }
      if (guild) {
        const newGuild = new toggleLevels({
          guildID: message.guild.id,
          enabled: 'false'
        })

        newGuild.save()
          .then(result => console.log(result))
          .catch(err => console.error(err));
      }
    });
    return message.reply(`XP system has been disabled!`);
  }



  if (args[0] === 'on' || args[0] === 'enable' || args[0] === 'enabled') {
    const settings = await toggleLevels.findOne({

      guildID: message.guild.id,

    }, async (err, guild) => {
      if (err) console.error(err)

      if (!guild) {

        const newGuild = new toggleLevels({
          guildID: message.guild.id,
          enabled: 'true'
        })

        newGuild.save()
          .then(result => console.log(result))
          .catch(err => console.error(err));

      }
      if (guild) {
        const newGuild = new toggleLevels({
          guildID: message.guild.id,
          enabled: 'true'
        })

        newGuild.save()
          .then(result => console.log(result))
          .catch(err => console.error(err));
      }
    })
    return message.reply(`XP system has been enabled!`);
  }
  console.log(`${message.author.tag} (${message.author.id}) used 'togglexp' command`)
}
module.exports.config = {
  name: 'togglexp',
  aliases: ['togglelevels']
}

index.js 消息事件:

if (!message.content.startsWith(bot.prefix)) {
    toggleLevels.findOne({
    guildID: message.guild.id
  }, async (err, guild) => {
    if (!guild) {
    let randomXp = Math.floor(Math.random() * 29) + 1
    const hasLeveledUp = await Levels.appendXp(message.author.id, message.guild.id, randomXp);
    if (hasLeveledUp) {
      const user = await Levels.fetch(message.author.id, message.guild.id);
      message.channel.send(`Congrats <@${message.author.id}>, You are now Level ${user.level}. Keep it going!`)
    }
    }
    if (guild.enabled) {
    let randomXp = Math.floor(Math.random() * 29) + 1
    const hasLeveledUp = await Levels.appendXp(message.author.id, message.guild.id, randomXp);
    if (hasLeveledUp) {
      const user = await Levels.fetch(message.author.id, message.guild.id);
      message.channel.send(`Congrats <@${message.author.id}>, You are now Level ${user.level}. Keep it going!`)
    }
    }
    })

    }

level-toggle-schema.js

const mongoose = require('mongoose');

const config = mongoose.Schema({
    guildID: String,
    enabled: String
})

module.exports = mongoose.model('level-toggle', config);

【问题讨论】:

    标签: mongodb discord.js


    【解决方案1】:

    将里面的message事件替换为

    const toggleLvl = await toggleLevels.findOne({
        guildID: message.guild.id
    });
    if (!toggleLvl) {
        let randomXp = Math.floor(Math.random() * 29) + 1
        const hasLeveledUp = await Levels.appendXp(message.author.id, message.guild.id, randomXp);
        if (hasLeveledUp) {
            const user = await Levels.fetch(message.author.id, message.guild.id);
            message.channel.send(`Congrats <@${message.author.id}>, You are now Level ${user.level}. Keep it going!`)
        }
    }
    if (toggleLvl.enabled) {
        let randomXp = Math.floor(Math.random() * 29) + 1
        const hasLeveledUp = await Levels.appendXp(message.author.id, message.guild.id, randomXp);
        if (hasLeveledUp) {
            const user = await Levels.fetch(message.author.id, message.guild.id);
            message.channel.send(`Congrats <@${message.author.id}>, You are now Level ${user.level}. Keep it going!`)
        }
    }
    

    【讨论】:

    • 你也可以用 || 来简化这两个语句
    猜你喜欢
    • 2019-04-30
    • 2018-03-12
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 2012-11-29
    相关资源
    最近更新 更多