【问题标题】:How to add roles when user send message用户发送消息时如何添加角色
【发布时间】:2021-05-29 14:43:28
【问题描述】:

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

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)

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

【问题讨论】:

    标签: discord.js


    【解决方案1】:

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

    【讨论】:

    • 问题依旧
    • TypeError: 无法读取未定义的属性“角色”
    • 啊,好的。尝试将message.guild 替换为client.guilds.cache.get(message.guild.id)
    【解决方案2】:

    正如 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);
      }
    });
    

    【讨论】:

      猜你喜欢
      • 2019-10-18
      • 2021-08-05
      • 2021-10-10
      • 1970-01-01
      • 2021-05-20
      • 2019-12-04
      • 2019-07-26
      • 2021-01-18
      • 1970-01-01
      相关资源
      最近更新 更多