javascript - bot 的用户名未定义
问题描述
我收到这个错误UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'username' of undefined
,这是由client.user.username
in引起embed
的.setFooter()
。
module.exports = {
name: 'suggest',
aliases: ['sug', 'suggestion'],
description: 'Suggest something for the Bot',
execute(message, client, args) {
const Discord = require('discord.js');
const filter = m => m.author.id === message.author.id;
message.channel.send(`Please provide a suggestion for the Bot or cancel this command with "cancel"!`)
message.channel.awaitMessages(filter, { max: 1, })
.then(async (collected) => {
if (collected.first().content.toLowerCase() === 'cancel') {
message.reply("Your suggestion has been cancelled.")
}
else {
let embed = new Discord.MessageEmbed()
.setFooter(client.user.username, client.user.displayAvatarURL)
.setTimestamp()
.addField(`New Suggestion from:`, `**${message.author.tag}**`)
.addField(`New Suggestion:`, `${collected.first().content}`)
.setColor('0x0099ff');
client.channels.fetch("702825446248808519").send(embed)
message.channel.send(`Your suggestion has been filled to the staff team. Thank you!`)
}
})
},
catch(err) {
console.log(err)
}
};
解决方案
根据您在这里的评论
尝试 { command.execute(message, args); } 捕捉(错误){ 控制台.错误(错误);message.reply('尝试执行该命令时出错!'); } });
您没有client
进入execute()
,您需要这样做。
您还需要使用await
onchannels.fetch()
因为它返回一个承诺,所以替换client.channels.fetch("702825446248808519").send(embed)
为:
const channel = await client.channels.fetch("702825446248808519")
channel.send(embed)
推荐阅读
- java - 如何在具有许多 JTextField 的 Java Swing JFrame 实例中获取关键事件?
- java - 使用 Spring Boot 进行自定义异常处理时 .jpg 出现 500 错误?
- java - 在 TestNG 中跳过测试的最佳做法是什么?
- c++ - 是否可以禁止在 for 循环体内修改循环变量?
- json - 如何设置状态 http url?
- android - Kotlin 隐藏替换的片段不起作用
- python - 两个点层之间的距离矩阵
- android - 导航组件隐式深层链接不适用于 res 字符串
- html - 如何使背景图像缩放到平行 div 的高度?
- memory - 如何有效地覆盖 GPU 上的内存区域?