Kembali ke Beranda
Gistify Snippet
kyiov
Feb 22·1 file(s)
Public

Uploaded by Joy MD - Bot | 22/2/2026, 10.53.04

synced from github gist Search Anime Chara

#api
Search Anime Charaplaintext
82 baris
1/*
2 * ───────────────────────────
3 * 🟢 JOY MD - SOURCE CODE
4 * ───────────────────────────
5 * 👤 Channel : https://shorturl.at/ce5eX
6 * 📅 Fetched : 22/2/2026, 10.51.42
7 * 📂 File : character.js
8 * ───────────────────────────
9 */
10
11/**
12 * @module plugins/search/character
13 * @description Character Search using Jikan API v4 (Stable & Official MAL Data)
14 */
15
16import axios from 'axios'
17
18// Helper to Force HD Image (Remove MAL Resize params)
19const getHDImage = (url) => {
20 if (!url) return null;
21 return url.replace(/\/r\/\d+x\d+/, '').split('?')[0];
22}
23
24let handler = async (m, { conn, text, usedPrefix, command }) => {
25 if (!text) return m.reply(`🔍 Siapa nama karakter animenya?\nContoh: *${usedPrefix + command}* Yui Hirasawa`)
26
27 await m.react('⏳')
28
29 try {
30 const { data } = await axios.get(`https://api.jikan.moe/v4/characters?q=${encodeURIComponent(text)}&limit=1`)
31
32 if (!data.data || data.data.length === 0) {
33 return m.reply('❌ Karakter tidak ditemukan.')
34 }
35
36 const char = data.data[0]
37 const name = char.name
38 const nameKanji = char.name_kanji || '-'
39 const url = char.url
40
41 // Priority: Large -> Normal -> Helper cleanup
42 let imgRaw = char.images?.jpg?.large_image_url || char.images?.jpg?.image_url
43 const img = getHDImage(imgRaw)
44
45 let about = char.about || 'No description available.'
46
47 // Basic Cleanup
48 about = about.replace(/\\n/g, '\n')
49
50 let caption = `◈ *CHARACTER PROFILE* ◈\n`
51 caption += `──────────────────\n\n`
52 caption += `◇ *Name* : ${name}\n`
53 caption += `◇ *Kanji* : ${nameKanji}\n`
54 if (char.nicknames && char.nicknames.length > 0) {
55 caption += `◇ *Nick* : ${char.nicknames.slice(0, 3).join(', ')}\n`
56 }
57 caption += `➜ *Link* : ${url}\n\n`
58 caption += `──────────────────\n`
59 caption += `⬡ *ABOUT* \n\n`
60
61 const limit = 800
62 caption += about.length > limit ? about.substring(0, limit) + '...' : about
63
64 await conn.sendMessage(m.chat, {
65 image: { url: img },
66 caption: caption
67 }, { quoted: m })
68
69 await m.react('✅')
70
71 } catch (e) {
72 console.error('Jikan API Error:', e.message)
73 m.reply('❌ Gagal mengambil data (API Error).')
74 }
75}
76
77handler.help = ['char <name>']
78handler.tags = ['search', 'anime']
79handler.command = ['char', 'character', 'charai']
80handler.prefix = true
81
82export default handler
Diskusi & Komentar0

Belum ada komentar — jadilah yang pertama memberikan masukan atau diskusi kode.

Masuk dengan akun GitHub untuk menulis komentar dan berdiskusi.