等待dTypeError [ERR_INVALID_ARG_TYPE]:“ id”参数必须为字符串类型。收到未定义

时间:2020-04-27 10:45:31

标签: javascript bots discord discord.js

我正在使用discord.js v12.2.0库编写一个discord机器人,但出现此错误:

等待dTypeError [ERR_INVALID_ARG_TYPE]:“ id”参数必须为字符串类型。收到未定义

这是我的代码:

const { MessageEmbed } = require("discord.js");
const { VultrexDB } = require("vultrex.db");
const messageData = new VultrexDB({
    name: "messages"
})

module.exports.run = (client, message, args) => {
    const member = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.member;
    const messages = messageData.get(`${message.guild.id}-${member.id}`, 0);

    message.chanel.send(new MessageEmbed()
        .setColor("E67E22")
        .setAuthor(`Data | ${member.user.username}`, member.user.displayAvatarURL())
        .addField("Messages Sent:", messages, true)
    );
}

module.exports.help = {
    name: "messages",
    description: "view the amount of messages sent by a member"
}

module.exports.requirements = {
    clientPerms: ["EMBED_LINKS"],
    userPerms: [],
    ownerOnly: false
}

1 个答案:

答案 0 :(得分:0)

您应该学会调试,尤其是因为该错误实际上告诉您答案。它告诉你哪条线了吗?如果是这样,那么您的答案是正确的,但如果没有,就可以这样做:

  1. 告诉您无效的arg,这意味着您调用了一个函数(包括新类),并且传入的参数无效
  2. 参数未定义

new VultrexDBmessage.mentions.members.firstmessage.mentions.members.cache.getmessageData.getnew MessageEmbedsetColorsetAuthoraddField

您可以排除MessageEmbed and message.mentions.members.first since they don't require any arguments, setColor , setAuthor , and addField`都是自变量

留下new VultrexDBmessage.mentions.members.cache.getmessageData.get

对于message.mentions.members.cache.get,它只需要一个参数,即id,然后将其传递给args[0],因此要检查是否是问题,只需检查是否有args

对于new VultrexDBmessageData.get,它们是基于VultrexDB并对其进行idk的,因此,如果有指南或文档,则请看一下。