Logo OmniDevvKANA Web
Kembali ke katalog plugin

owner

dbstats

Statistik storage per namespace

Storage statistics per namespace

plugins/owner/dbstats.js

Lokasi file di repo kana-md

1

Perintah termasuk alias

1.5 KB

Ukuran file sumber

4/11/2026

Update terakhir, commit a0f6049

Daftar perintah

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

.dbstats

Cara pakai

.dbstats

Contoh

.dbstats

Kode sumber plugin

Unduh .js

Cara pasang: simpan file ini ke folder plugins/owner/ 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: 'dbstats',
  alias: [],
  category: 'owner',
  description: { id: 'Statistik storage per namespace', en: 'Storage statistics per namespace' },
  usage: '.dbstats',
  example: '.dbstats',
  cooldown: 5,
  isOwner: true,
}

export const i18n = {
  id: {
    dbstats: {
      header: 'Statistik Storage KANA\nDriver: {driver}\n{rows}\n{mood}',
      error: 'error',
      btnOwner: 'Status Bot',
      btnHealth: 'Scraper Health',
    },
  },
  en: {
    dbstats: {
      header: 'KANA Storage Statistics\nDriver: {driver}\n{rows}\n{mood}',
      error: 'error',
      btnOwner: 'Bot Status',
      btnHealth: 'Scraper Health',
    },
  },
}

const NAMESPACES = ['users', 'groups', 'settings', 'kv', 'scores', 'quiz']

export const test = { input: '.dbstats', expect: /storage/i }

export async function handler(ctx) {
  const rows = []
  for (const ns of NAMESPACES) {
    try {
      const keys = await ctx.storage.keys(ns)
      rows.push(`${ns}: ${keys.length}`)
    } catch {
      rows.push(`${ns}: ${ctx.t('dbstats.error')}`)
    }
  }
  const body = ctx.t('dbstats.header', {
    driver: ctx.storage.driver ?? 'unknown',
    rows: rows.join('\n'),
    mood: ctx.say('senang'),
  })
  return sendButtons(ctx.sock, ctx.chat, {
    title: 'KANA',
    body,
    footer: ctx.t('menu.footer'),
    replies: [
      { text: ctx.t('dbstats.btnOwner'), id: '.owner' },
      { text: ctx.t('dbstats.btnHealth'), id: '.scraperhealth' },
    ],
    textFallback: body,
  })
}