为什么我的下拉列表总是失败? Discord.js
Why do mydropdown keep failling? Discord.js
这是我的控制台显示的内容:
UnhandledPromiseRejectionWarning: ReferenceError: 未定义客户端
在 Object.execute (/home/runner/Bot/commands/rr1.js:99:5)
在 processTicksAndRejections (internal/process/task_queues.js:97:5)
(节点:2432)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。这个错误要么是在没有 catch 块的情况下在异步函数内部抛出,要么是因为拒绝了一个没有用 .catch() 处理的承诺。要在未处理的承诺拒绝时终止节点进程,请使用 CLI 标志 --unhandled-rejections=strict
(请参阅 https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。 (拒绝编号: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;
}
});
这条线
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) => {
如果我是你,我会选择第一个,但这取决于你
这是我的控制台显示的内容:
UnhandledPromiseRejectionWarning: ReferenceError: 未定义客户端
在 Object.execute (/home/runner/Bot/commands/rr1.js:99:5)
在 processTicksAndRejections (internal/process/task_queues.js:97:5)
(节点:2432)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。这个错误要么是在没有 catch 块的情况下在异步函数内部抛出,要么是因为拒绝了一个没有用 .catch() 处理的承诺。要在未处理的承诺拒绝时终止节点进程,请使用 CLI 标志 --unhandled-rejections=strict
(请参阅 https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。 (拒绝编号: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;
}
});
这条线
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) => {
如果我是你,我会选择第一个,但这取决于你