【问题标题】:discord.js pushing roles into a variablediscord.js 将角色推入变量
【发布时间】:2021-08-24 17:25:18
【问题描述】:

我做了这个静音命令,应该将角色保存到一个常量中:

// Variable for saving roles
        const savedRoles = []
// Mute   
muteUser.roles.set([muteRole]).catch(console.error);
muteUser.roles.cache.array()
savedRoles.push(muteUser.roles.cache.array())

我也做了这个取消静音命令:

 // Unmute
        muteUser.roles.remove(muteRole)
        muteUser.roles.add(savedRoles)

静音有效,但是当我尝试取消静音并返回已保存的角色时(我认为甚至没有保存,所以也许这就是问题,但我不确定)机器人崩溃说:“savedRoles 未定义"

如果您想知道 muteUser 和 muteRole 是什么,它们是我制作的一些 const:

const muteRole = message.guild.roles.cache.find(role => role.name === "Muted");
const muteUser = message.mentions.members.first();

无论如何,静音和取消静音在同一个文件中。希望能帮到你

【问题讨论】:

  • savedRoles 只保存在mute 的实例中,一旦实例结束数组并清空。您需要在全局范围内声明变量,或者更好地使用数据库。即使savedRoles被填满,unmute中也不存在

标签: javascript node.js discord discord.js


【解决方案1】:

你使用什么作为数据库,如果你使用 mongodb,你需要以某种方式定义你的数据库并进入架构并像这样保存它

const mongoose = require("mongoose");

const guildSchema = mongoose.Schema({
  _id: mongoose.Schema.Types.ObjectId,
  guildID: String,
  guildName: String,
  savedRoles: {
    "type": Array,
    "default":[]
  }

然后您可以通过这样做将其保存在文件中

const settings = await client.getGuild(message.guild);

const role = message.mentions.roles.first() || message.guild.roles.cache.get(args[1]);
    if(!role) return message.channel.sendErrorMessage('Role is not valid!');
    if(settings) {
        if(settings.savedRoles.includes(role.id)) return message.channel.sendErrorMessage('This role is already a savedrole');
  
    await settings.savedRoles.push(role.id);
 } else {
    settings = message.guild, 
    { savedRoles: role.id }
}
    await settings.save();
    message.channel.sendSuccessMessage(`\`${role.name}\` is now saved`)

【讨论】:

  • 问题是,我不使用任何数据库,而且我宁愿不使用它们
  • 如果你不使用数据库,那么它不可能用于多行会功能,但如果你想将它用于更容易的个人服务器
猜你喜欢
  • 2018-07-23
  • 2020-09-22
  • 2021-08-28
  • 2021-01-28
  • 2017-08-25
  • 2021-02-07
  • 2020-08-24
  • 2020-12-31
  • 1970-01-01
相关资源
最近更新 更多