Discord.js 无法读取未定义的属性“获取”

Posted

技术标签:

【中文标题】Discord.js 无法读取未定义的属性“获取”【英文标题】:Discord.js Cannot read property 'fetch' of undefined 【发布时间】:2020-12-05 22:53:26 【问题描述】:

几天前我刚开始使用 javascript 和 Discord.js 进行开发并收到此错误:

TypeError:无法读取未定义的属性“获取”

我正在尝试发出投票命令。这是代码(我删除了其他所有内容,只是希望它能够从中获取频道):

const Discord = require('discord.js');
const client = new Discord.Collection();

 module.exports = 
    name: 'poll',
    description: 'can make polls',
    cooldown: 5,
    usage: '[ask] [emoji1] [emoji 2]',
    aliases: ['createpoll'],
    execute(message, args) 
        client.channels.fetch('744582158324072468')
        .then (channel => console.log(channel.name))
        .catch(console.error);
       // message.react(args[1]).then(() => message.react(args[0]));
    ,
;     

我已经尝试将它放在有效的 Main.js 中:

client.on('message', message => 
if (message.content.startsWith('.poll')) 
        client.channels.fetch('744582158324072468')
        .then (channel => console.log(channel.name))
        .catch(console.error); 
    

但我希望它输入正确的文件。这就是我上面的client.on('message'等

const fs = require('fs');
const Discord = require('discord.js');
const  prefix, token, tprefix, welcomechannel, guildID  = require('./config.json');

const client = new Discord.Client(
    fetchAllMembers: true,
);

client.commands = new Discord.Collection();


const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));

for (const file of commandFiles) 
    const command = require(`./commands/$file`);
    client.commands.set(command.name, command);


const cooldowns = new Discord.Collection();

// update

client.once('ready', () => 
    console.log(`$tprefixPaperbot got geupdated.`);
);

当然,我用谷歌搜索并阅读了文档,但这并没有帮助。

正如我所说,我是编程新手,这可能很容易解决,但我希望尽快解决这个问题,非常感谢。

【问题讨论】:

【参考方案1】:

想通了。我只需要将消息添加到client.channels.fetch

现在它正在使用此代码:

const  tprefix, pollchannel, modchannel  = require('../config.json');


 module.exports = 
    name: 'poll',
    description: 'can make polls',
    cooldown: 5,
    usage: '[ask] [emoji1] [emoji 2]',
    aliases: ['createpoll'],
    execute(message) 
        message.client.channels.fetch('744582158324072468')
        .then (channel => console.log(channel.name))
        .catch(console.error);
    ,
;     

谢谢@Jack Towns

【讨论】:

如果有人的回答解决了你的问题,请mark it as accepted【参考方案2】:

您将客户端分配给代码顶部的新 Discord 集合。

您实际上是在做Collection.channels.fetch 而不是client.channels.fetch

您需要将客户端从您的主文件传递给您的命令。

【讨论】:

现在我得到了这个:HTTPError [DiscordjsError]: Request to use token, but token was unavailable to the client. @centrix.js 这很可能意味着您的令牌无效,请尝试在开发面板上重新生成它。

以上是关于Discord.js 无法读取未定义的属性“获取”的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js:TypeError:无法读取未定义的属性“删除”

TypeError:无法读取未定义的“获取”函数(discord.js)

discord.js无法读取未定义的属性'get'(client.channels.get())

使用 Node.js、Mongoose 和 Discord.js 的未定义错误 [无法读取未定义的属性]

Discord.js 的欢迎消息 - “无法读取未定义的属性 'get'”

discord.js 成员计数 - 无法读取未定义的属性“通道”