Logo OmniDevvKANA Web
Kembali ke katalog plugin

rpg

mining

Menambang batu, besi, emas, sampai berlian

Mine stone, iron, gold, up to diamonds

plugins/rpg/mining.js

Lokasi file di repo kana-md

2

Perintah termasuk alias

1.9 KB

Ukuran file sumber

4/11/2026

Update terakhir, commit eae5127

Daftar perintah

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

.mining.tambang

Cara pakai

.mining

Contoh

.mining

Kode sumber plugin

Unduh .js

Cara pasang: simpan file ini ke folder plugins/rpg/ 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'
import { gather } from '../../src/rpg/engine.js'
import { ITEM_MAP } from '../../src/rpg/data.js'

export const config = {
  name: 'mining',
  alias: ['tambang'],
  category: 'rpg',
  description: { id: 'Menambang batu, besi, emas, sampai berlian', en: 'Mine stone, iron, gold, up to diamonds' },
  usage: '.mining',
  example: '.mining',
  cooldown: 60,
}

export const i18n = {
  id: {
    mining: {
      ok: '⛏️ Clang clang! Hasil tambang kamu:\n{items}\nPlus {coins} koin~ 💰\n{mood}',
      failed: 'Mouu, beliungnya mental dan nggak dapet apa apa kali ini... coba lagi yaa 🥺',
      btnAgain: 'Tambang Lagi',
      btnInventory: 'Tas Aku',
      btnShop: 'Toko',
    },
  },
  en: {
    mining: {
      ok: '⛏️ Clang clang! Your mining haul:\n{items}\nPlus {coins} coins~ 💰\n{mood}',
      failed: 'Mouu, the pickaxe bounced off and you got nothing this time... try again 🥺',
      btnAgain: 'Mine Again',
      btnInventory: 'My Bag',
      btnShop: 'Shop',
    },
  },
}

export const test = { input: '.mining', expect: /tambang|beliung/i }

export async function handler(ctx) {
  const res = await gather(ctx.storage, ctx.senderDigits, 'mining')
  const items = res.items
    .map(({ id, qty }) => {
      const item = ITEM_MAP[id]
      return `${item?.emoji ?? '❔'} ${item ? item.name[ctx.lang] ?? item.name.id : id} x${qty}`
    })
    .join('\n')
  const body = res.failed
    ? ctx.t('mining.failed')
    : ctx.t('mining.ok', { items, coins: res.coins, mood: ctx.say('senang') })
  return sendButtons(ctx.sock, ctx.chat, {
    title: 'KANA RPG',
    body,
    footer: ctx.t('menu.footer'),
    replies: [
      { text: ctx.t('mining.btnAgain'), id: '.mining' },
      { text: ctx.t('mining.btnInventory'), id: '.inventory' },
      { text: ctx.t('mining.btnShop'), id: '.shop' },
    ],
    textFallback: body,
  })
}