首页 > 解决方案 > 消息在 guildMemberAdd discord.js 中不起作用

问题描述

我试图制作一个自动角色事件,在用户加入时将成员角色授予用户。但是如果我无法在 guildMemberAdd 事件中使用 message.guild.id 函数,我不明白如何获取公会 ID。我需要它从数据库中获取 memberRoleID 属性。

这是我的代码:

const mongoose = require('mongoose');
const Guild = require('../database/models/guildSchema');

module.exports = {
    name: 'guildMemberAdd',
    async execute(guildMember, message){
        //const guildMember = new GuildMember();
        let guildProfile = await Guild.findOne({ guildID: message.guild.id});
        if(!guildProfile){
            guildProfile = await new Guild({
                _id: mongoose.Types.ObjectId(),
                guildID: message.guild.id
            });
            await guildProfile.save().catch(err => console.log(err));
        }
        const role = guildMember.guild.roles.cache.get(guildProfile.memberRoleID);
        guildMember.roles.add(role.id);
    }
}

标签: javascriptdiscord.js

解决方案


guildMemberAdd事件不发出message对象。您可以从 中检索公会guildMember.guild,就像您在定义时所做的那样role

const mongoose = require('mongoose');
const Guild = require('../database/models/guildSchema');

module.exports = {
    name: 'guildMemberAdd',
    async execute(guildMember){
        let guildProfile = await Guild.findOne({ guildID: guildMember.guild.id});
        if(!guildProfile){
            guildProfile = await new Guild({
                _id: mongoose.Types.ObjectId(),
                guildID: guildMember.guild.id
            });
            await guildProfile.save().catch(err => console.log(err));
        }
        const role = guildMember.guild.roles.cache.get(guildProfile.memberRoleID);
        guildMember.roles.add(role.id);
    }
}

Client#guildMemberAdd上的文档


推荐阅读