TypeError:无法读取未定义的属性(读取'频道')

原学程将引见TypeError:没法读与不决义的属性(读与&#三九;频讲&#三九;)的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

TypeError:无法读取未定义的属性(读取'频道') 教程 第1张

成绩描写

我碰到了这个小成绩,我支到了不决义毛病的Cannot Read属性,但是我没有晓得成绩出在那边。有人能助我搬这个吗?

代码以下:

const { Client } = require("discord.js");
const DB = require("../Structures/Schemas/LockDown");
/**
 * @param {Client} client
 */
module.exports = async(client) => {
 DB.find().then(async (documentsArray) => {
  documentsArray.forEach(async (d) => {
const Channel = client.guilds.cache
.get(d.GuildId)
.channels.cache.get(d.ChannelID);
if(!Channel) return;

const TimeNow = Date.now();
if(d.Time < TimeNow){
Channel.permissionOverwrites.edit(d.GuildID, {
 SEND_MESSAGES: null,
});
return await DB.deleteOne({ ChannelID: Channel.id });
  }

const ExpireDate = d.time - Date.now();

setTimeout(async () => {
 Channel.permissionOverwrites.edit(d.GuildID, {
  SEND_MESSAGES: null,
 });
 await DB.deleteOne({ ChannelID: Channel.id });
}, ExpireDate);
  });
 });
};

上面是我支到的毛病:

TypeError: Cannot read properties of undefined (reading 'channels')

推举谜底

能够并不是一切渠讲以及言会皆添减到慢存中。先试着把它们拿去,而后再瞅瞅。比方,上面如许的代码应当不妨任务:

const { Client } = require('discord.js');
const DB = require('../Structures/Schemas/LockDown');
/**
 * @param {Client} client
 */
module.exports = async(client) => {
 DB.find().then(async(documentsArray) => {
  documentsArray.forEach(async(d) => {
const GuildChannel = await client.guilds.fetch(d.GuildId);
const Channel = await GuildChannel.channels.fetch(d.ChannelID);
if (!Channel) return;

const TimeNow = Date.now();
if (d.Time < TimeNow) {
 Channel.permissionOverwrites.edit(d.GuildID, {
  SEND_MESSAGES: null,
 });
 return await DB.deleteOne({
  ChannelID: Channel.id
 });
}

const ExpireDate = d.time - Date.now();

setTimeout(async() => {
 Channel.permissionOverwrites.edit(d.GuildID, {
  SEND_MESSAGES: null,
 });
 await DB.deleteOne({
  ChannelID: Channel.id
 });
}, ExpireDate);
  });
 });
};

没有是先夺取言会而后夺取渠讲,而是直交从客户端夺取渠讲,以下所示:

const { Client } = require('discord.js');
const DB = require('../Structures/Schemas/LockDown');
/**
 * @param {Client} client
 */
module.exports = async(client) => {
 DB.find().then(async(documentsArray) => {
  documentsArray.forEach(async(d) => {
const Channel = await client.channels.fetch(d.ChannelID);
if (!Channel) return;

const TimeNow = Date.now();
if (d.Time < TimeNow) {
 Channel.permissionOverwrites.edit(d.GuildID, {
  SEND_MESSAGES: null,
 });
 return await DB.deleteOne({
  ChannelID: Channel.id
 });
}

const ExpireDate = d.time - Date.now();

setTimeout(async() => {
 Channel.permissionOverwrites.edit(d.GuildID, {
  SEND_MESSAGES: null,
 });
 await DB.deleteOne({
  ChannelID: Channel.id
 });
}, ExpireDate);
  });
 });
};

或许,如@Malik Lahlou所说,能够是挨字毛病。

资本:

    ChannelManager.fetch()

    GuildManager.fetch()

愿望这能有所赞助!

佳了闭于TypeError:没法读与不决义的属性(读与&#三九;频讲&#三九;)的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。