【问题标题】:Check member's roles in Discord.js检查成员在 Discord.js 中的角色
【发布时间】:2022-10-23 16:13:55
【问题描述】:

我正在尝试制作自己的 Discord 机器人,我必须检查成员是否具有特殊角色。 所以我试试这段代码:

    const { Client, GatewayIntentBits, Guild } = require("discord.js");

const client = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent,
    GatewayIntentBits.GuildMembers,
  ],
});

client.on("message", (message) => {
  if (message.content === "?start") {
    if (message.member.roles.cache.has("1033133978963689563")) {
      message.reply("Hi guys !");
    }
  }
});

client.on("ready", () => {
  console.log("Bot is ready !");
});

client.login(
  "token"
);

我试图找到解决方案,但其中很多已经过时或根本不起作用。

【问题讨论】:

  • 你能说出你的代码出了什么问题吗?任何意外行为或任何错误?
  • @Caladan我没有任何错误,机器人在线但是当我输入命令时,什么也没有发生......
  • 你有message content intent 吗?试试console.log(message.content) 看看你是否得到了预期的输出。
  • 是的,消息内容意图已在 Discord 开发者门户中启用。当我尝试另一个命令时,例如 ` if (message.content === "ping") { message.reply("HelloWorld") }` 它可以工作。

标签: node.js discord.js roles


【解决方案1】:

如果您使用的是 discord.js@13+,则需要改用 messageCreate 事件。

client.on("messageCreate", (message) => {
  if (message.content === "?start") {
    if (message.member.roles.cache.has("1033133978963689563")) {
      message.reply("Hi guys !");
    } else return;
  } else if (message.content == "?ping") {
      message.reply("pong");
    }
});

此外,如果它不起作用,请确保您有 GUILD_MESSAGES 符合您客户的意图。

const client = new Client({ intents: [Intents.FLAGS.GUILD_MESSAGES] });

最后,如果您使用的是 discord.js@12,我强烈建议您更新到 discord.js@13+

【讨论】:

    猜你喜欢
    • 2017-08-25
    • 2021-05-10
    • 2020-12-21
    • 2020-10-06
    • 2021-11-03
    • 2021-08-14
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    相关资源
    最近更新 更多