这就是我的控制台所显示的: UnhandledPromiseRejectionWarning: ReferenceError: client没有在processTicksAndRejections (内部/process/ReferenceError_Quees.js:97:5)(节点:2432)、UnhandledPromiseRejectionWarning:未处理的承诺拒绝的processTicksAndRejections(/home/ReferenceError/Bot/命令/rr1.js:99:5)中定义。此错误起源于在异步函数中抛出而不带catch块,或者拒绝使用.catch()处理的承诺。若要在未处理的允诺拒绝时终止节点进程,请使用CLI标志--unhandled-rejections=strict (请参阅https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝id: 1) (节点:2432) DEP0018 DeprecationWarning:未处理的承诺拒绝被取消。在未来,承诺不处理的拒绝将使用非零退出代码终止Node.js进程。
const Discord = require("discord.js")
const { MessageMenuOption, MessageMenu } = require("discord-buttons")
const { prefix } = require('../config.json')
module.exports = {
name: 'rr1',
description: 'send embedded level message',
async execute(message, args) {
const option1 = new MessageMenuOption()
.setLabel("Black Charcoal")
.setValue("Option 1")
.setDefault()
.setEmoji("")
const option2 = new MessageMenuOption()
.setLabel("Love Magenta")
.setValue("Option 2")
.setDefault()
.setEmoji("❤️")
const selection = new MessageMenu()
.setID("Selection")
.setMaxValues(1)
.setMinValues(0)
.setPlaceholder("Select Role")
.addOption(option1)
.addOption(option2)
const embed = new Discord.MessageEmbed()
.setColor("0x00a6ff")
.setTitle("Colour Role")
.setDescription(`<@&x>\n<@&x>`)
const role1 = message.guild.roles.cache.find(r => r.id === "x")
const role2 = message.guild.roles.cache.find(r => r.id === "x")
async function menuselection(menu) {
switch(menu.values[0]) {
case "Option 1":
if(message.member.roles.cache.has("x") || message.member.roles.cache.has("x") || message.member.roles.cache.has("x")){
await message.member.roles.add(role1)
await message.member.roles.remove([role2])
await menu.reply.send("Claimed Black Charcoal!", true)}
break;
case "Option 2":
if(message.member.roles.cache.has("x") || message.member.roles.cache.has("782356910782677003") || message.member.roles.cache.has("780476718820884581")){
await message.member.roles.add(role2)
await message.member.roles.remove([role1])
await menu.reply.send("Claimed Love Magenta!", true)}
break;
}
}
let menumsg = await message.channel.send(embed, selection)
client.on("clickMenu", (menu) => {
if(menu.message.id == menumsg.id) {
if(menu.clicker.user.id == message.author.id) menuselection(menu)
else menu.reply.send("You are not allowed to pick!", true)
}
})
}
}Main.js
client.on('message', async (message, guild) => {
if (!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).split(/ +/);
const command = args.shift().toLowerCase();
switch (message.content) {
case (prefix + "rr1"):
client.commands.get("rr1").execute(message, args);
break;
}
});发布于 2021-10-25 09:19:00
这条线上
client.commands.get("rr1").execute(message, args);您只提供message变量和args数组,而不是client,因此您有两个选择。
要么在执行函数中包含client
client.commands.get("rr1").execute(message, args, client);或者不包括client,只需将命令文件中的每个client替换为message.client
message.client.on("clickMenu", (menu) => {如果我是你,我会选第一个,但这取决于你
https://stackoverflow.com/questions/69705090
复制相似问题