Open hansputera opened 1 year ago
Priorities:
Lupa nambahin:
Karena di [@structures/Message.ts] udah dipisah command namenya jadi,
kita sisa ambil aja sisanya sebagai array.
Contoh:
pure text: "/cari boruto --minimalist" preprocess: "boruto --minimalist"
Data diatas udah ada untuk saat ini, jadi sisa di proses lagi aja menjadi flags, dan args. Contoh flags (--minimalist, --red, --green, --blue)
Flags, dan args ini juga akan saling berkaitan, karena dalam args juga ada tipe option.
Option itu berupa seperti ini bentuknya (--key=value), sehingga dapatnya juga harus dari flags, dan dimasukan ke dalam args -> { name: key, value: value }
Kalau args sendiri, nanti juga ada parsing untuk tipe arg, misal integer, maka value yang akan diberikan kepada Command juga hasil value dari argnya adalah number
Semua task yang terdaftar sudah terlaksana, hal yang perlu ditambahkan untuk User Experience:
Todo List
(setelah 5 detik atau beberapa lamanya)
User (edit pesan): /cari One Piece (pesan A) Bot (edit pesan): "One Piece (...)" (pesan B)
Maksud disini ialah bot mampu menggunakan kembali pesan yang berlalu apabila user mengedit pesan sebelumnya juga. Untuk expiration time disini maksimal adalah 1 menit untuk mengurangi memory usage. (I'll use file caching in next time)
Contohnya:
Command Handler File Schema:
Arg# -> Object Arg#name -> String Arg#type -> Union(Option, Arg) Arg#required -> Boolean
Command# -> Class Command#name -> String Command#aliases -> Array
Command#args -> Array
Command#flags -> Array
Command#handle -> AsyncFunction(m -> [@structures/Message.js:MessageEvent]): void
[@frameworks/GramJs.ts]
TelegramFramework# TelegramFramework#(...) TelegramFramework#commands -> KeyValue<@Key -> string, @Value -> Command>
Table
files
schema:id -> INT INCREMENT NOT NULL file_id -> UNSIGNED BIGINT NOT NULL chat_id -> UNSIGNED INT NOT NULL created_at -> DATETIME NOT NULL updated_at -> DATETIME NOT NULL