用户发送消息时如何添加角色

时间:2021-05-29 04:50:41

标签: discord.js

我想在用户向任何文本频道发送消息时赋予一个角色。但我在某处犯了错误。

const Discord = require('discord.js');
const client = new Discord.Client();
const config = require('./config.json');

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

client.on("message", msg => {
  var sender = msg.author;
  var message= msg.content;
  const guild = client.guilds.cache.get("847874027149721680");

  let role = message.guilds.roles.cache.find("848033734909231156");
  if (message) {
    message.author.addRole(role).catch(console.error);
  }
});
client.login(process.env.DISCORD_TOKEN);

我经常收到这个错误

/home/runner/Project/index.js:23
  let role = message.guilds.roles.cache.find("848033734909231156");
                            ^
TypeError: Cannot read property 'roles' of undefined
    at Client.<anonymous> (/home/runner/Project/index.js:23:29)
    at Client.emit (events.js:314:20)
    at Client.EventEmitter.emit (domain.js:483:12)
    at MessageCreateAction.handle (/home/runner/Project/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (/home/runner/Project/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (/home/runner/Project/node_modules/discord.js/src/client/websocket/WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (/home/runner/Project/node_modules/discord.js/src/client/websocket/WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (/home/runner/Project/node_modules/discord.js/src/client/websocket/WebSocketShard.js:301:10)
    at WebSocket.onMessage (/home/runner/Project/node_modules/ws/lib/event-target.js:132:16)
    at WebSocket.emit (events.js:314:20)

我是新手,所以我可能很笨。对不起

2 个答案:

答案 0 :(得分:0)

message.guild.roles.cache.get(),不是message.guilds.roles.cache.get()

答案 1 :(得分:0)

正如 japanballdev 所指出的,您犯了一个拼写错误。修复后它仍然存在的原因是因为您在两个地方犯了这个错误:

client.on("message", msg => {
  var sender = msg.author;
  var message= msg.content;
  const guild = client.guild.cache.get("847874027149721680"); //ERROR WAS HERE

  let role = message.guild.roles.cache.find("848033734909231156"); //ERROR WAS HERE TOO
  if (message) {
    message.author.addRole(role).catch(console.error);
  }
});