node.js - Discord bot 只给我角色
问题描述
我正试图让我的不和谐机器人大众给我服务器中的每个人一个角色。每当我这样做-giveall
时,它只会给我这个角色。我试过使用地图和数组。使用 message.guild.members.filter(member => member.roles.array().length > 1).forEach(member => member.addRole(role));
没有运气。
if (command === 'giveall') {
let role = message.guild.roles.cache.find(r => r.name == 'cool')
if (!role) return message.channel.send(`**${message.author.username}**, role not found`)
message.guild.members.cache.filter(m => !m.user.bot).forEach(member => member.roles.add(role))
message.channel.send(`**${message.author.username}**, role **${role.name}** was added to all members`)
}
解决方案
这是我收到的日志console.log(message.guild.members.cache.filter(m => !m.user.bot));
:
Collection [Map] {
'759457326251114536' => GuildMember {
guild: Guild {
members: [GuildMemberManager],
channels: [GuildChannelManager],
roles: [RoleManager],
presences: [PresenceManager],
voiceStates: [VoiceStateManager],
deleted: false,
available: true,
id: '760015259619819550',
shardID: 0,
name: 'GoodGameBTW™',
icon: '5c364ec985a0706a27c31b89953d01e4',
splash: null,
discoverySplash: null,
region: 'india',
memberCount: 10,
large: false,
features: [Array],
applicationID: null,
afkTimeout: 300,
afkChannelID: null,
systemChannelID: null,
embedEnabled: undefined,
premiumTier: 0,
premiumSubscriptionCount: 0,
verificationLevel: 'LOW',
explicitContentFilter: 'ALL_MEMBERS',
mfaLevel: 0,
joinedTimestamp: 1603042420216,
defaultMessageNotifications: 'MENTIONS',
systemChannelFlags: [SystemChannelFlags],
maximumMembers: 100000,
vanityURLCode: null,
vanityURLUses: null,
description: null,
banner: null,
rulesChannelID: '771729349632196608',
publicUpdatesChannelID: '768502471676788777',
preferredLocale: 'en-US',
ownerID: '759457326251114536',
emojis: [GuildEmojiManager]
},
joinedTimestamp: 1601272158336,
lastMessageID: '773102408938029056',
lastMessageChannelID: '760778837612822558',
premiumSinceTimestamp: 0,
deleted: false,
nickname: null,
_roles: [ '760763514402111488', '760759896232296468' ],
user: User {
id: '759457326251114536',
username: 'Prof. MineKraft',
bot: false,
discriminator: '6612',
avatar: '97ee817e5098d3e6ee4c174a449d1779',
flags: [UserFlags],
lastMessageID: '773102408938029056',
lastMessageChannelID: '760778837612822558'
}
}
}
从日志中,您可以看到缓存只有两个用户,bot 和您。因此,当您过滤掉机器人时,只有您获得角色。
这可能是因为您禁用了网关意图。请转到 discord 开发者门户并启用服务器成员意图。那应该可以解决您的问题。
推荐阅读
- python - 使用 opencv 和 gstreamer 在网络服务器上发送我的网络摄像头视频时丢失关键帧
- flutter - Flutter Resize ImagePicker Image 在上传到firebase之前
- variables - 执行 SQL 任务错误:执行查询失败,出现以下错误:“'' 附近的语法不正确。”
- r - 如何在R中拥有一个图形矩阵
- mongodb - 如何在 MongoDB 聚合管道期间用数组字段替换 root?
- python - 每当我尝试使用 Python 使用 selenium 运行 Chrome 时,都会出现此错误。有谁之前经历过这个吗?
- php - Jquery 仅在更改一个选择输入而不是其他选择标签时触发
- mysql - 在左连接表上使用 WHERE OR 时查询很慢?
- javascript - 为什么 webpack 警告不要编译不受信任的代码?
- ssl - 如何验证 Microsoft 证书