Selamat datang di dokumentasi teknis untuk c77, sebuah bahasa pemrograman berbasis skrip yang dirancang untuk pembuatan bot interaktif dengan sintaks yang sederhana dan mudah dibaca.
Dokumen ini menjelaskan sintaks dasar, konfigurasi perintah, fungsi bawaan (API), dan struktur kontrol alur.
Label berfungsi sebagai penanda titik awal sebuah blok logika atau fungsi. Sistem akan melompat ke label ini ketika dipanggil oleh event handler atau perintah lompatan.
.nama_label.fungsi_logika
print "Logika dimulai di sini"
Komentar digunakan untuk memberikan catatan pada kode program. Bagian ini tidak akan dieksekusi oleh mesin.
; Ini adalah komentar baris penuh count = 0 ; Ini komentar di akhir baris
Pendefinisian variabel dilakukan secara dinamis (tanpa tipe data eksplisit).
nama = "User" skor = 100 pesan = "Halo " + nama
Bagian ini digunakan untuk memetakan perintah yang diketik pengguna (Trigger) ke Label logika yang sesuai.
Sintaks:
saat_perintah [trigger] lompat [label_tujuan]
Parameter:
trigger: Kata kunci perintah (contoh: /start).lompat: Kata kunci wajib (keyword).label_tujuan: Label yang akan dieksekusi saat trigger diterima.Contoh:
saat_perintah /start lompat .cmd_start saat_perintah /menu lompat .cmd_menu
Berikut adalah daftar fungsi yang tersedia, cara penggunaannya, dan argumen yang dibutuhkan.
Mengirim pesan teks ke pengguna.
target_id (Biasanya menggunakan variabel sistem chat_id).pesan (String atau Variabel).send chat_id "Halo, selamat datang!"
Mengirim file gambar disertai dengan teks keterangan (caption).
target_idpath_file (String, lokasi file gambar relatif terhadap bot_config).caption (String, teks keterangan).path = "qris.png" ; File harus ada di folder bot_config/qris.png desc = "Ini adalah menu kami" send_photo chat_id path desc
Mengirim file vidio disertai dengan teks keterangan (caption).
target_idpath_file (String, lokasi file gambar relatif terhadap bot_config).caption (String, teks keterangan).path = "tutorial.mp4" ; File harus ada di folder bot_config/tutorial.mp4 desc = "Ini adalah menu kami" kirim_vidio chat_id path desc
Mencetak log ke konsol server. Fungsi ini berguna untuk debugging dan tidak akan terlihat oleh pengguna bot.
teks (String/Variabel).print "User telah menekan tombol start"
Menunda eksekusi program selama beberapa milidetik (delay).
milidetik (Integer).sleep 1000 ; Menunggu selama 1 detik
Membaca isi file teks dari penyimpanan lokal dan menyimpannya ke dalam variabel.
path_file (String).konten = baca_file "catatan.txt" send chat_id konten
Menulis teks ke dalam file. Jika file tidak ada, akan dibuat. Jika ada, akan ditimpa/ditambah (tergantung implementasi sistem).
path_file (String).isi_konten (String/Variabel).data = "Log aktivitas baru" tulis_file "log.txt" data ; Akan tersimpan di bot_config/log.txt
Menambahkan baris inline keyboard pada bot.
label_button (String).baris_keyboard "/halo" "/start" "/sawer" ; Ini bakal jadi baris 1 baris_keyboard "/co gratis" "/cetak uang" ; Ini bakal jadi baris 2
Mengatur jalannya logika program, seperti percabangan dan pengulangan.
Memindahkan eksekusi program langsung ke label lain tanpa syarat.
lompat [label]lompat .menu_utamaMelakukan lompatan hanya jika kondisi terpenuhi.
jika [nilai_kiri] [operator] [nilai_kanan] lompat [label]count = 0 max = 5 .looping count = count + 1 jika count < max lompat .looping
Menghentikan eksekusi skrip pada baris tersebut. Wajib diletakkan di akhir setiap blok label agar kode tidak “bocor” (fall-through) ke label di bawahnya.
stopVariabel ini disediakan otomatis oleh sistem saat perintah dijalankan. Anda tidak perlu mendeklarasikannya secara manual.
| Nama Variabel | Tipe Data | Deskripsi |
|---|---|---|
| sender_name | String | Nama tampilan (display name) pengirim pesan. |
| chat_id | Int/String | ID unik pengguna atau grup tempat pesan dikirim. |
| user_id | Int | ID unik pengguna. |
| raw_text | String | Raw text pesan yang di kirim oleh user. |
| agrs | String | Argumen tambahan yang diketik user setelah perintah utama. |
Contoh Penggunaan agrs:
Jika pengguna mengetik: /echo halo dunia
Maka:
/echo“halo dunia”.cmd_echo
msg = "Anda mengetik: " + agrs
send chat_id msg
stop
Berikut adalah contoh implementasi kode yang bersih dan terstruktur untuk sistem “Support Ticket” sederhana. Perhatikan penggunaan komentar header, penamaan variabel yang jelas, dan pemisahan logika.
; ==================================================
; APLIKASI HELPDESK MINI
; Deskripsi: Menerima keluhan user dan menyimpannya
; ==================================================
; --- BAGIAN 1: KONFIGURASI HANDLER ---
saat_perintah /tiket lompat .handler_buat_tiket
saat_perintah /cek_db lompat .handler_baca_database
saat_perintah /reset lompat .handler_reset_data
; --- BAGIAN 2: LOGIKA PROGRAM ---
.handler_buat_tiket
; 1. Persiapan Data
; Menggabungkan nama pengirim dengan isi pesan (agrs)
log_entry = "Pengirim: " + sender_name
log_entry = log_entry + " | Keluhan: "
log_entry = log_entry + agrs
; 2. Simpan ke File (Persistent Storage)
; Data akan tersimpan di folder bot_config
tulis_file "database_tiket.txt" log_entry
; 3. Feedback ke User
reply = "Halo " + sender_name
reply = reply + ", tiket Anda berhasil kami simpan."
send chat_id reply
; 4. Log Internal
print "Tiket baru telah dibuat."
stop
.handler_baca_database
; Membaca seluruh isi file keluhan
isi_db = baca_file "bot_config/database_tiket.txt"
header = "=== DATA TIKET MASUK ==="
send chat_id header
send chat_id isi_db
stop
.handler_reset_data
; Mengosongkan file dengan menimpa string default
default_msg = "[DATABASE KOSONG]"
tulis_file "database_tiket.txt" default_msg
send chat_id "Database telah di-reset oleh Admin."
stop