首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的落脚点一直在发亮?Discord.js

为什么我的落脚点一直在发亮?Discord.js
EN

Stack Overflow用户
提问于 2021-10-25 08:45:19
回答 1查看 47关注 0票数 0

这就是我的控制台所显示的: 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进程。

代码语言:javascript
复制
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

代码语言:javascript
复制
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;
    }
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-25 09:19:00

这条线上

代码语言:javascript
复制
        client.commands.get("rr1").execute(message, args);

您只提供message变量和args数组,而不是client,因此您有两个选择。

要么在执行函数中包含client

代码语言:javascript
复制
        client.commands.get("rr1").execute(message, args, client);

或者不包括client,只需将命令文件中的每个client替换为message.client

代码语言:javascript
复制
    message.client.on("clickMenu", (menu) => {

如果我是你,我会选第一个,但这取决于你

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69705090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档