首页 > 解决方案 > 等待 dTypeError [ERR_INVALID_ARG_TYPE]:“id”参数必须是字符串类型。收到未定义

问题描述

我正在使用discord.jsv12.2.0 库编写一个不和谐的机器人,我收到了这个错误:

等待 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
}

标签: javascriptbotsdiscorddiscord.js

解决方案


你应该学习调试,尤其是因为这个错误实际上告诉你答案。有没有告诉你是哪条线?如果是这样,那是您的答案,但如果没有:

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

new VultrexDB, message.mentions.members.first, message.mentions.members.cache.get, messageData.get, new MessageEmbed, setColor, setAuthor,addField

你可以排除MessageEmbed andmessage.mentions.members.first since they don't require any arguments,setColor ,setAuthor , andaddField`都在给参数

离开new VultrexDBmessage.mentions.members.cache.getmessageData.get

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

对于new VultrexDBand messageData.get,这些都是基于 VultrexDB 的,所以只要看看指南或文档(如果有的话)。


推荐阅读