В настоящее время я работаю над ботом Discord, который использует 'discord.js', 'discord.js-commando' и 'snekfetch'. Я пытаюсь создать функцию, в которой, если член гильдии наберет "! Meme", бот-дискордер получит случайный пост из 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 @????????#1612');
const randomnumber = Math.floor(Math.random() * allowed.length)
const embed = new Discord.RichEmbed()
.setColor(0x00A2E8)
.setTitle(allowed[randomnumber].data.title)
.setDescription("Posted by: " + allowed[randomnumber].data.author)
.setImage(allowed[randomnumber].data.url)
.addField("Other info:", "Up votes: " + allowed[randomnumber].data.ups + " / Comments: " + allowed[randomnumber].data.num_comments)
.setFooter("Posted by: " + allowed[randomnumber].data.author + " | Memes provided by https://www.reddit.com/r/dankmemes")
message.channel.send(embed)
} catch (err) {
return console.log(err);
}
}
}
module.exports = MemesRssCommand