首页 > 解决方案 > 使用 random-puppy 和 discord.js v12 绕过 NSFW 警告页面?

问题描述

我正在尝试制作一个 meme 机器人(使用 reddit),但一些 subreddit 有一个 NSFW 警告页面,它阻止随机小狗获取图像,我该如何绕过它?如果你知道更好的事情,我很欢迎随机小狗的替代品

module.exports = {
    name: "meme",
    description: "Sends a meme",
    async execute(message, args){
        const Discord = require("discord.js");
        const bot = new Discord.Client();
        const ms = require("ms");
        const moment = require("moment");
        const colors = require("colors");
        const randomPuppy = require("random-puppy");

        const memeSubreddits = ["dankmemes", "memes", "meme", "me_irl", "meirl", "comedyheaven", "NSFWMemes", "okbuddyretard"]
        const memeRandom = memeSubreddits[Math.floor(Math.random() * memeSubreddits.length)];

        const memeImage = await randomPuppy(memeRandom);
        const memeEmbed = new Discord.RichEmbed()
            .setColor("RANDOM")
            .setImage(memeImage)
            .setTitle(`From r/${memeRandom}`)
            .setURL(`https://reddit.com/r/${memeRandom}`);

        message.channel.send(memeEmbed); 
    }
}

标签: javascriptnode.jsdiscorddiscord.jsreddit

解决方案


我建议使用memejs从 Reddit 获取 meme。正如它的包名所暗示的那样,它会获取模因,但您也可以过滤它收集的内容。

例如,您可以这样做:

module.exports = {
    name: "meme",
    description: "Sends a meme",
    guildOnly: true,
    execute(message) {
        const {
            meme
        } = require('memejs');

        meme(function (err, data) {
            if (err) return console.error(err);
            const Discord = require('discord.js');
            const memeRes = new Discord.RichEmbed()
                .setTitle(data.title)
                .setImage(data.url)
                .setFooter(data.subreddit)
                .setTimestamp('Created ' + data.created)
            message.channel.send(memeRes).then().catch(console.error);

        });

    },
}

与每个 Node 包一样,您可以在 RunKit 上使用它们。你可以在这里做

另外,作为一个小提示,您不需要声明命令中未使用的模块。这基本上从您的命令中消除了以下内容:

const bot = new Discord.Client();
const ms = require("ms");
const moment = require("moment");
const colors = require("colors");

推荐阅读