Javascript 无法读取属性';nsfw';未定义的名称-discord.js

Javascript 无法读取属性';nsfw';未定义的名称-discord.js,javascript,discord.js,commando,Javascript,Discord.js,Commando,我目前正在开发一个使用“discord.js”、“discord.js commando”和“snekfetch”的discord机器人。我正在尝试创建一个函数,如果公会成员要键入“!meme”,discord机器人将从r/dankmemes中随机获取一篇帖子,并使用richEmbed将其发送到相应的频道。但是,在测试功能时,会出现以下错误消息: TypeError: Cannot read property 'nsfw' of undefined TypeError: Cannot read

我目前正在开发一个使用“discord.js”、“discord.js commando”和“snekfetch”的discord机器人。我正在尝试创建一个函数,如果公会成员要键入“!meme”,discord机器人将从r/dankmemes中随机获取一篇帖子,并使用richEmbed将其发送到相应的频道。但是,在测试功能时,会出现以下错误消息:

TypeError: Cannot read property 'nsfw' of undefined

TypeError: Cannot read property 'send' of undefined

我已经尝试解决这个问题4天了,我完全不知道是什么导致了这个问题。根据discord.js文档,这应该可以完全正常工作。我已在下面附加了命令模块:

const Commando = require('discord.js-commando');
const Discord = require('discord.js');
const snekfetch = require('snekfetch');

class MemesRssCommand extends Commando.Command
{
    constructor(client)
    {
        super(client,{
            name: 'meme',
            group: 'simple',
            memberName: 'meme',
            description: 'Takes a random meme from r/dankmemes'
        });
    }

    async run(client, message, args) {
        try {
            const { body } = await snekfetch
                .get('https://www.reddit.com/r/dankmemes.json?sort=top&t=week')
                .query({ limit: 800 });
            const allowed = message.channel.nsfw ? body.data.children : body.data.children.filter(post => !post.data.over_18);
            if (!allowed.length) return message.channel.send('Our farmers were unable to locate any ripe memes! Try again later (You shouldnt see this message. If you are reading this, then reddit is probably offline. If reddit is online and you still get this message, contact @According to the example in documentation the callback for 
run
is
run(message, args)
but you are defining it as
run(client, message, args)
, thus the
message.channel
is undefined since you are trying to access it on the wrong object.

    async run(message, args) {
        const member = args.member;
        const channel = message.channel
        // ....
    }
const Commando=require('discord.js Commando');
const Discord=require('Discord.js');
const snekfetch=require('snekfetch');
类memesrscommand扩展Commando.Command
{
建造商(客户)
{
超级(客户、{
名称:'模因',
小组:"简单",,
memberName:'meme',
描述:'从r/dankmemes中随机抽取一个模因'
});
}
异步运行(客户端、消息、参数){
试一试{
const{body}=wait snekfetch
.get('https://www.reddit.com/r/dankmemes.json?sort=top&t=week')
.query({limit:800});
const allowed=message.channel.nsfw?body.data.children:body.data.children.filter(post=>!post.data.over18);
if(!allowed.length)return message.channel.send('我们的农民找不到任何成熟的memes!请稍后再试(您不应该看到此消息。如果您正在阅读此消息,则reddit可能处于脱机状态。如果reddit处于联机状态而您仍然收到此消息,请根据文档中的
run
的回调是
run,请与@联系(message,args)
但是您将其定义为
run(client,message,args)
,因此
message.channel
未定义,因为您试图在错误的对象上访问它

根据文档中的说明,
run
的回调是
run(message,args)
,但您将其定义为
run(client,message,args)
,因此
message.channel
未定义,因为您试图在错误的对象上访问它


错误状态为,
message.channel
未定义。请检查传递到
run()
@Bucket的第二个参数的值问题是
run
只接受两个参数
run(message,args)
。错误状态为,
message.channel
undefined
。检查传递到
run()
@Bucket的第二个参数的值问题是
run
只接受两个参数
run(message,args)