Logo OmniDevvKANA Web
Kembali ke katalog plugin

search

kbbi

Cari arti kata di KBBI

Look up a word definition in KBBI

plugins/search/kbbi.js

Lokasi file di repo kana-md

1

Perintah termasuk alias

1.8 KB

Ukuran file sumber

4/11/2026

Update terakhir, commit 5e7e0e7

Daftar perintah

Ketuk tombol salin untuk menyalin perintah, lalu tempel di chat WhatsApp bot KANA.

.kbbi

Cara pakai

.kbbi <kata>

Contoh

.kbbi cinta

Kode sumber plugin

Unduh .js

Cara pasang: simpan file ini ke folder plugins/search/ di bot KANA kamu, lalu restart bot. Pemilik source code lain bisa mengambil update plugin terbaru dari halaman ini kapan saja.

import { searchKbbi } from '../../src/scrapers/search/kbbi.js'

export const config = {
  name: 'kbbi',
  alias: [],
  category: 'search',
  description: { id: 'Cari arti kata di KBBI', en: 'Look up a word definition in KBBI' },
  usage: '.kbbi <kata>',
  example: '.kbbi cinta',
  cooldown: 8,
  limit: 5,
}

export const i18n = {
  id: {
    kbbi: {
      needWord: 'Ketik katanya dulu yaa, contoh: .kbbi cinta~',
      notFound: 'Mouu, kata "{word}" nggak ketemu di KBBI, atau halamannya berubah format. Coba kata dasar lain ya~',
      failed: 'Mouu, KBBI lagi nggak bisa dijangkau: {message}. Situsnya memang sering berat, coba lagi nanti ya~',
      header: 'Arti kata "{word}" menurut KBBI:',
      item: '{n}. {definition}',
    },
  },
  en: {
    kbbi: {
      needWord: 'Type the word first, example: .kbbi cinta~',
      notFound: 'Mouu, the word "{word}" was not found in KBBI, or its page format changed. Try another base word~',
      failed: 'Mouu, KBBI cannot be reached right now: {message}. The site is often slow, try again later~',
      header: 'Meaning of "{word}" according to KBBI:',
      item: '{n}. {definition}',
    },
  },
}

export const test = { input: '.kbbi cinta', expect: /Arti kata/i }

export async function handler(ctx) {
  const word = ctx.args[0]
  if (!word) return ctx.reply(ctx.t('kbbi.needWord'))
  let result
  try {
    result = await searchKbbi(word)
  } catch (err) {
    return ctx.reply(ctx.t('kbbi.failed', { message: err.message }))
  }
  if (!result.definitions.length) return ctx.reply(ctx.t('kbbi.notFound', { word: result.word }))
  const lines = [ctx.t('kbbi.header', { word: result.word })]
  result.definitions.forEach((definition, i) => {
    lines.push(ctx.t('kbbi.item', { n: i + 1, definition }))
  })
  await ctx.reply(lines.join('\n'))
}