Logo OmniDevvKANA Web
Kembali ke katalog plugin

fun

artinama

Baca arti nama versi seru-seruan dari KANA

Read the fun version of a name meaning from KANA

plugins/fun/artinama.js

Lokasi file di repo kana-md

1

Perintah termasuk alias

2.9 KB

Ukuran file sumber

4/11/2026

Update terakhir, commit 44f4010

Daftar perintah

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

.artinama

Cara pakai

.artinama <nama>

Contoh

.artinama Kana

Kode sumber plugin

Unduh .js

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

import { sendButtons } from '../../src/ui/buttons.js'

export const config = {
  name: 'artinama',
  alias: [],
  category: 'fun',
  description: { id: 'Baca arti nama versi seru-seruan dari KANA', en: 'Read the fun version of a name meaning from KANA' },
  usage: '.artinama <nama>',
  example: '.artinama Kana',
  cooldown: 3,
}

// Hash deterministik kecil (duplikasi disengaja, sama seperti di cekmood,
// supaya plugin tetap mandiri satu file).
export function hashPercent(seed) {
  let h = 0
  const s = String(seed ?? '')
  for (let i = 0; i < s.length; i++) h = (h * 31 + s.charCodeAt(i)) >>> 0
  return h % 101
}

export const i18n = {
  id: {
    artinama: {
      usage: 'Tulis namanya dulu yaa, contoh: .artinama Kana~',
      title: 'Arti Nama 🔤',
      result: 'Nama "{name}" versi KANA artinya: pembawa {trait1}, penjaga {trait2}, dan penebar {trait3}!\n\n{disclaimer}',
      disclaimer: 'Ini arti nama versi hiburan buatan KANA yaa, bukan arti bahasa resmi. Yang penting orangnya baik~ (≧▽≦)',
      btnAgain: 'Nama Lain',
      btnMenu: 'Menu Fun',
      traits: [
        'semangat pagi',
        'tawa renyah',
        'ide-ide liar',
        'ketenangan',
        'keberanian kecil',
        'cerita seru',
        'harapan baru',
        'energi positif',
        'kejutan manis',
        'mimpi besar',
        'kehangatan',
        'rasa penasaran',
      ],
    },
  },
  en: {
    artinama: {
      usage: 'Write a name first, example: .artinama Kana~',
      title: 'Name Meaning 🔤',
      result: 'The name "{name}", KANA version, means: bringer of {trait1}, keeper of {trait2}, and spreader of {trait3}!\n\n{disclaimer}',
      disclaimer: 'This is a fun name meaning made by KANA, not an official language meaning. What matters is the person is kind~ (≧▽≦)',
      btnAgain: 'Another Name',
      btnMenu: 'Fun Menu',
      traits: [
        'morning spirit',
        'bright laughter',
        'wild ideas',
        'calmness',
        'small bravery',
        'fun stories',
        'new hope',
        'positive energy',
        'sweet surprises',
        'big dreams',
        'warmth',
        'curiosity',
      ],
    },
  },
}

export const test = { input: '.artinama Kana', expect: /artinya/i }

export async function handler(ctx) {
  const name = ctx.text.trim()
  if (!name) return ctx.reply(ctx.t('artinama.usage'))
  const pool = i18n[ctx.lang]?.artinama?.traits ?? i18n.id.artinama.traits
  const base = hashPercent(name.toLowerCase())
  const pick = (offset) => pool[(base + offset * 5) % pool.length]
  const body = ctx.t('artinama.result', {
    name,
    trait1: pick(0),
    trait2: pick(1),
    trait3: pick(2),
    disclaimer: ctx.t('artinama.disclaimer'),
  })
  return sendButtons(ctx.sock, ctx.chat, {
    title: ctx.t('artinama.title'),
    body,
    footer: ctx.t('menu.footer'),
    replies: [
      { text: ctx.t('artinama.btnAgain'), id: '.artinama Kana' },
    ],
    textFallback: body,
  })
}