hansputera / nonton-otakudesu

Nontonin video otakudesu di telegram
Apache License 2.0
2 stars 0 forks source link

TODO #1

Open hansputera opened 1 year ago

hansputera commented 1 year ago

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)

- [x] Menambahkan button data caching (expiration time = 5 mins)
- [x] Menambahkan fitur query resolver (untuk resolve permintaan dengan username request)

Contohnya:

  1. @utekdesu_bot cari one piece
  2. @utekedesu_bot download https://otakudesu.lol/episode/...
    - [x] Membuat commands handler

    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>

- [x] Membuat table dalam database MySQL untuk menyimpan data file yang telah terdownload

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

hansputera commented 1 year ago

Priorities:

  1. command handler
  2. mysql table
  3. query resolver
  4. slash command
  5. button data caching
  6. editable message
hansputera commented 1 year ago

Lupa nambahin:

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

hansputera commented 1 year ago

Semua task yang terdaftar sudah terlaksana, hal yang perlu ditambahkan untuk User Experience:

  1. Video stream download progress tracker
  2. Video stream download mirror selection (seleksi mirror web stream video melalui button)
  3. Increase video stream download speed
  4. Add "help" or "menu" command to show available commands