Bot autoswap multi-account untuk Cantex yang dibangun di atas SDK lokal pada cantex_sdk-4.0.
Fitur utama:
- Multi-account
- Strategi swap
1,2,3, dan4 - Validasi balance, minimum protocol, dan fee sebelum submit swap
- Reserve
CCberbasisreserve_feeper account - Optimasi route
directvs1-hop - Progress round harian disinkronkan dari history trading Cantex;
1 swap sukses = 1 round selesai - Bot selalu berjalan dalam mode 24 jam berbasis UTC
- Saat start bot selalu meminta pilihan mode startup
1-6 - Monitor Telegram gabungan dalam 1 pesan
- Dashboard terminal live berbentuk tabel per account
- Best-effort fetch activity user dari endpoint web Cantex
- Konfirmasi swap via WebSocket (
swap_and_confirm) dari SDK 4.0
- Config contoh:
config/accounts.example.toml - Config utama:
config/accounts.toml - Entry point:
run_bot.py - Core bot:
src/autoswap_bot/bot.py
- Python 3.11 atau lebih baru
pip- Internet yang stabil
- Private key / credential account Cantex
Alur umum:
- Buat virtual environment
- Install dependency
- Copy
.env.examplemenjadi.env - Copy config contoh
- Isi credential dan pengaturan
- Jalankan bot
Masuk ke folder project lalu jalankan:
py -m venv venv
.\venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
Copy-Item .env.example .env
Copy-Item config\accounts.example.toml config\accounts.tomlIsi secret di .env, isi pengaturan di config\accounts.toml, lalu jalankan:
py run_bot.py --config config\accounts.tomlContoh isi .env:
TELEGRAM_BOT_TOKEN="isi_token_bot"
TELEGRAM_CHAT_ID="isi_chat_id"
CANTEX_OPERATOR_KEY_1="isi_operator_key_1"
CANTEX_TRADING_KEY_1="isi_trading_key_1"
CANTEX_OPERATOR_KEY_2="isi_operator_key_2"
CANTEX_TRADING_KEY_2="isi_trading_key_2"Masuk ke folder project lalu jalankan:
python3 -m venv venv
source venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
cp .env.example .env
cp config/accounts.example.toml config/accounts.tomlIsi secret di .env, isi pengaturan di config/accounts.toml, lalu jalankan:
python run_bot.py --config config/accounts.tomlPenting:
- Di Linux gunakan slash
/, bukan\ - Command ini salah di Linux:
python run_bot.py --config config\accounts.toml - Command yang benar di Linux:
python run_bot.py --config config/accounts.toml
Contoh isi .env:
TELEGRAM_BOT_TOKEN="isi_token_bot"
TELEGRAM_CHAT_ID="isi_chat_id"
CANTEX_OPERATOR_KEY_1="isi_operator_key_1"
CANTEX_TRADING_KEY_1="isi_trading_key_1"
CANTEX_OPERATOR_KEY_2="isi_operator_key_2"
CANTEX_TRADING_KEY_2="isi_trading_key_2"Bot akan otomatis membaca file .env dari root project saat start.
Lihat contoh lengkap di config/accounts.example.toml.
Struktur dasarnya:
[settings]
swap_delay_seconds = { min = 20.0, max = 100.0 }
max_network_fee_cc_per_execution = "0.12"
network_fee_poll_seconds = { min = 20.0, max = 40.0 }
full_24h_auto_restart = true
weekly_stop_on_monday_utc = true
telegram_enabled = false
terminal_dashboard_enabled = true
terminal_dashboard_logs_limit = 20
terminal_dashboard_min_interval_seconds = 0.25
default_continue_on_low_balance = true
max_retries = 3
retry_base_delay = 5.0
[defaults]
strategy = "3"
rounds = { min = 70, max = 72 }
amounts = { CC = { min = "11", max = "13" }, USDCx = { min = "1.5", max = "1.7" }, CBTC = { min = "0.000023", max = "0.000025" } }
reserve_fee = "5"
[[accounts]]
name = "wallet-1"
enabled = true
operator_key = "env:CANTEX_OPERATOR_KEY_1"
trading_key = "env:CANTEX_TRADING_KEY_1"
proxy_label = "No proxy"
auto_create_intent_account = true-
swap_delay_seconds- Delay antar swap pada mode normal
- Bisa angka tetap atau range
{ min, max }
-
max_network_fee_cc_per_execution- Batas maksimum network fee untuk setiap transaksi swap / hop dalam satuan
CC - Bot akan cek quote terlebih dahulu sebelum submit transaksi
- Jika ada hop yang network fee quote-nya lebih tinggi dari batas ini, transaksi tidak dikirim
- Bot akan menunggu sesuai
network_fee_poll_seconds, lalu quote ulang sampai fee turun - Jika saat menunggu muncul quote error sementara seperti
HTTP 502, bot tidak dianggap gagal; bot tetap hidup dan akan quote ulang lagi - Setting ini hanya membatasi network fee, bukan swap fee admin/liquidity
- Aturan ini berlaku untuk swap normal, recovery, dan refill
- Cantex saat ini memberi
3x free fee swapper account per hari UTC - Bot otomatis mencoba memakai jatah ini mulai
01:00 UTC - Hanya hop pertama yang benar-benar memakai jatah free swap harian boleh bypass batas fee ini
- Progress round harian memakai history trading hari UTC berjalan dari Cantex
- Jika history trading hari ini sudah menunjukkan swap >=
rounds, bot tidak membuat swap baru sampai hari UTC berganti - State lokal tetap disimpan untuk cache UI/runtime, tetapi batas round mengikuti history trading harian
- Contoh:
- jika nilai setting
0.12 - lalu quote menunjukkan network fee
0.15 CC - maka bot tidak swap, tetapi menunggu dan cek ulang
- jika nilai setting
- Batas maksimum network fee untuk setiap transaksi swap / hop dalam satuan
-
network_fee_poll_seconds- Interval tunggu antar pengecekan ulang fee saat fee masih di atas batas
- Bisa angka tetap atau range
{ min, max } - Jika memakai range, bot akan memilih jeda random baru pada setiap percobaan
- Contoh:
30berarti bot akan cek ulang setiap 30 detik{ min = 20.0, max = 40.0 }berarti bot akan cek ulang dengan jeda acak antara 20 sampai 40 detik
-
full_24h_mode- Secara praktik bot sekarang selalu memakai mode 24 jam berbasis UTC
- Setting ini dipertahankan untuk kompatibilitas config lama
-
full_24h_startup_mode- Dipertahankan untuk kompatibilitas config lama
- Sumber utama perilaku startup sekarang adalah prompt pilihan mode saat bot dijalankan
-
full_24h_auto_restart- Jika
true, setelah sesi harian selesai bot akan lanjut ke hari UTC berikutnya
- Jika
-
weekly_stop_on_monday_utc- Jika
true, bot yang sedang berjalan akan berhenti saat memasuki hari Senin UTC - Bot tidak melakukan refill otomatis pada weekly stop
- Jika bot dijalankan ulang pada hari Senin UTC, bot berjalan normal
- Refill manual tetap tersedia lewat mode
6 - Config lama
weekly_refill_on_monday_utcmasih dibaca sebagai fallback
- Jika
-
full_24h_min_gap_minutes- Jarak minimum antar jadwal swap pada mode 24 jam
-
random_seed- Isi angka jika ingin pola random bisa direproduksi saat debugging
-
telegram_enabled- Jika
true, bot akan mengirim 1 pesan Telegram gabungan untuk semua account
- Jika
-
telegram_chat_id- Disarankan diisi lewat
.envdenganenv:TELEGRAM_CHAT_ID
- Disarankan diisi lewat
-
terminal_dashboard_enabled- Jika
truedan bot dijalankan di terminal interaktif, output console akan berubah menjadi dashboard tabel live per account - Log mentah biasa disembunyikan agar tampilan tidak campur
- Jika
-
terminal_dashboard_logs_limit- Jumlah log terakhir yang ditampilkan di bagian bawah dashboard terminal
-
terminal_dashboard_min_interval_seconds- Jeda minimum refresh dashboard terminal agar layar tidak terlalu sering redraw
-
default_continue_on_low_balance- Default perilaku untuk semua account jika balance kurang
-
max_retries- Jumlah retry swap hop
- Jika seluruh retry gagal, round di-skip dan bot lanjut ke round berikutnya
-
retry_base_delay- Delay dasar antar retry
Dipakai sebagai default untuk semua account aktif, kecuali di-override pada [[accounts]].
strategyroundsamountsreserve_feereserve_kritis
reserve_fee adalah reserve CC utama per account untuk semua strategi.
reserve_kritis hanya wajib diisi jika account memakai strategi 4.
Contoh:
[defaults]
strategy = "3"
rounds = { min = 5, max = 7 }
amounts = { CC = { min = "9", max = "12" }, USDCx = { min = "8", max = "11" }, CBTC = { min = "0.0005", max = "0.0010" } }
reserve_fee = "5"Setiap account minimal berisi:
nameenabledoperator_keytrading_key
Setting yang sering dipakai per account:
strategyroundsamountsreserve_feereserve_kritisallow_continue_on_low_balanceauto_create_intent_accountproxy_label
Aturannya:
- Jika field tidak ada di
[[accounts]], bot pakai nilai dari[defaults]atau[settings] - Jika field ada di
[[accounts]], nilai account akan override default
Contoh:
[settings]
default_continue_on_low_balance = true
[[accounts]]
name = "wallet-2"
enabled = true
operator_key = "env:CANTEX_OPERATOR_KEY_2"
trading_key = "env:CANTEX_TRADING_KEY_2"
allow_continue_on_low_balance = falseArtinya account wallet-2 tetap memakai false, walaupun default global true.
strategy sekarang menerima nilai 1, 2, 3, atau 4:
CC -> USDCxCC -> CBTCCC -> USDCx -> CBTCCC -> USDCx -> CBTC
Catatan:
roundsadalah jumlah swap sukses yang ingin dicapai1 swap sukses = 1 round selesai- Strategi
1akan memprioritaskan refill token luar strategi keCC, laluCC -> USDCx, lalu unwindUSDCx -> CCsaatCCtidak cukup - Strategi
2akan memprioritaskan refill token luar strategi keCC, laluCC -> CBTC, lalu unwindCBTC -> CCsaatCCtidak cukup - Strategi
3memakai static round robin dinamis:- selama
CCmasih cukup, bot bergantianCC -> USDCxlaluCC -> CBTC - saat
CCtidak cukup untuk swap keluar, bot masuk fase recycle:USDCx -> CBTC (50%),CBTC -> USDCx (50%),CBTC -> CC (max),USDCx -> CC (max)
- selama
- Strategi
4memakai mode reserve:- bot mencoba fase recycle dulu:
USDCx -> CBTCatauCBTC -> USDCxdenganamount max - route
USDCx <-> CBTCdipaksa direct 1-hop agar submit lebih cepat dan tidak memakai jalur antara - jika balance
USDCx/CBTCbelum cukup untuk minimum ticket protocol, bot fallback keCC -> USDCxmemakaiamounts.CCsambil tetap menjagareserve_fee - jika balance
USDCx/CBTCsudah cukup untuk bolak-balik, fase awalCC -> USDCxakan di-skip - jika
CC <= reserve_kritis, bot masuk fase recovery dan mengosongkanUSDCxsertaCBTCkembali keCC - setelah saldo token luar habis, flow kembali ke fase recycle lalu fallback spend jika perlu
- bot mencoba fase recycle dulu:
- Langkah strategi hanya maju jika swap pada langkah saat ini benar-benar sukses
- Constraint sementara seperti fee tinggi, minimum ticket protocol, atau source token belum cukup tidak mengurangi
rounds - Jika account tertahan lebih dari
5xberturut-turut karena minimum ticket / source balance tidak cukup, bot menghentikan account itu dengan statussaldo kurang - Alias lama
strategy = "7"masih diterima dan dipetakan ke strategi3agar config lama tetap jalan
Contoh:
strategy = "1"akan terus mengulang flowrefill luar strategi -> CC -> USDCx -> USDCx -> CCstrategy = "2"akan terus mengulang flowrefill luar strategi -> CC -> CBTC -> CBTC -> CCstrategy = "3"akan terus memakai round robin dinamis antara fase spend dan fase recycle sampai targetroundssukses terpenuhistrategy = "4"akan mengulang flowcoba USDCx <-> CBTC dulu -> jika belum cukup maka CC -> USDCx sesuai amounts.CC -> recycle max -> recovery ke CC saat reserve_kritis tersentuh
Contoh config untuk strategi 4:
[defaults]
strategy = "4"
rounds = { min = 70, max = 72 }
reserve_fee = "5"
reserve_kritis = "1"amounts dipakai berdasarkan aset yang sedang menjadi token sell.
Catatan penting:
- Strategi
1,2, dan3memakaiamounts - Strategi
4memakaiamounts.CCuntuk faseCC -> USDCx - Strategi
4tetap memakaiamount maxuntuk fase recycleUSDCx <-> CBTC
Contoh nilai tetap:
amounts = { CC = "10", USDCx = "10", CBTC = "0.001" }Contoh random range:
amounts = { CC = { min = "8", max = "12" }, USDCx = { min = "8", max = "12" }, CBTC = { min = "0.0004", max = "0.0008" } }
rounds = { min = 5, max = 8 }Artinya:
- nominal swap diacak saat langkah itu benar-benar akan dieksekusi
- token source aktif menentukan range amount yang dipakai
roundsdiacak sekali di awal run account
reserve_feemembatasi saat source token adalahCC- Jika step aktif adalah
CC -> token lain, bot hanya boleh swap selama balanceCCmasih di atasreserve_fee - Jika balance
CC <= reserve_fee, bot tidak akan lagi memakaiCCsebagai source token untuk swap keluar - Kondisi ini bukan berarti strategi selesai
- Step lain seperti
USDCx -> CBTC,CBTC -> CC, atauUSDCx -> CCtetap boleh berjalan walaupunCC <= reserve_fee - Pada strategi
4,reserve_feeadalah target saldoCCyang disisakan saat langkahCC -> USDCx - Pada strategi
4, jikaCC <= reserve_kritis, bot akan memaksa recoveryUSDCxdanCBTCkeCCsampai saldo token luar habis
Catatan:
- Bot tidak menganggap balance kurang sebagai kondisi selesai
- Jika source token aktif belum memenuhi syarat config user atau protocol, bot hanya menunda attempt dan mencoba lagi pada evaluasi berikutnya
allow_continue_on_low_balancesaat ini sebaiknya dianggap sebagai setting kompatibilitas lama, bukan penentu selesai strategi
Bot sekarang selalu berjalan dalam mode 24 jam.
Saat bot dijalankan, akan muncul 6 pilihan mode startup:
Mode hanya ambil free swapMode ambil free swap lalu lanjut swap sesuai batas swap dan fee swap yang ditentukanMode swap sesuai batas swap dan fee swap yang ditentukanMode swap sesuai jam plan dan batas fee yang ditentukanMode hitung estimasi kebutuhan CC dari config saat iniMode refill semua token selain CC ke CC lalu berhenti
Arti mode:
- Mode
1- Bot hanya memakai jatah free swap harian
- Setelah jatah free swap hari itu habis, bot menunggu hari UTC berikutnya jika
full_24h_auto_restart = true
- Mode
2- Bot memprioritaskan free swap harian lebih dulu
- Hanya hop free swap yang benar-benar memakai jatah harian boleh bypass fee cap
- Setelah jatah free swap habis, bot lanjut swap normal dengan fee cap
- Mode
3- Bot langsung swap normal
- Semua swap tetap patuh pada fee cap
- Mode
4- Bot memakai plan jadwal random dalam window harian UTC
- Fee cap tetap berlaku
- Mode
5- Bot tidak menjalankan swap
- Bot hanya menghitung estimasi kebutuhan
CCper account dari config aktif - Dasar hitung utamanya:
rounds.max,reserve_fee,reserve_kritis,amounts.CC.max,strategy, danmax_network_fee_cc_per_execution - Estimasi memakai angka konservatif
- Benefit
free swapharian tidak dikurangkan - Network fee runtime memakai data quote swap sebagai sumber utama karena fee real dari history/funding sering telat atau tidak lengkap
- Mode
6- Bot tidak menjalankan round harian
- Bot langsung swap semua token non-CC (
USDCx,CBTC) keCC - Refill tetap mematuhi
max_network_fee_cc_per_execution - Setelah refill selesai atau tidak bisa lanjut, bot berhenti
Perilaku umum mode 24 jam:
- semua jadwal memakai acuan UTC
- pada mode
planned, target sesi adalah selesai sebelum00:00 UTC - pada mode non-plan, bot terus mencoba sampai quota
roundssukses terpenuhi; jika quota selesai lebih cepat danfull_24h_auto_restart = true, bot tetap polling history trading sampai hari UTC berganti - jika
full_24h_auto_restart = true, sesi berikutnya dimulai lagi untuk hari UTC berikutnya - jika
weekly_stop_on_monday_utc = true, bot yang sedang berjalan akan stop saat memasuki hari Senin UTC tanpa refill otomatis - jika bot dijalankan ulang pada hari Senin UTC, bot berjalan normal lagi sesuai mode yang dipilih
- jatah
3x free fee swapharian per account akan reset saat hari UTC berganti, tetapi baru boleh dipakai mulai01:00 UTC - jadi bot tidak akan memakai free swap tepat setelah
00:00 UTC, melainkan menunggu+1 jam max_network_fee_cc_per_executionberlaku untuk semua swap normal, recovery, refill, dan hop lanjutan- pengecualian hanya untuk hop free swap yang benar-benar memakai jatah harian
- jika fee terlalu tinggi, bot akan retry quote pada slot round itu
- jika saat menunggu fee turun muncul quote error sementara seperti
HTTP 502, bot tetap hidup dan akan mencoba quote ulang lagi - retry fee dilakukan sampai tersisa
30 detikmenuju jadwal round berikutnya - jika sampai batas itu fee tidak turun, slot round saat itu dilewati dan bot lanjut ke slot berikutnya
- account tidak dianggap gagal hanya karena fee sedang tinggi
- untuk source
USDCx/CBTC, preflight balance tidak lagi memblokir karena estimasi fee lokal yang terlalu konservatif; bot submit dulu dan mengikuti error balance dari server jika benar-benar kurang - timeout konfirmasi swap minimal
90 detikagar transaksi yang sudah tersubmit tidak cepat salah ditandai gagal saat WebSocket/ledger lambat
Catatan penting:
- Saat mode 24 jam aktif, account dijalankan paralel di level account
- Di dalam 1 account, transaksi tetap serial
- Saat mode 24 jam aktif, bot selalu memaksa perilaku recovery / continue semampunya
- Jadi
allow_continue_on_low_balance = falsetidak dipakai sebagai stop keras selama mode 24 jam aktif - Pada
full_24h_startup_mode = "direct", bot memakaiswap_delay_secondshanya setelah swap yang berhasil - Di mode normal, bot akan terus menunggu fee turun karena tidak ada jadwal round berikutnya yang menjadi batas deadline
Contoh flow fee cap di mode 24 jam:
- Round saat ini dijadwalkan pukul
10:00:00 UTC - Round berikutnya dijadwalkan pukul
10:05:00 UTC - Deadline retry fee untuk round saat ini adalah
10:04:30 UTC - Jika sampai
10:04:30 UTCfee masih di atasmax_network_fee_cc_per_execution, slot round saat ini dilewati - Bot lanjut ke round berikutnya dan tetap hidup
Jika swap hop gagal:
- Bot retry sampai batas
max_retries - Bot menunggu sesuai
retry_base_delay - Jika tetap gagal, attempt saat itu dianggap gagal
- Bot tetap hidup dan akan mencoba lagi pada evaluasi berikutnya
- Round baru dianggap selesai jika ada 1 swap sukses
Jadi bot tidak langsung berhenti untuk account hanya karena 1 hop swap gagal, dan rounds tidak berkurang hanya karena retry habis.
- Bot membedakan:
- minimum amount dari config user
- minimum ticket size dari protocol / web
- Jika nominal saat itu berada di bawah minimum protocol, bot tidak menganggap strategi selesai
- Bot akan mencoba menyesuaikan amount jika masih memungkinkan
- Jika tetap tidak memenuhi minimum protocol, attempt saat itu dilewati dengan log yang jelas
- Bot tetap hidup dan mencoba lagi sampai round sukses terkumpul sesuai target
- Dust balance kecil tidak dipaksa swap jika akan menghasilkan transaksi invalid
- Jika route optimizer menurunkan amount sampai di bawah minimum config user, bot tidak submit transaksi itu
Jika telegram_enabled = true, bot membuat 1 pesan Telegram gabungan untuk semua account dan terus mengedit pesan yang sama.
Isi pesan gabungan per account meliputi:
- status account
- progress
R/current - balance
CC - plan aktif
- estimasi
fee route - metrik
24h - reward
yesterday - reward
this week - funding masuk non-reward/non-rebate
- gas fee hari ini
- progress
free swap - ringkasan update terbaru tanpa mengirim dashboard terminal mentah
Contoh config:
[settings]
telegram_enabled = true
telegram_bot_token = "env:TELEGRAM_BOT_TOKEN"
telegram_chat_id = "env:TELEGRAM_CHAT_ID"
telegram_update_min_interval_seconds = 5
telegram_latest_logs_limit = 6Catatan:
- Saat startup, monitor Telegram tidak lagi mengirim 1 pesan per akun
- Bot akan mempertahankan 1 pesan gabungan dan mengeditnya secara berkala
- Format Telegram dibuat ringkas untuk mobile, jadi dashboard tabel tetap hanya untuk terminal lokal
Di akhir run, bot menampilkan ringkasan per account, termasuk:
- status
- putaran selesai (
swap sukses) skipped_rounds- jumlah tx swap
- estimasi network fee
- network fee terpakai
- swap fee terpakai
- balance akhir
stop_reasonjika ada
Catatan:
completed_roundsadalah jumlah swap suksesskipped_roundsterutama menunjukkan jumlah attempt / slot yang dilewati, bukan jumlah round yang dianggap selesai
Saat inspeksi frontend Cantex secara langsung, data activity akun dan history yang dipakai bot mengikuti endpoint berikut:
https://api.cantex.io/v1/account/reward_activityhttps://api.cantex.io/v1/history/tradinghttps://api.cantex.io/v1/history/funding
Bot memakai endpoint ini untuk:
24h swapsdari activity sebagai metrik tampilan24h volumeCC rebatessepertiYesterdaydanThis Week- total
Fundingper account dari depositCCmasuk, dengan reward distribution/rebates dikeluarkan dari hitungan - sinkronisasi progress round dari history trading hari UTC berjalan sebagai satu-satunya sumber batas round harian
- sinkronisasi history trading harian untuk jatah
3x free fee swap
Jika data history trading belum tersedia atau belum terindeks setelah swap sukses, bot menunggu sampai history trading update sebelum membuat round berikutnya.
Catatan limit history trading:
- endpoint
/v1/history/tradingsaat ini mengembalikan 50 row terbaru - swap
USDCx <-> CBTCmuncul sebagai 2 row leg denganupdate_idsama, sehingga 50 row biasanya berarti 25 swap unik - bot menyimpan rolling cache
update_idharian di state lokal agar target sepertirounds = 26tetap bisa lewat dari batas 25 swap unik terbaru - jika bot baru pertama kali dinyalakan setelah history API sudah melewati 25 swap unik dan state lokal kosong, bot tetap hanya bisa melihat window terbaru dari API
Bot menyimpan state lokal di folder config/:
.autoswap_bot_runtime_state.json- menyimpan jatah
3x free fee swapharian per account - dipakai sebagai fallback lokal dan cache sinkronisasi
- progress round harian tidak memakai activity sebagai batas; bot menunggu history trading harian tersedia/update
- menyimpan rolling cache
update_idhistory trading harian agar progress tidak mentok di batas 25 swap unik terbaru - reset harian mengikuti UTC
- window pemakaian free swap tetap baru terbuka pada
01:00 UTC
- menyimpan jatah
.autoswap_telegram_state.json- menyimpan statistik pesan Telegram seperti tx ok/fail, swap, dan gas fee harian / lifetime
Gunakan:
python run_bot.py --config config/accounts.tomlJangan gunakan:
python run_bot.py --config config\accounts.tomlJika telegram_enabled = false, token Telegram tidak wajib diisi.
Jika telegram_enabled = true, pastikan:
telegram_bot_tokenvalidtelegram_chat_idvalid- environment variable sudah di-set jika memakai format
env:...
Saat bot sedang berjalan, tekan Ctrl + C.
Bot akan menampilkan:
berhenti? (y/n)
Arti pilihan:
y: bot berhenti dengan rapin: bot lanjut jalan
Account dengan enabled = false akan di-skip. Jika masih error, cek apakah field account aktif dan nonaktif tertukar saat mengedit config.