首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bot将反应用户分配给处于不和谐状态的角色

问Bot将反应用户分配给处于不和谐状态的角色
EN

Stack Overflow用户
提问于 2021-07-29 07:24:01
回答 1查看 191关注 0票数 1

我试图制造一个不和谐的机器人,它读取服务器中的每个Emoji反应,并为反应用户分配一个特定于Emoji的特定角色。

我的代码应该将角色Red分配给服务器中任何消息中的用户。将Blue角色分配给服务器中任何消息中的用户。将黄色角色分配给服务器中任何消息中的用户。

以下是这些角色的ID:

代码语言:javascript
复制
Red: <@&870162738561814578>
Blue: <@&870162842983206922>
Yellow: <@&870162885412810773>

下面是机器人的代码片段:

代码语言:javascript
复制
const RYellow = '<@&870162885412810773>';
const RBlue = '<@&870162842983206922>';
const RRed = '<@&870162738561814578>';

const RRedEmoji = '';
const RBlueEmoji = '';
const RYellowEmoji = '';

client.on('messageReactionAdd', async (reaction, user) => {
  if (reaction) await reaction.fetch();
  if (user.bot) return;
  console.log(reaction);
  if (reaction.emoji.name === RYellowEmoji) {
    await reaction.message.guild.members.cache.get(user.id).roles.add(RYellow);
    await reaction.message.guild.members.cache.get(user.id).roles.remove(RRed);
    await reaction.message.guild.members.cache.get(user.id).roles.remove(RBlue);
  }
  if (reaction.emoji.name === RRedEmoji) {
    await reaction.message.guild.members.cache.get(user.id).roles.add(RRed);
    await reaction.message.guild.members.cache
      .get(user.id)
      .roles.remove(RYellow);
    await reaction.message.guild.members.cache.get(user.id).roles.remove(RBlue);
  }
  if (reaction.emoji.name === RBlueEmoji) {
    await reaction.message.guild.members.cache.get(user.id).roles.add(RBlue);
    await reaction.message.guild.members.cache.get(user.id).roles.remove(RRed);
    await reaction.message.guild.members.cache
      .get(user.id)
      .roles.remove(RYellow);
  }
});

以下是错误:

E:\Projects\DBot\node_modules\discord.js\src\managers\GuildMemberRoleManager.js:93抛出新的TypeError(“无效类型”、“角色”、“角色、雪花或数组或角色集合或雪花”);^ TypeError INVALID_TYPE:提供的角色不是角色、雪花或数组或角色集合或雪花。在客户端的(E:\Projects\DBot\node_modules\discord.js\src\managers\GuildMemberRoleManager.js:93:15) GuildMemberRoleManager.add。(E:\Projects\DBot\index.js:49:71)在processTicksAndRejections (节点:内部/进程/任务队列:96:5){符号(代码):'INVALID_TYPE‘}

那我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-29 07:26:09

<@&870162885412810773>不是雪花或ID。您需要删除<@&和>

代码语言:javascript
复制
const RYellow = '870162885412810773'
const RBlue = '870162842983206922'
const RRed = '870162738561814578'

// ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68571765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档