← back to browse
goat command

anigif

𝗀𝖾𝗍 𝖺𝗇𝗂𝗆𝖾 π—€π—‚π–Ώπ—Œ 𝖻𝗒 π—π–Ίπ—€π—Œ 𝗐𝗂𝗍𝗁 π–Ίπ–Ύπ—Œπ—π—π–Ύπ—π—‚π–Ό π—Œπ—π—’π—…π–Ύ

0
views
0
likes
0
installs
raw source
const fetch = require('node-fetch');
const fs = require('fs-extra');
const path = require('path');

module.exports = {
    config: {
        name: "anigif",
        version: "2.0",
        author: "S1FU",
        countDown: 10,
        role: 0,
        category: "𝖺𝗇𝗂𝗆𝖾",
        shortDescription: {
            en: "𝗀𝖾𝗍 𝖺𝗇𝗂𝗆𝖾 π—€π—‚π–Ώπ—Œ 𝖻𝗒 π—π–Ίπ—€π—Œ 𝗐𝗂𝗍𝗁 π–Ίπ–Ύπ—Œπ—π—π–Ύπ—π—‚π–Ό π—Œπ—π—’π—…π–Ύ"
        },
        guide: {
            en: "γ€Ž {pn} <𝗍𝖺𝗀> 』"
        }
    },

    onStart: async function ({ api, args, message, event }) {
        const sfwTags = [
            "bite", "blush", "comfy", "cry", "cuddle", "dance", "eevee", "fluff", "holo", "hug", "icon", "kiss", "kitsune", 
            "lick", "neko", "okami", "pat", "poke", "senko", "sairo", "slap", "smile", "tail", "tickle"
        ];
        
        const nsfwTags = [
            "anal", "blowjob", "cum", "fuck", "pussylick", "solo", "threesome_fff", "threesome_ffm", 
            "threesome_mmf", "yaio", "yuri"
        ];

        const availableTags = [...sfwTags, ...nsfwTags];
        const tag = args[0]?.toLowerCase();

        if (!tag || !availableTags.includes(tag)) {
            return message.reply(`┏━━━〔 𝗍𝖺𝗀 π—…π—‚π—Œπ— 〕━━━┓\n\n  α―“β˜… π—Œπ–Ώπ—: ${sfwTags.slice(0, 5).join(", ")}... (π—π—ˆπ—π–Ίπ—… ${sfwTags.length})\n  α―“β˜… π—‡π—Œπ–Ώπ—: ${nsfwTags.slice(0, 5).join(", ")}...\n\n  ⋆ π—Žπ—Œπ–Ύ: {pn} 𝗍𝖺𝗀𝗇𝖺𝗆𝖾\n\n┗━━━━━━━━━━━━━━━┛`);
        }

        const isNsfw = nsfwTags.includes(tag);
        const endpoint = `https://purrbot.site/api/img/${isNsfw ? 'nsfw' : 'sfw'}/${tag}/gif`;

        try {
            const response = await fetch(endpoint);
            if (response.status !== 200) return message.reply("α―“β˜… 𝖺𝗉𝗂 π–Όπ—ˆπ—‡π—‡π–Ύπ–Όπ—π—‚π—ˆπ—‡ 𝖿𝖺𝗂𝗅𝖾𝖽 α²˜π‘Ό");

            const data = await response.json();
            const gifUrl = data.link;

            const gifRes = await fetch(gifUrl);
            const buffer = await gifRes.buffer();
            const filePath = path.join(__dirname, `cache`, `${tag}_${event.senderID}.gif`);
            
            if (!fs.existsSync(path.join(__dirname, `cache`))) fs.mkdirSync(path.join(__dirname, `cache`));
            fs.writeFileSync(filePath, buffer);

            return message.reply({
                body: `┏━━━〔 𝖺𝗇𝗂𝗆𝖾 𝗀𝗂𝖿 〕━━━┓\n\n  α―“β˜… 𝗍𝖺𝗀: ${tag}\n  α―“β˜… π–Ύπ—‡π—ƒπ—ˆπ—’ π—’π—ˆπ—Žπ—‹ 𝗏𝗂𝗏𝖾 ⋆\n\n┗━━━━━━━━━━━━━━━┛`,
                attachment: fs.createReadStream(filePath)
            }, () => { if (fs.existsSync(filePath)) fs.unlinkSync(filePath); });

        } catch (err) {
            console.error(err);
            return message.reply("α―“β˜… π—Œπ—’π—Œπ—π–Ύπ—† π–Ύπ—‹π—‹π—ˆπ—‹ π—ˆπ–Όπ–Όπ—Žπ—‹π–Ύπ–½ .ᐟ");
        }
    }
};

View raw file