【发布时间】:2021-06-11 18:25:45
【问题描述】:
我用 discord-xp 和 mongodb 制作了 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