【问题标题】:Can't Get Specific Channel - Discord.js v11.6.4无法获取特定频道 - Discord.js v11.6.4
【发布时间】:2021-06-11 17:14:57
【问题描述】:

我在运行时收到此错误:(node:7112) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'cache' of undefined

        const Discord = require("discord.js");

exports.run = async (client, message, member, args) => {

    let Help = new Discord.RichEmbed()
    .setAuthor(`[client] Help - ${message.author.username}#${message.author.discriminator}`)
    .addField(`.help                  `, `bring up help list.`)
    .setColor("#ff1100");
    message.channel.send(Help);

    /* Command Logger */
        var DateTime = new Date();
        var Hours = DateTime.getHours();
        Hours = (Hours < 10 ? "0" : "") + Hours;
        var Minutes = DateTime.getMinutes();
        Minutes = (Minutes < 10 ? "0" : "") + Minutes;
        var Seconds = DateTime.getSeconds();
        Seconds = (Seconds < 10 ? "0" : "") + Seconds;

        let CommandLog = new Discord.RichEmbed()
        .addField(`Command: Help`)

        member.guild.cache.channels.cache.get('820470375602847745').send(CommandLog);
    /* Command Logger */
    message.delete();
};

exports.help = {
    name: 'help',
};

【问题讨论】:

  • 我给你加的
  • 我确实添加了它,它在第 2 行
  • 我很确定这无关紧要,因为它可以在没有命令记录器的情况下工作。
  • 我只需要帮助使用 id 向特定频道发送消息。

标签: javascript node.js discord discord.js


【解决方案1】:

看起来member.guildundefined,这可能意味着member 不是GuildMember 对象。在调用run 函数(在message 事件处理程序内)时,检查您是否将message.member 作为第三个参数传递。修复后,删除member.guild 上的cache 调用。 Guild 对象没有 cache 属性。由于您使用的是 discord.js v11,guild.channels 返回一个Collection。因此,您可以使用guild.channels.get 来获取频道。 guild.channels 的返回类型在 v12 中更改为 GuildChannelManager

// discord.js v11
member.guild.channels.get('820470375602847745')

// v12
member.guild.channels.cache.get('820470375602847745')

您还可以在 v11 中使用 message.guild.channels 来访问频道集合。

// discord.js v11
message.guild.channels.get('820470375602847745')

// v12
message.guild.channels.cache.get('820470375602847745')

【讨论】:

  • 我试过 ``` let channel = message.guild.channels.cache.get('820470375602847745') if(channel) channel.send(CommandLog); ```但输出是:(节点:11660)UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性'get'
  • 您使用的是哪个版本的 discord.js?
  • 它在标题中:v11.6.4
  • @bananapie 啊,guild.channels 仅从 discord.js v12 返回 GuildChannelManager。我已经用 v11 所需的代码更新了我的答案。
  • 好的,是的,有效(message.guild.channels.get('820470375602847745'))非常感谢。
猜你喜欢
  • 2020-11-21
  • 2019-09-05
  • 2021-04-02
  • 1970-01-01
  • 2020-05-10
  • 2021-06-10
  • 2018-04-25
  • 2021-05-04
  • 1970-01-01
相关资源
最近更新 更多