【问题标题】:remove role automatically discord.js v13自动删除角色 discord.js v13
【发布时间】:2021-10-14 06:00:58
【问题描述】:

如果用户有第二个角色,我想删除第一个角色。 但不知道为什么它不起作用。 请帮忙。

ex - 假设我在加入时获得了一个角色。然后如果我手动为用户赋予新角色,那么首先 从加入获得的角色想要自动删除。

const { Client, Intents } = require('discord.js');
const client = new Client({
  intents: [
    Intents.FLAGS.GUILDS,
    Intents.FLAGS.GUILD_MESSAGES,
    Intents.FLAGS.GUILD_MEMBERS,
  ],
});

client.on('ready', () => {
  console.log(`Logged in as ${client.user.tag}!`);
});

client.on('guildMemberAdd', (member) => {
  let MemberRole = member.guild.roles.cache.get('874556919354912768');
  member.roles.add(MemberRole);
});

// here im trying to remove role.
client.on('guildMemberUpdate', (member) => {
  let MemberRole = member.guild.roles.cache.get('874556919354912768');

  if (member.roles.cache.some((role) => role.name === 'bee')) {
    member.roles.remove(MemberRole);
  }
});

client.login('my_token');

【问题讨论】:

    标签: javascript node.js discord.js


    【解决方案1】:

    问题是您正在搜索oldMember 上的角色,这是更新前GuildMember 的一个实例。 guildMemberUpdate 事件的回调有两个参数。

    client.on("guildMemberUpdate", (oldMember, newMember) => {
        if (newMember.roles.cache.some(role => role.name === "bee")) {
            newMember.roles.remove("874556919354912768");
        }
    });
    

    还要确保您的机器人角色高于您要删除的角色。

    请注意,对于客户端未缓存的GuildMembers,该事件不会被触发。要解决这个问题,您需要启用部分 GUILD_MEMBER

    const client = new Discord.Client({ intents: ["GUILDS", "GUILD_MESSAGES", "GUILD_MEMBERS"], partials: ["GUILD_MEMBER"] });
    

    使用 discord.js ^13.0.1 测试。

    【讨论】:

    猜你喜欢
    • 2021-12-14
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 2020-01-04
    • 2021-11-03
    • 2022-09-30
    相关资源
    最近更新 更多