Logo OmniDevvKANA Web
Kembali ke katalog plugin

owner

stopjadibot

Hentikan sesi jadibot (khusus owner)

Stop a jadibot session (owner only)

plugins/owner/stopjadibot.js

Lokasi file di repo kana-md

2

Perintah termasuk alias

3.6 KB

Ukuran file sumber

4/11/2026

Update terakhir, commit 11aee2b

Daftar perintah

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

.stopjadibot.stopbot

Cara pakai

.stopjadibot [nama]

Contoh

.stopjadibot kana2

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'
import { getJadibotManager, listJadibotSessions } from '../../src/services/jadibot.js'

export const config = {
  name: 'stopjadibot',
  alias: ['stopbot'],
  category: 'owner',
  description: { id: 'Hentikan sesi jadibot (khusus owner)', en: 'Stop a jadibot session (owner only)' },
  usage: '.stopjadibot [nama]',
  example: '.stopjadibot kana2',
  cooldown: 3,
  isOwner: true,
}

export const i18n = {
  id: {
    stopjadibot: {
      noSessions: 'Belum ada sesi jadibot yang aktif kok, Master~ Slotnya masih kosong semua ✨',
      listHeader: 'Sesi jadibot yang lagi aktif nih, Master:\n{sessions}\nPencet tombolnya buat stop sesi yang dipilih yaa~',
      sessionLine: '{index}. {name} : {number} (sejak {startedAt})',
      stopped: 'Beres, Master~ Sesi jadibot "{name}" udah KANA stop. Sampai ketemu lagi yaa sesi kecil~ {mood}',
      notFound: 'Hmm, sesi jadibot bernama "{name}" nggak ketemu, Master. Cek daftarnya pakai .stopjadibot tanpa nama yaa~',
      failed: 'Mouu, gagal menghentikan sesinya, Master: {message} (╥﹏╥)',
      btnStop: 'Stop {name}',
      btnList: 'Daftar Bot',
    },
  },
  en: {
    stopjadibot: {
      noSessions: 'No jadibot session is active yet, Master~ All slots are still empty ✨',
      stopped: 'Done, Master~ Jadibot session "{name}" has been stopped by KANA. See you again, little session~ {mood}',
      listHeader: 'Active jadibot sessions, Master:\n{sessions}\nTap a button to stop the chosen session~',
      sessionLine: '{index}. {name} : {number} (since {startedAt})',
      notFound: 'Hmm, no jadibot session named "{name}", Master. Check the list with .stopjadibot without a name~',
      failed: 'Mouu, failed to stop the session, Master: {message} (╥﹏╥)',
      btnStop: 'Stop {name}',
      btnList: 'Bot List',
    },
  },
}

export const test = { input: '.stopjadibot', expect: /jadibot|sesi/i }

export async function handler(ctx) {
  const name = (ctx.args[0] || '').trim()
  const sessions = listJadibotSessions()

  if (!name) {
    if (!sessions.length) {
      const body = ctx.t('stopjadibot.noSessions')
      return sendButtons(ctx.sock, ctx.chat, {
        title: process.env.BOT_NAME || 'KANA',
        body,
        footer: ctx.t('menu.footer'),
        replies: [{ text: ctx.t('stopjadibot.btnList'), id: '.listbot' }],
        textFallback: body,
      })
    }
    const lines = sessions.map((s, i) =>
      ctx.t('stopjadibot.sessionLine', { index: i + 1, name: s.name, number: s.number, startedAt: s.startedAt || '-' })
    )
    const body = ctx.t('stopjadibot.listHeader', { sessions: lines.join('\n') })
    return sendButtons(ctx.sock, ctx.chat, {
      title: process.env.BOT_NAME || 'KANA',
      body,
      footer: ctx.t('menu.footer'),
      replies: sessions
        .slice(0, 10)
        .map((s) => ({ text: ctx.t('stopjadibot.btnStop', { name: s.name }), id: `.stopjadibot ${s.name}` })),
      textFallback: body,
    })
  }

  const manager = getJadibotManager()
  if (!manager) return ctx.reply(ctx.t('stopjadibot.notFound', { name }))
  let stopped
  try {
    stopped = await manager.stop(name)
  } catch (err) {
    return ctx.reply(ctx.t('stopjadibot.failed', { message: err.message }))
  }
  if (!stopped) return ctx.reply(ctx.t('stopjadibot.notFound', { name }))
  const body = ctx.t('stopjadibot.stopped', { name, mood: ctx.say('pamit') })
  return sendButtons(ctx.sock, ctx.chat, {
    title: process.env.BOT_NAME || 'KANA',
    body,
    footer: ctx.t('menu.footer'),
    replies: [{ text: ctx.t('stopjadibot.btnList'), id: '.listbot' }],
    textFallback: body,
  })
}