无法获取特定频道 - Discord.js v11.6.4

Posted

技术标签:

【中文标题】无法获取特定频道 - Discord.js v11.6.4【英文标题】:Can't Get Specific Channel - 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 向特定频道发送消息。 【参考方案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'))非常感谢。

以上是关于无法获取特定频道 - Discord.js v11.6.4的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js TypeError:无法读取未定义发送到特定频道的属性“发送”

从 v11 迁移后,无法在 discord.js v12 中从服务器设置用户状态和记录用户数量

Discord.js - 允许特定频道中的命令[关闭]

如何查找机器人在特定频道中发送的消息? [discord.js]

在特定频道中重定向 Discord DM

如何删除 Discord 服务器中的所有频道?