Logo OmniDevvKANA Web
Kembali ke katalog plugin

rpg

fishing

Memancing ikan, udang, kepiting, siapa tahu ikan legendaris

Fish for fish, shrimp, crabs, maybe a legendary fish

plugins/rpg/fishing.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.

.fishing.mancing

Cara pakai

.fishing

Contoh

.fishing

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: 'fishing',
  alias: ['mancing'],
  category: 'rpg',
  description: { id: 'Memancing ikan, udang, kepiting, siapa tahu ikan legendaris', en: 'Fish for fish, shrimp, crabs, maybe a legendary fish' },
  usage: '.fishing',
  example: '.fishing',
  cooldown: 60,
}

export const i18n = {
  id: {
    fishing: {
      ok: '🎣 Tarikk! Hasil pancingan kamu:\n{items}\nPlus {coins} koin~ 💰\n{mood}',
      failed: 'Yahh, ikannya kabur semua... umpannya dimakan tok, mouu 🥺',
      btnAgain: 'Mancing Lagi',
      btnInventory: 'Tas Aku',
      btnShop: 'Toko',
    },
  },
  en: {
    fishing: {
      ok: '🎣 Reel it in! Your catch:\n{items}\nPlus {coins} coins~ 💰\n{mood}',
      failed: 'Aww, all the fish escaped... they only ate the bait, mouu 🥺',
      btnAgain: 'Fish Again',
      btnInventory: 'My Bag',
      btnShop: 'Shop',
    },
  },
}

export const test = { input: '.fishing', expect: /pancingan|ikannya/i }

export async function handler(ctx) {
  const res = await gather(ctx.storage, ctx.senderDigits, 'fishing')
  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('fishing.failed')
    : ctx.t('fishing.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('fishing.btnAgain'), id: '.fishing' },
      { text: ctx.t('fishing.btnInventory'), id: '.inventory' },
      { text: ctx.t('fishing.btnShop'), id: '.shop' },
    ],
    textFallback: body,
  })
}