# Flow Kelola Channel Terhubung

## Menu Navigasi

```
Kelola Channel (owner_channel_menu)
├─ 📝 Kelola Channel Testi → (existing)
├─ 🔗 Kelola Channel Terhubung → (owner_channel_terhubung_list)
└─ ⬅️ Kembali
```

## FLOW Detail

### 1. Menu Utama (owner_channel_terhubung_list)
Tampilkan daftar semua channel terhubung + tombol Tambah.

```
📢 Kelola Channel Terhubung

Daftar channel yang terhubung dengan bot:

🔓 Nama Channel (@username) — ✅ Aktif
🔒 Nama Channel (chat_id) — ❌ Tidak Aktif

[ ➕ Tambah Channel Terhubung ]
[ ⬅️ Kembali ]
```

### 2. Tambah Channel (owner_conn_channel_add)
Flow input bertahap (mirip tambah channel dulu, tapi simpan ke tabel terpisah):

```
Step 1: Input Nama Channel
Step 2: Pilih Tipe (Public / Private)
  - Public → input link atau @username
  - Private → input Chat ID (angka negatif)
Step 3: ✅ Channel berhasil ditambahkan
       → Cek koneksi otomatis (bot coba kirim pesan test)
       → Tampilkan hasil status
```

### 3. Detail Channel (owner_conn_channel_detail_{id})
Tampilkan info lengkap + aksi:

```
🔓 Nama Channel

Tipe: Public
Username/Link: @channel / t.me/channel
Status Bot: ✅ Aktif (terakhir cek: 2024-01-01 12:00)
Dibuat: 2024-01-01 12:00

[ 🔄 Cek Koneksi Ulang ]
[ 🗑 Hapus Channel ]
[ ⬅️ Kembali ]
```

### 4. Cek Koneksi (owner_conn_channel_cek_{id})
Bot kirim pesan test ke channel:
- Berhasil → update status jadi ✅ Aktif
- Gagal → update status jadi ❌ Tidak Aktif

### 5. Hapus Channel (owner_conn_channel_delete_{id})
Konfirmasi lalu hapus dari database.

## Database

### Tabel: connected_channels

| Kolom | Tipe | Keterangan |
|-------|------|------------|
| id | INTEGER PK AUTOINCREMENT | |
| name | TEXT NOT NULL | Nama channel |
| type | TEXT NOT NULL | 'public' / 'private' |
| chat_id | INTEGER | Untuk private channel |
| username | TEXT | Untuk public channel |
| link | TEXT | Link channel |
| status | TEXT DEFAULT 'unknown' | 'active' / 'inactive' / 'unknown' |
| last_checked | TEXT | Timestamp pengecekan terakhir |
| created_at | TEXT | |
| updated_at | TEXT | |

## Callback Data Mapping

| Callback | Handler |
|----------|---------|
| `owner_conn_channel_list` | Tampilkan daftar channel terhubung |
| `owner_conn_channel_add` | Mulai flow tambah channel |
| `owner_conn_channel_add_public` | Input link/username |
| `owner_conn_channel_add_private` | Input chat id |
| `owner_conn_channel_detail_{id}` | Detail channel |
| `owner_conn_channel_cek_{id}` | Cek koneksi bot |
| `owner_conn_channel_delete_{id}` | Konfirmasi hapus |
| `owner_conn_channel_delete_confirm_{id}` | Eksekusi hapus |

## Service Functions

- `get_all_connected_channels()` — ambil semua channel
- `get_connected_channel_by_id(id)` — ambil satu channel
- `add_connected_channel(name, type_, chat_id, username, link)` — tambah
- `update_connected_channel(id, **kwargs)` — update
- `delete_connected_channel(id)` — hapus
- `check_channel_connection(context, channel)` — cek koneksi bot
