# Flow Recovery Jika Akun Telegram Terbanned

Dokumen ini menjelaskan batasan, solusi, dan flow pencegahan jika akun Telegram owner terbanned, channel hilang, atau harus pindah ke akun/channel baru.

## Kesimpulan Utama

Jika akun Telegram owner terbanned lalu channel hilang/dihapus, member channel tidak bisa otomatis dikembalikan ke channel baru.

Telegram Bot API tidak menyediakan fitur untuk mengambil seluruh daftar subscriber/member channel asli. Bot hanya bisa membaca total member, bukan daftar lengkap user ID subscriber channel.

Member hanya bisa dipanggil kembali jika bot sudah menyimpan data mereka sebelumnya, terutama `user_id`.

## Data Yang Bisa Dipulihkan

- User yang pernah `/start` bot.
- User yang pernah beli lewat flow bot.
- User yang tersimpan di database `bot.db`.
- User yang punya data `user_id` di tabel internal bot.
- User yang belum memblokir bot.
- User yang masih bisa menerima pesan dari bot.

## Data Yang Tidak Bisa Dipulihkan Otomatis

- Member yang join manual tanpa lewat bot.
- Member yang belum pernah `/start` bot.
- Subscriber channel yang tidak pernah tercatat di database bot.
- User yang sudah memblokir bot.
- User yang akun Telegram-nya sudah tidak aktif.
- Daftar subscriber asli channel jika channel lama sudah hilang.

## Penyebab Data Member Bisa Berbeda

Contoh: channel asli memiliki 231 member, tapi data bot hanya 163 user.

Kemungkinan penyebab:

- 163 adalah user yang tercatat lewat flow bot, bukan total subscriber Telegram.
- Sebagian member join manual dari link lain.
- Sebagian member join sebelum bot mencatat data.
- Sebagian member masuk lewat invite non-bot.
- Sebagian subscriber tidak pernah `/start` bot.
- Bot hanya bisa broadcast ke user yang pernah membuka bot.

## Prinsip Pencegahan

Database bot harus menjadi sumber utama data member, bukan hanya subscriber list Telegram.

Data minimal yang harus disimpan:

- `user_id`
- `username`
- `first_name`
- paket/channel yang dibeli
- `chat_id` channel tujuan
- status akses aktif
- tanggal join/beli
- link invite yang diberikan
- status recovery jika pernah dilakukan

## Flow Normal

1. User wajib `/start` bot sebelum melakukan pembelian.
2. User memilih paket/channel.
3. Setelah pembayaran di-approve, bot menyimpan data user ke database.
4. Bot membuat atau mengirim invite link channel.
5. Bot menyimpan data akses user di `member_links`.
6. User masuk ke channel lewat link dari bot.
7. Data user menjadi database member resmi milik bot.

## Flow Backup Rutin

1. Backup `bot.db` secara rutin, minimal harian.
2. Simpan backup di luar server utama.
3. Export daftar user aktif per channel secara berkala.
4. Simpan daftar `user_id` aktif per paket/channel.
5. Pastikan minimal ada 1 akun Telegram cadangan sebagai admin channel.
6. Pastikan bot tetap menjadi admin di semua channel penting.
7. Simpan data channel penting seperti `chat_id`, username, dan link.

## Prasyarat Wajib Agar Recovery Bisa Dipakai

Fitur `Recovery Channel` tidak boleh hanya bergantung pada 1 akun owner utama.

Jika akun owner utama terbanned, akun tersebut tidak bisa membuka bot lagi. Karena itu, sebelum masalah terjadi harus ada akses owner cadangan.

Opsi yang disarankan:

- Bot mendukung multiple owner ID, misalnya `OWNER_IDS=111111111,222222222`.
- Minimal ada 1 akun Telegram cadangan yang sudah `/start` bot.
- Akun cadangan sudah terdaftar sebagai owner/admin bot.
- Akun cadangan sudah menjadi admin di channel penting.
- Akun cadangan atau pengelola teknis punya akses ke server/project/config.

Jika belum ada owner cadangan tapi masih punya akses ke server, recovery masih bisa dilakukan dengan mengganti `OWNER_ID` di config/database ke `user_id` akun Telegram baru, lalu restart bot.

Flow akses owner cadangan:

1. Owner utama terbanned.
2. Owner cadangan membuka bot.
3. Owner cadangan masuk ke panel owner.
4. Owner cadangan membuka menu `Recovery Channel`.
5. Owner cadangan menjalankan broadcast recovery ke user yang tercatat.

## Flow Jika Akun Owner Terbanned Atau Channel Hilang

