javascript - 消息在 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);
}
}
解决方案
该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);
}
}
推荐阅读
- dialogflow-es - 如何转到 Dialogflow 响应中的下一行
- python - PyCharm 调试器中的“测试”包中的绝对导入失败并出现 ModuleNotFoundError
- r - 如何使用 R 中的 TM 包将我的语料库元数据附加到我的 dtm 数据帧导出中
- google-chrome-extension - Chrome 扩展程序导致活动网站上的 div 出现不当行为
- javascript - JavaScript 在 for 循环中追加多个
- python - 将阈值逻辑应用于 NumPy 数组的一列
- reactjs - React Hooks createContext:当它是一个数组时如何更新UserContext?
- c# - C# API OAuth 消费
- javascript - RN perf 问题:尽早绑定,不要在渲染中创建函数
- python - Python pandas 根据上面某些行的条件在数据框中创建一个新行