【问题标题】:TypeError: Cannot read property 'resolve' of undefined discord.jsTypeError:无法读取未定义 discord.js 的属性“解决”
【发布时间】:2020-12-21 22:05:57
【问题描述】:

此代码出现此错误

const Discord = require('discord.js');
module.exports = {
    name: 'info',
    description: "Shows BOT's Informations",
    execute(message, client, args) {
        const MyUsername = client.guilds.resolve(testserver).members.resolve(creator).user
        const infoEmbed = new Discord.MessageEmbed()

奇怪的是我有

const MyUsername = client.guilds.resolve(testserver).mebers.resolve(creator).user

即使在我的 index.js 中,它也能正常工作。

我该如何解决这个问题?

【问题讨论】:

  • 既然你在同一行中有两次.resolve,你能分辨出什么是未定义的吗? client.guilds 还是 client.guilds.resolve(testserver).members?您还可以显示testservercreator 的值是多少?因为目前看起来它们没有在任何地方定义
  • 只有 client 可以在此代码中未定义。如果定义了client,那么client.guilds 也将被定义,因此guild.members 将被另外定义。请确保您的 client 变量已定义;如果没有,请改用message.client。否则,testserver 可能是无效 ID。
  • 我在我的 config.json 文件中定义了 testserver 和 creator。

标签: javascript discord discord.js


【解决方案1】:

有两种可能:client.guilds 未定义或 guild.members 未定义。

如果定义了client 并且使用适当的公会ID 定义了testserver,那么client.guilds 也将被定义,因此guild.members 将被额外定义。但是,如果 client 未定义,那么您将收到与您得到的错误相似的错误(但不完全相同)。请确保您的 client 变量已定义并具有值;如果没有,请改用message.client

此外,请确保您的 testserver 变量已定义且具有有效 ID。这很可能是您的问题的原因;您是否在此文件中创建了 testserver 变量?此文件中的 ID 是否有效?

请务必分开获取您的公会、成员和用户,以便您可以更轻松地解决此类问题:

const guild = message.client.guilds.resolve(testserver);
if (!guild) return message.channel.send("Couldn't find the guild!")

let myMember = guild.members.resolve(creator);
if (!myMember) return message.channel.send("Couldn't find the user!")

const myUser = myMember.user;

这段代码不仅是更好的实践,它还解释了无法找到公会或用户的情况。这很重要,因为如果您无法找到您的用户并将其存储在变量中,您不希望您的代码继续执行,因为这是一个基本变量,您的其余代码可能依赖于此。另外,这将极大地帮助您找出代码的哪一部分给您带来了问题,因为它会告诉您它是否找不到合适的公会/用户。

【讨论】:

  • 添加您发送的代码行后,我发现我没有定义testservercreator,在解决之后仍然是开始问题......我想我没有'不定义客户端,我该如何定义它?做const client = Discord.Client(); 不起作用。
  • 好吧,使用message.client 解决了我的问题,谢谢
  • 没问题!是的,用Discord.Client() 创建一个新客户端是行不通的,因为client 代表一个机器人,所以创建一个新客户端相当于创建一个全新的机器人。您需要访问作为您的机器人登录的实际client,这可以通过message.client 完成(如您所想)。
猜你喜欢
  • 1970-01-01
  • 2023-01-14
  • 2020-07-14
  • 2019-07-11
  • 2021-05-29
  • 2020-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多