1. Buat akun Telegram baru.
2. Buat channel baru.
3. Tambahkan bot sebagai admin channel baru.
4. Tambahkan akun cadangan lain sebagai admin channel baru.
5. Masuk ke panel owner bot memakai owner cadangan atau owner baru yang sudah didaftarkan di config.
6. Buka menu `Recovery Channel`.
7. Pilih paket/channel lama yang ingin dipulihkan.
8. Pilih channel baru sebagai pengganti.
9. Bot menampilkan preview data:
   - total user aktif di database
   - total user yang punya `user_id`
   - estimasi user yang bisa dihubungi
   - jumlah user yang tidak punya data lengkap
10. Owner klik `Broadcast Link Recovery`.
11. Bot mengirim pesan recovery ke user yang tercatat.
12. User klik tombol `Ambil Akses Channel Baru`.
13. Bot cek apakah user masih valid/aktif di database.
14. Bot membuat atau mengirim invite link channel baru.
15. Bot mencatat status recovery user.

## Contoh Pesan Recovery

```text
Halo, channel lama sedang dipindahkan ke channel baru.

Klik tombol di bawah untuk mengambil akses channel baru kamu.
```

Tombol:

```text
Ambil Akses Channel Baru
```

## Status Recovery Yang Disarankan

- `pending`: belum dikirim.
- `sent`: pesan recovery berhasil dikirim.
- `claimed`: user sudah mengambil akses channel baru.
- `failed`: gagal mengirim pesan.
- `blocked_bot`: user memblokir bot.
- `invalid`: user tidak valid atau akses sudah tidak aktif.

## Menu Recovery Yang Disarankan

```text
Owner Panel
└─ Recovery Channel
   ├─ Pilih Channel/Paket Lama
   ├─ Pilih Channel Baru
   ├─ Preview Data Member
   ├─ Broadcast Link Recovery
   ├─ Lihat Status Recovery
   └─ Export User Gagal Dihubungi
```

## Fitur Yang Bisa Dibuat Di Bot

### Export User ID Channel Terhubung

Fungsi:

- Menampilkan daftar user ID dari database bot.
- Export user aktif per channel/paket.
- Export CSV atau TXT.

Catatan:

- Data ini berasal dari database bot, bukan seluruh subscriber Telegram.

### Broadcast Recovery Channel

Fungsi:

- Mengirim link channel baru ke semua user aktif yang tercatat.
- Mencatat user yang berhasil/gagal dikirim.
- Memberi tombol klaim akses channel baru.

### Claim Akses Channel Baru

Fungsi:

- User klik tombol recovery.
- Bot cek status user di database.
- Jika valid, bot kirim invite link channel baru.
- Bot update status recovery menjadi `claimed`.

### Report Recovery

Fungsi:

- Total user target.
- Total pesan berhasil dikirim.
- Total user sudah klaim.
- Total gagal kirim.
- Total user block bot.

## Checklist Pencegahan

- Tambahkan akun Telegram cadangan sebagai admin channel.
- Tambahkan akun Telegram cadangan sebagai owner/admin bot.
- Dukung multiple owner ID agar bot tidak bergantung pada 1 akun owner.
- Pastikan owner cadangan sudah pernah `/start` bot.
- Simpan cara mengganti `OWNER_ID`/`OWNER_IDS` dari server jika owner utama terbanned.
- Aktifkan 2FA pada akun Telegram owner dan admin cadangan.
- Jangan hanya bergantung pada satu akun owner.
- Jangan memakai akun owner untuk aktivitas spam atau invite massal manual.
- Bot harus mencatat semua pembeli dan akses channel.
- Wajibkan user `/start` bot sebelum transaksi.
- Backup `bot.db` rutin.
- Simpan backup di tempat terpisah dari server utama.
- Buat fitur export user ID aktif.
- Buat fitur broadcast recovery.
- Gunakan link invite dari bot agar data user tercatat.

## Batasan Telegram Bot API

Bot API bisa:

- Membaca total member channel jika bot punya akses.
- Mengirim pesan ke user yang pernah `/start` bot.
- Membuat invite link jika bot admin dan punya permission.
- Mengecek status member tertentu jika punya `user_id`.

Bot API tidak bisa:

- Mengambil daftar semua subscriber channel.
- Mengirim pesan ke user yang belum pernah `/start` bot.
- Menghubungi user yang memblokir bot.
- Memindahkan member otomatis dari channel lama ke channel baru.
- Mengembalikan subscriber channel yang hilang tanpa data user.

## Rekomendasi Akhir

Flow recovery harus dibuat sebelum masalah terjadi.

Jika database user sudah lengkap, channel hilang masih bisa dipulihkan dengan broadcast link channel baru ke user yang tercatat.

Jika database user tidak lengkap, member yang tidak tercatat tidak bisa dipanggil kembali secara otomatis.
