Kembali ke Beranda
Gistify Snippet
Feb 17·1 file(s)
Public
PIXIV SEARCH CAROUSEL MESSAGE
synced from github gist pixiv.js
#downloader
pixiv.jsjavascript
97 baris| 1 | /* |
| 2 | * ─────────────────────────── |
| 3 | * 🟢 JOY MD - SOURCE CODE |
| 4 | * ─────────────────────────── |
| 5 | * 👤 Channel : https://shorturl.at/ce5eX |
| 6 | * 📅 Fetched : 17/2/2026, 18.05.49 |
| 7 | * 📂 File : pixiv.js |
| 8 | * ─────────────────────────── |
| 9 | */ |
| 10 | |
| 11 | /** |
| 12 | * @module plugins/internet/pixiv |
| 13 | * @description Search Pixiv images and display as Carousel |
| 14 | */ |
| 15 | |
| 16 | import axios from 'axios' |
| 17 | import { createRequire } from "module"; |
| 18 | const require = createRequire(import.meta.url); |
| 19 | const { prepareWAMessageMedia } = require('@adiwajshing/baileys'); |
| 20 | |
| 21 | let handler = async (m, { conn, text, usedPrefix, command }) => { |
| 22 | if (!text) return m.reply(`🔍 Masukkan nama karakter/pencarian.\nContoh: *${usedPrefix + command}* Alya`) |
| 23 | |
| 24 | await m.reply(global.wait || '⏳ Mohon tunggu sebentar...') |
| 25 | |
| 26 | try { |
| 27 | const { data } = await axios.get(`https://api.ryzumi.net/api/search/pixiv?query=${encodeURIComponent(text)}`, { |
| 28 | headers: { 'accept': 'application/json' } |
| 29 | }) |
| 30 | |
| 31 | if (!data || !data.Media || data.Media.length === 0) { |
| 32 | return m.reply('❌ Tidak ada gambar yang ditemukan untuk query tersebut.') |
| 33 | } |
| 34 | |
| 35 | const cards = [] |
| 36 | const images = data.Media.slice(0, 10) |
| 37 | |
| 38 | for (let i = 0; i < images.length; i++) { |
| 39 | const url = images[i] |
| 40 | try { |
| 41 | const media = await prepareWAMessageMedia({ image: { url: url } }, { upload: conn.waUploadToServer }) |
| 42 | |
| 43 | cards.push({ |
| 44 | body: { text: `${data.caption || 'Pixiv Art'} (Page ${i + 1})` }, |
| 45 | footer: { text: `🎨 Artist: ${data.artist || 'Unknown'}` }, |
| 46 | header: { hasMediaAttachment: true, imageMessage: media.imageMessage }, |
| 47 | nativeFlowMessage: { |
| 48 | buttons: [ |
| 49 | { |
| 50 | name: "cta_url", |
| 51 | buttonParamsJson: JSON.stringify({ |
| 52 | display_text: "🖼️ View Original", |
| 53 | url: url, |
| 54 | merchant_url: url |
| 55 | }) |
| 56 | } |
| 57 | ] |
| 58 | } |
| 59 | }) |
| 60 | } catch (err) { |
| 61 | console.error(`Error preparing card for page ${i}:`, err) |
| 62 | } |
| 63 | } |
| 64 | |
| 65 | if (cards.length === 0) return m.reply('❌ Gagal memuat gambar ke carousel.') |
| 66 | |
| 67 | const tags = data.tags ? data.tags.join(', ') : '-' |
| 68 | const bodyText = `🎨 *P I X I V S E A R C H*\n\n` + |
| 69 | `🔎 *Query:* ${text}\n` + |
| 70 | `👤 *Artist:* ${data.artist || 'Unknown'}\n` + |
| 71 | `🏷️ *Tags:* ${tags.length > 100 ? tags.substring(0, 97) + '...' : tags}` |
| 72 | |
| 73 | await conn.relayMessage(m.chat, { |
| 74 | viewOnceMessage: { |
| 75 | message: { |
| 76 | interactiveMessage: { |
| 77 | body: { text: bodyText }, |
| 78 | header: { hasMediaAttachment: false }, |
| 79 | carouselMessage: { cards } |
| 80 | } |
| 81 | } |
| 82 | } |
| 83 | }, { quoted: m }) |
| 84 | |
| 85 | } catch (e) { |
| 86 | console.error('Pixiv Error:', e) |
| 87 | m.reply('❌ Terjadi kesalahan saat mengambil data dari Pixiv.') |
| 88 | } |
| 89 | } |
| 90 | |
| 91 | handler.help = ['pixiv <query>'] |
| 92 | handler.tags = ['internet'] |
| 93 | handler.command = ['pixiv'] |
| 94 | handler.prefix = true |
| 95 | |
| 96 | export default handler |
| 97 | |
Diskusi & Komentar0
Belum ada komentar — jadilah yang pertama memberikan masukan atau diskusi kode.
Masuk dengan akun GitHub untuk menulis komentar dan berdiskusi.