无法获取特定频道 - 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.guild
是undefined
,这可能意味着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 中从服务器设置用户状态和记录用户数量