Custom Discord community bot built with Python and
discord.py, designed for server management, automation, and engagement features for the home community.
Bot ini dikembangkan sebagai bot modular yang memisahkan fungsionalitas ke dalam beberapa cog dan fitur, sehingga lebih mudah dikelola, dikembangkan, dan diperluas.
- Tentang Proyek
- Fitur Utama
- Command yang Tersedia
- Struktur Proyek
- Teknologi yang Digunakan
- Instalasi
- Konfigurasi Environment
- Menjalankan Bot
- Penyimpanan Data
- Arsitektur Singkat
- Catatan Penting
Proyek ini berfungsi sebagai bot Discord all-in-one untuk komunitas home.. Fokus utamanya adalah membantu pengelola server dalam:
- mengelola komunitas dan channel,
- membuat proses otomatis yang mengurangi pekerjaan manual,
- menyediakan fitur interaksi publik seperti feed, feedback, ticket, dan profil masyarakat,
- menjaga UX anggota tetap ramah dan interaktif melalui slash command.
Nama bot yang dipakai di dalam code dan UI adalah yung. Entry point aplikasi berada di yung/app.py, sementara repository ini menggunakan package yung.
/ping— mengecek latency koneksi bot./infoserver— menampilkan informasi dasar server./infouser— menampilkan profil member Discord.
/autothread— menambahkan, menghapus, atau melihat daftar auto-thread di channel tertentu./auto-reminder— membuat pengingat berulang otomatis di channel atau thread tertentu dengan interval menit dan opsi mention role./setup-ai-chat— memilih channel khusus untuk percakapan otomatis dengan Gemini.- AI Chat menampilkan indikator mengetik selama diproses, lalu mengirim jawaban tanpa pesan placeholder atau edit; jawaban panjang otomatis dibagi agar sesuai batas pesan Discord.
/setup-feedback— menyiapkan panel feedback box untuk server.- Anggota dapat mengirim Saran, Kritik, atau Rating melalui modal ke channel khusus.
- Pengirim dapat mengedit masukan miliknya; postingan dilengkapi thread komentar dan reaksi.
/setup-feed— mengatur channel feed dan log feed./buat-postingan— memfasilitasi anggota untuk membuat postingan komunitas.- Mendukung kategori seperti
Berita & InformasidanUmum. - Dukungan media URL multi-link, upload gambar, reaksi like/dislike, serta komentar di thread.
- Deskripsi postingan ditampilkan sebagai kutipan; Like/Dislike menggunakan ikon dari aset di
yung/assets/feed/. - Pemilik postingan dapat mengedit atau menghapus postingannya; penghapusan juga membersihkan thread komentar jika bot memiliki izin.
- Bot membuat emoji server dari ikon Like/Dislike, sehingga memerlukan izin
Manage Emojis and Stickersdan slot emoji yang tersedia.
/setup-ticket— menyiapkan panel tiket dan konfigurasi channel log.- Kategori ticket seperti
Help,Lady Verification,Partnership,User Report, danBug Report. - Memungkinkan pembuatan tiket dari panel interaktif dan log terkait manajemen tiket.
/setup-mic— menyiapkan panel MIC.- Anggota dapat membuat, melihat, mengedit, dan menghapus MIC mereka.
- MIC dirender menjadi gambar PNG berbasis Pillow dan diposting ke channel yang dikonfigurasi.
- Setiap anggota dapat memiliki satu MIC per server.
/setup-moots— menyiapkan panel Moots.- Anggota dapat mengunggah link Instagram, TikTok, Facebook, X, dan WhatsApp Channel.
- Profil menampilkan tombol tautan media sosial; Edit, Hapus, dan Upload berada di baris kontrol terpisah.
- Profil dapat diedit atau dihapus oleh pemiliknya. Ikon tombol dibuat dari logo di
yung/assets/moots/. - Bot memerlukan izin
Manage Emojis and Stickersdan slot emoji server yang tersedia.
| Command | Kategori | Fungsi | Akses |
|---|---|---|---|
/bantuan |
Bantuan | Menampilkan panel bantuan interaktif | Semua pengguna |
/ping |
Utilitas | Menampilkan latency WebSocket bot | Semua pengguna |
/infoserver |
Utilitas | Menampilkan informasi server | Semua pengguna |
/infouser |
Utilitas | Menampilkan profil pengguna Discord | Semua pengguna |
/autothread |
Automasi | Menambah, menghapus, atau melihat Auto Thread | Manage Channels |
/auto-reminder |
Automasi | Mengatur reminder berulang | Manage Channels |
/setup-ai-chat |
Automasi | Mengatur channel percakapan AI Gemini | Manage Channels |
/setup-feedback |
Administrasi | Menyiapkan panel feedback box | Manage Channels |
/setup-ticket |
Administrasi | Menyiapkan panel ticket | Manage Channels |
/setup-feed |
Administrasi | Menyiapkan panel Home Feed dan channel log | Manage Server |
/buat-postingan |
Home Feed | Membuat postingan feed | Semua pengguna |
/setup-mic |
Administrasi | Menyiapkan panel Member Identity Card | Manage Server |
/setup-moots |
Administrasi | Menyiapkan panel Moots | Manage Channels |
Beberapa command menambahkan modal, select menu, dan button UI. Bot juga memerlukan permission yang sesuai untuk mengirim embed, membuat thread, mengelola pesan, dan memproses attachment.
.
├── README.md
├── requirements.txt
├── .env.example
├── yung/
│ ├── app.py
│ ├── assets/
│ │ ├── feed/
│ │ │ ├── like_brawl_stars.png
│ │ │ └── dislike_brawl_stars.png
│ │ ├── fonts/
│ │ │ └── font files for MIC rendering
│ │ └── moots/
│ │ ├── Instagram.png
│ │ ├── tiktok.png
│ │ ├── facebook.png
│ │ ├── x.png
│ │ └── whatsapp.png
│ └── bot/
│ ├── __init__.py
│ ├── loader.py
│ ├── store.py
│ └── commands/
│ ├── bantuan.py
│ ├── utilitas/
│ │ ├── ping.py
│ │ ├── infoserver.py
│ │ ├── infouser.py
│ │ └── common.py
│ └── automasi/
│ ├── common.py
│ ├── autothread/
│ │ ├── autothread.py
│ │ └── data/
│ ├── auto_reminder/
│ │ ├── auto_reminder.py
│ │ └── data/
│ ├── feedback/
│ │ ├── feedback.py
│ │ └── data/
│ ├── feed/
│ │ ├── feed.py
│ │ └── data/
│ ├── ticket/
│ │ ├── ticket.py
│ │ └── data/
│ ├── mic/
│ │ ├── mic.py
│ │ └── data/
│ ├── moots/
│ │ ├── moots.py
│ │ └── data/
│ └── ai_chat/
│ ├── ai-chat.py
│ └── data/
Penjelasan singkat:
yung/app.pyadalah entry point utama bot.yung/bot/loader.pymemuat semua extension/cog.yung/bot/store.pyadalah helper baca/tulis file JSON untuk data fitur lokal.- Setiap fitur memiliki folder sendiri beserta data JSON dan fungsionalitas yang terikat.
- Python 3
discord.py— library utama untuk Discord API dan command frameworkpython-dotenv— membaca variabel environment dari.envPillow— merender gambar MIC dan mengolah aset emoji untuk Feed dan Mootsgoogle-genai— menghubungkan AI Chat ke Gemini Interactions API
Versi utama proyek saat ini:
discord.py>=2.6,<3.0
python-dotenv>=1.0,<2.0
Pillow>=11.0
google-genai>=2.29.0git clone https://github.com/zikssu/discord-bot-yung.git
cd discord-bot-yungpython3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt.venv/bin/python yung/app.pyBuat file .env di root project dengan isi berikut:
DISCORD_TOKEN=TOKEN_BOT_DISCORD_KAMU
DISCORD_GUILD_ID=ID_SERVER_DISCORD_OPTIONAL
GEMINI_API_KEY=API_KEY_GEMINI_KAMU
BOT_OWNER_ID=DISCORD_USER_ID_OWNERDISCORD_TOKEN— token bot Discord dari developer portal.DISCORD_GUILD_ID— ID server target untuk sync command ke guild spesifik. Jika tidak diisi, bot akan melakukan sync global.GEMINI_API_KEY— API key Gemini yang digunakan oleh fitur AI Chat.BOT_OWNER_ID— Discord User ID Owner yang diizinkan menggunakan command dan fitur otomatis bot. Variabel ini wajib diisi.
Penting: bot harus diundang ke server dengan permission yang sesuai serta scope
botdanapplications.commands.
Contoh permission yang umum diperlukan:
- View Channels
- Send Messages
- Manage Channels
- Manage Server
- Create Public Threads
- Send Messages in Threads
- Read Message History
- Embed Links
- Attach Files
- Mention Everyone
- Manage Emojis and Stickers (untuk ikon tombol Feed dan Moots)
Jalankan dari root repository menggunakan Python dari virtual environment
agar dependency seperti discord.py ditemukan:
.venv/bin/python yung/app.pyJika terminal sedang berada di folder yung:
../.venv/bin/python app.pySaat bot berhasil terhubung, terminal akan menampilkan indikator bahwa bot sudah online.
Bot ini menggunakan penyimpanan lokal berbasis file JSON, bukan database eksternal. Data fitur disimpan di subfolder masing-masing fitur, misalnya:
yung/bot/commands/automasi/autothread/data/autothread.jsonyung/bot/commands/automasi/auto_reminder/data/auto_reminders.jsonyung/bot/commands/automasi/feed/data/feed_posts.jsonyung/bot/commands/automasi/feed/data/feed_settings.jsonyung/bot/commands/automasi/feedback/data/feedback.jsonyung/bot/commands/automasi/mic/data/mic.jsonyung/bot/commands/automasi/mic/data/mic_settings.jsonyung/bot/commands/automasi/moots/data/moots_settings.jsonyung/bot/commands/automasi/moots/data/moots.jsonyung/bot/commands/automasi/ai_chat/data/ai_chat_settings.jsonyung/bot/commands/automasi/ticket/data/tickets.json
Karena data tersimpan secara lokal, backup reguler sangat disarankan jika server digunakan dalam skala produksi.
Bot menggunakan pendekatan modular dengan extension per fitur:
app.pymemulai bot dan memanggil loader.loader.pymemuat semua extension.- Setiap fitur diorganisasi dalam folder independen.
- Semua logika interaksi UI (button/select/modal) berada di file fitur terkait.
- Data diakses melalui
bot/store.pyagar proses baca/tulis JSON konsisten.
Gambaran umum alur kerja:
Discord Interaction
↓
Bot / Slash Command
↓
Cog / Feature Module
↓
JSON Storage / Discord API
- Bot ini dibuat untuk kebutuhan komunitas
home.dan masih dalam pengembangan modular. - Banyak fitur mengandalkan
discord.uidan modal input, sehingga perlu diperhatikan struktur UI agar tetap kompatibel dengandiscord.pyversi yang dipakai. - Jika bot tidak bisa menjalankan command tertentu, cek:
- token valid,
- bot sudah masuk server,
- permission channel dan role benar,
- file
.envsudah dibuat.
- Untuk fitur MIC, font yang dibutuhkan berada di
yung/assets/fonts/. - Pastikan file data JSON dapat ditulis oleh user/process yang menjalankan bot.
Bot ini merupakan solusi Discord komunitas yang menekankan otomatisasi, manajemen publikasi, feedback, ticket, dan dukungan interaksi sosial yang modern. Dengan struktur modular dan basis data lokal JSON, bot ini cocok untuk server komunitas yang ingin punya sistem serbaguna tanpa kebutuhan database server tambahan.
Proyek ini tersedia untuk kebutuhan internal komunitas dan pengembangan lebih lanjut. Untuk detail lisensi, lihat file LICENSE di root repository.