Skip to content

MaouDabi0/Dabi-Ai-Documentation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

93 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dokumentasi Sistem Plugins Dabi-Ai

🅒 Code Source

iTasks

Panduan lengkap

Berikut adalah panduan lengkap untuk membuat plugin dengan sistem plugin saya pada bot WhatsApp yang menggunakan Whiskeysockets/baileys.

🔎 Apa itu Whiskeysockets/baileys

Whiskeysockets atau baileys adalah library Node.js, berbasis TypeScript yang di gunakan untuk berkomunikasi dengan Web Api WhatsApp.

Struktur Plugins

Setiap plugin memiliki struktur dasar sebagai berikut:

const fs = require('fs');
const path = require('path');

module.exports = {
  name: 'Nama Plugin',
  command: ['command1', 'command2'],
  tags: 'Kategori Plugin',
  desc: 'Deskripsi Singkat Plugin',

  // mode Owner dan Premium true/false
  isOwner: false || true,
  isPremium: false || true,

  run: async (conn, message, {
    chatInfo,
    prefix,
    commandText,
    args,
    textMessage
  }) => {
    try {
      const { chatId, senderId, isGroup } = chatInfo;

      // Fungsi penanganan hanya owner 
      if (!(await onlyOwner(module.exports, conn, message))) return;

      // Fungsi penanganan untuk pengguna premium 
      if (!(await onlyPremium(module.exports, conn, message))) return;

      // Fungsi tag pengguna 
      let targetId = target(message, senderId);
      const mentionTarget = targetId;

      // Eksekusi logika plugin di sini
      await conn.sendMessage(chatId, {
        text: '✅ Plugin Berjalan!',
        mentions: [`${targetId}@s.whatsapp.net`]
      }, { quoted: message });

    } catch (error) {
      console.error('Error:', error);
      conn.sendMessage(message.key.remoteJid, {
        text: `Error: ${error.message || error}`,
        quoted: message,
      });
    }
  }
};

Parameter Fungsi run

  • conn --> Objek utama dari Baileys untuk mengirim pesan.
  • message --> Data pesan yang diterima oleh bot.

Contoh Penggunaan

Berikut adalah contoh implementasi untuk plugin menu.js yang memiliki fungsi sebagai tampilan menu:

  1. Import module
const fs = require('fs');
const path = require('path');
  • Menggunakan @whiskeysockets/baileys untuk pengiriman pesan.
  • Menggunakan config.json sebagai sumber data seperti nama bot, owner, dll.
  1. Properti Plugin
module.exports = {
  name: 'menu',
  command: ['menu'],
  tags: 'Info Menu',
  desc: 'Deskripsi menu',

  isOwner: true,
  isPremium: false,

  run: async (conn, message, {
    chatInfo,
    prefix,
    commandText,
    args
  }) => { ... }
};

Penjelasan Property Plugins

  • name --> Nama unik plugin yang digunakan untuk identifikasi.
  • command --> Array berisi daftar command yang dapat digunakan untuk memanggil plugin.
  • tags --> Kategori untuk pengelompokan plugin pada menu bot.
  • desc --> Deskripsi singkat mengenai fungsi plugin.
  • isOwner --> Fungsi untuk menangani hanya owner.
  • isPremium --> Fungsi untuk menangani pengguna Premium.
  • run --> Fungsi utama yang dijalankan saat plugin dipanggil.
  1. Ekstraksi Data Pesan
  run: async (conn, message, {
    chatInfo,
    prefix,
    commandText,
    textMessage,
    args
  }) => { ... }
  • chatId --> ID chat, dapat berupa personal atau grup.
  • prefix --> Array yang berisi semua prefix yang didukung.
  • isGroup --> Mengecek apakah pesan berasal dari grup.
  • senderId --> ID pengirim pesan.
  • textMessage --> Teks yang dikirim oleh pengguna.
  • commandText --> Mengambil perintah setelah prefix.

Nilai nya di ambil dari

  • message.message?.conversation Untuk penanganan pesan teks biasa
  • message.message?.extendedTextMessage?.text untuk pesan yang merupakan reply atau mengutip pesan lain.
  • Jika tidak ditemukan teks, maka nilainya adalah string kosong (' ').

Untuk pesan tipe media

biasanya tidak memiliki conversation atau extendedTextMessage.text. Formatnya tergantung jenis media.

contoh:

  • message.message?.imageMessage
  • message.message?.videoMessage
  • message.message?.audioMessage
  • message.message?.documentMessage
  • message.message?.stickerMessage

Pesan media dapat dikenali dari adanya properti tersebut.

Jika kamu ingin menangani media, kamu bisa melakukan pengecekan seperti ini:

const isMedia = !!(
  message.message?.imageMessage ||
  message.message?.videoMessage ||
  message.message?.audioMessage ||
  message.message?.documentMessage ||
  message.message?.stickerMessage
);

isMedia --> Menentukan apakah pesan tersebut berisi media (gambar, video, audio, dokumen, atau stiker).

  1. Tips pengembangan
  • gunakan conn.sendMessage untuk mengirim pesan.
  • Gunakan quoted: message jika ingin membalas langsung ke pesan pengguna.
  • Pastikan semua error ditangani dengan baik menggunakan try-catch

Cara Menambahkan Plugin Baru

  1. Buat file baru di folder yang sesuai (misalnya plugins/Menu_Info/menu.js).
  2. Pastikan struktur seperti contoh di atas.
  3. Sesuaikan name, command, tags, dan run.
  4. Jika ingin menambahkan fungsi tambahan, buat fungsi baru di dalam file yang sama.

Request & Fix

laporkan Bug ke sini

About

Documentation from Dabi-Ai

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •