Logo OmniDevvKANA Web
Kembali ke katalog plugin

maker

fakechat

Bikin kartu obrolan parodi (berlabel PARODI jelas)

Make a parody chat card (clearly labelled PARODY)

plugins/maker/fakechat.js

Lokasi file di repo kana-md

1

Perintah termasuk alias

2.2 KB

Ukuran file sumber

4/11/2026

Update terakhir, commit 7d56ace

Daftar perintah

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

.fakechat

Cara pakai

.fakechat <nama>|<pesan>

Contoh

.fakechat Budi|halo, apa kabar?

Kode sumber plugin

Unduh .js

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

import { textImage } from '../../src/services/text-image.js'
import { sendImage } from '../../src/ui/media.js'

export const config = {
  name: 'fakechat',
  alias: [],
  category: 'maker',
  description: { id: 'Bikin kartu obrolan parodi (berlabel PARODI jelas)', en: 'Make a parody chat card (clearly labelled PARODY)' },
  usage: '.fakechat <nama>|<pesan>',
  example: '.fakechat Budi|halo, apa kabar?',
  cooldown: 5,
  limit: 3,
}

export const i18n = {
  id: {
    fakechat: {
      needArgs: 'Formatnya: .fakechat <nama>|<pesan>, contoh: .fakechat Budi|halo~ Kartunya selalu berlabel PARODI yaa.',
      failed: 'Mouu, gagal bikin kartu obrolannya: {message}~',
      caption: 'Kartu obrolan PARODI, bukan chat asli yaa~',
      parody: 'PARODI',
      parodyNote: 'Ini kartu parodi buatan KANA, bukan tangkapan layar asli.',
    },
  },
  en: {
    fakechat: {
      needArgs: 'Format: .fakechat <name>|<message>, example: .fakechat Budi|hello~ The card is always labelled PARODY.',
      failed: 'Mouu, failed to make the chat card: {message}~',
      caption: 'A PARODY chat card, not a real chat~',
      parody: 'PARODI',
      parodyNote: 'This is a parody card made by KANA, not a real screenshot.',
    },
  },
}

export const test = { input: '.fakechat Budi|halo, apa kabar?', expect: /PARODI/i }

export async function handler(ctx) {
  const [nameRaw, ...msgParts] = ctx.text.split('|')
  const name = (nameRaw || '').trim()
  const message = msgParts.join('|').trim()
  if (!name || !message) return ctx.reply(ctx.t('fakechat.needArgs'))
  try {
    const png = await textImage({
      width: 512,
      height: 512,
      background: '0x0B141A',
      lines: [
        { text: ctx.t('fakechat.parody'), size: 48, color: 'red', bold: true, y: 28 },
        { text: name, size: 30, color: 'cyan', bold: true, y: 120 },
        { text: message, size: 28, color: 'white', y: 190 },
        { text: ctx.t('fakechat.parodyNote'), size: 18, color: 'gray', y: 440 },
        { text: ctx.t('fakechat.parody'), size: 30, color: 'red', bold: true, y: 472 },
      ],
    })
    await sendImage(ctx, png, { caption: ctx.t('fakechat.caption') })
  } catch (err) {
    return ctx.reply(ctx.t('fakechat.failed', { message: err.message }))
  }
}