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)
我是新人,所以我可能很笨。对不起
解决方案
是message.guild.roles.cache.get()
,不是message.guilds.roles.cache.get()
。
推荐阅读
- reactjs - 使用 Enzyme 的浅层包装器和 Jest 使用 React Router 的 render prop 测试组件渲染
- python - 如何使用python在冒号':'之后查找任何格式的日期
- email - Google 表单 - 从电子邮件正文中自动填写其中一个字段
- c# - 冻结本地化已修复,但焦点需要从表格中移除并返回
- python - Django:is_valid 正在改变 self.object
- kubernetes - 无法通过 istio-ingress 配置会话 Affinity
- java - Android - Service、IntentService、JobIntentService - 如果应用程序被杀死,它们就会停止
- javascript - 循环遍历路由以获取单个值并将其推送到变量
- c# - 如何在Unity中只有上一个动画完成后才能运行后续动画?
- javascript - 输入四舍五入/替换为 keyup 上的下一个倍数