【发布时间】:2022-10-01 11:05:32
【问题描述】:
我想将“自动角色系统”添加到我的不和谐机器人中。 我做得很好,但它出错了,您可以检查文章末尾是否有错误。
我想做的是:
- 所有者通过提及一个角色或一堆角色来使用命令
- Bot 将它们存储在一个数组中,然后将其保存在数据库中
- 当用户加入公会时,机器人将该角色数组提供给成员
所以首先,我们需要为数据库创建一个模型,所以我创建了一个:
// Guild.js const mongoose = require(\'mongoose\'); const guildConfigSchema = mongoose.Schema({ guildId: { type: String, match: /\\d{18}/igm, required: true }, autoRoleDisabled: { type: Boolean, }, autoRoleRoles: {type: Array}, }); module.exports = mongoose.model(\'guild\', guildConfigSchema);然后我编写了设置命令:
const role = message.mentions.roles.first(); if (!role) return message.channel.send(\'Please Mention the Role you want to add to other Auto Roles.\'); Schema.findOne({ guildId: message.guild.id }, async (err, data) => { if (data) { data.autoRoleDisabled = false; data.autoRoleRoles.push(role.id); data.save(); } else { new Schema({ guildId: message.guild.id, autoRoleDisabled: false, $push: { autoRoleRoles: role.id } }).save(); } message.channel.send(\'Role Added: \' + `<@&${role.id}>`); })最后我们需要让它工作:
// Main.js client.on(\"guildMemberAdd\", async (member) => { // ****Auto-Role**** const Welcome = require(\'./models/Guild\'); try { Welcome.findOne({ guildId: member.guild.id }, async (err, data) => { if (!data) { return; } else { if (data.autoRoleDisabled == false) { let roles = data.autoRoleRoles; roles.forEach(r => { guildRrole = member.guild.roles.cache.find(role => role.id) member.roles.add(guildRrole); }) } else { return; } } }); } catch (e) { console.log(e); } });但它不起作用并给出错误:
Error: cyclic dependency detected at serializeObject (C:\\Users\\Pooyan\\Desktop\\PDMBot\\node_modules\\bson\\lib\\bson\\parser\\serializer.js:333:34)而且我认为问题在于在数组中推送角色 ID。
注意:我正在使用 discord.js@13.8.0 和 Node.js v16
-
该错误意味着您在某个节点中获得了一个引用自身的对象
-
我该如何解决?
-
至少给出发生错误的行,仅从该代码很难分辨
-
好的,看看我的新问题。
标签: javascript node.js arrays discord discord.js