Cara Mengatasi Error You Are Not Authorized di Bot Telegram OpenClaw

Error "You are not authorized to use this command" di bot Telegram OpenClaw biasanya bukan berarti bot rusak. Biasanya ini berarti pesan atau command yang dikirim tidak lolos layer authorization Telegram OpenClaw.
Di versi OpenClaw yang lebih baru, problem ini perlu dibaca lebih rapi karena authorization Telegram tidak cuma satu tempat. Ada layer DM policy, pairing, allowlist channel, group allowlist, per-group/per-topic allowlist, dan untuk kompatibilitas lama masih ada commands.allowFrom.
Jadi kalau sebelumnya artikel lama hanya fokus ke commands.allowFrom, sekarang pendekatan yang lebih aman adalah: cek layer Telegram channel access lebih dulu, lalu gunakan commands.allowFrom sebagai jalur legacy/override bila masih dipakai di setup lama.
Ringkasan cepat
Kalau command Telegram ditolak dengan pesan:
You are not authorized to use this command.
cek urutannya seperti ini:
- apakah ini DM atau group;
- apakah
dmPolicy/groupPolicymengizinkan chat tersebut; - apakah sender ID Telegram masuk
channels.telegram.allowFromatauchannels.telegram.groupAllowFrom; - apakah group chat sudah masuk
channels.telegram.groups; - apakah ada override
groups.<chatId>.allowFromatautopics.<topicId>.allowFrom; - kalau setup lama memakai
commands.allowFrom, pastikan sender juga masuk di sana; - restart gateway / jalankan doctor / test ulang dari akun yang sama.
Dengan urutan ini, solusi tetap compatible untuk config lama, tapi tidak ketinggalan pola config Telegram OpenClaw terbaru.
Kenapa error ini muncul?
OpenClaw membedakan antara:
- pesan biasa,
- command native seperti
/status,/config,/debug,/restart, - command yang berjalan dari DM,
- command yang berjalan dari group,
- sender yang sudah pairing,
- sender yang masuk allowlist.
Karena itu, akun yang bisa mengirim chat biasa belum tentu otomatis boleh menjalankan command administratif.
Di Telegram, error authorization bisa muncul dari beberapa penyebab:
- DM masih memakai
pairing, tapi user belum disetujui; dmPolicysudahallowlist, tapi user ID belum ada dichannels.telegram.allowFrom;- group memakai
groupPolicy: "allowlist", tapi group belum masukchannels.telegram.groups; - group sudah masuk, tapi sender belum masuk
groupAllowFromatau per-groupallowFrom; - command layer lama
commands.allowFrommasih aktif dan tidak berisi sender tersebut; - Telegram ID yang dipakai salah, misalnya chat ID group negatif dimasukkan ke allowlist user.
Poin terakhir penting: allowFrom Telegram butuh numeric sender user ID, bukan username dan bukan chat ID group.
Pola baru: pisahkan DM access, group access, dan command override
Untuk setup baru, lebih sehat membaca access control Telegram dalam tiga layer.
1. DM access
Untuk private chat / DM, konfigurasi utamanya ada di:
{
"channels": {
"telegram": {
"dmPolicy": "allowlist",
"allowFrom": [1234567890]
}
}
}
Atau via CLI:
openclaw config set channels.telegram.dmPolicy "allowlist"
openclaw config set channels.telegram.allowFrom '["1234567890"]'
1234567890 di sini hanya contoh. Ganti dengan Telegram user ID milik admin yang memang boleh memakai bot.
Kalau dmPolicy masih pairing, user baru perlu memulai chat dan disetujui lewat flow pairing sebelum diterima sebagai sender yang valid.
2. Group access
Untuk group, jangan masukkan chat ID group negatif ke allowFrom. Group punya tempat sendiri.
Contoh struktur aman:
{
"channels": {
"telegram": {
"groupPolicy": "allowlist",
"groups": {
"-1001234567890": {
"requireMention": true
}
},
"groupAllowFrom": [1234567890]
}
}
}
Artinya:
- group yang boleh dipakai adalah
-1001234567890, - bot hanya aktif di group itu,
- sender yang boleh menjalankan command di group adalah user ID
1234567890, requireMention: truemembantu mengurangi noise di group.
Kalau groupPolicy adalah allowlist tapi groupAllowFrom dan allowFrom kosong, OpenClaw bisa menolak atau menjatuhkan pesan group karena tidak ada sender yang memenuhi syarat.
3. Per-group atau per-topic override
Kalau satu bot dipakai di beberapa group atau forum topic, konfigurasi bisa dibuat lebih spesifik.
Contoh per-group allowlist:
{
"channels": {
"telegram": {
"groups": {
"-1001234567890": {
"requireMention": true,
"allowFrom": [1234567890]
}
}
}
}
}
Kalau memakai Telegram forum topic, allowlist juga bisa dibuat per topic sesuai struktur config yang dipakai instance.
Pola ini berguna kalau:
- group A boleh dipakai owner,
- group B boleh dipakai tim teknis,
- topic tertentu boleh lebih terbuka,
- topic lain harus lebih ketat.
Jalur lama yang tetap compatible: commands.allowFrom
Di beberapa setup lama, solusi yang dipakai adalah commands.allowFrom.
Contoh:
{
"commands": {
"native": "auto",
"nativeSkills": "auto",
"config": true,
"debug": true,
"restart": true,
"ownerDisplay": "raw",
"allowFrom": {
"telegram": [1234567890]
}
}
}
Bagian ini jangan langsung dihapus kalau setup lama masih bergantung ke sana.
Alasannya: pada runtime Telegram OpenClaw, jika commands.allowFrom.telegram atau commands.allowFrom["*"] dikonfigurasi, layer ini bisa dipakai sebagai authorization khusus untuk command. Jadi di environment lama, menghapusnya bisa membuat command yang sebelumnya jalan menjadi ditolak lagi.
Rekomendasi compatibility:
- untuk setup baru, prioritaskan
channels.telegram.allowFrom/groupAllowFrom; - untuk setup lama, biarkan
commands.allowFromtetap ada; - isi keduanya dengan sender admin yang sama kalau ingin transisi aman;
- setelah semua bot tervalidasi, baru evaluasi apakah
commands.allowFrommasih dibutuhkan.
Contoh transisi aman:
{
"channels": {
"telegram": {
"dmPolicy": "allowlist",
"allowFrom": [1234567890],
"groupPolicy": "allowlist",
"groups": {
"-1001234567890": {
"requireMention": true
}
},
"groupAllowFrom": [1234567890]
}
},
"commands": {
"allowFrom": {
"telegram": [1234567890]
}
}
}
Ini agak repetitif, tapi aman untuk masa transisi karena layer baru dan lama sama-sama mengenali admin yang sama.
Cara mendapatkan Telegram user ID yang benar
Yang dibutuhkan untuk allowFrom adalah user ID sender, bukan username.
Cara umum:
- DM bot Telegram OpenClaw dari akun admin.
- Cek log/gateway/debug update untuk melihat
from.id. - Gunakan angka
from.idtersebut diallowFrom.
Jangan pakai:
@username, kecuali tool setup benar-benar melakukan resolusi ke numeric ID;- chat ID group seperti
-100...diallowFrom; - ID orang lain;
- screenshot ID asli di dokumentasi publik.
Untuk dokumentasi atau artikel, selalu pakai mock ID seperti 1234567890.
Langkah perbaikan untuk DM
Kalau error muncul di private chat:
- cek config aktif:
openclaw status
- set DM policy ke allowlist:
openclaw config set channels.telegram.dmPolicy "allowlist"
- tambahkan user ID admin:
openclaw config set channels.telegram.allowFrom '["1234567890"]'
- kalau setup lama memakai command allowlist, tambahkan juga:
openclaw config set commands.allowFrom.telegram '["1234567890"]'
- restart gateway dan test ulang:
openclaw gateway restart
openclaw doctor
Lalu coba /status dari akun yang sama.
Langkah perbaikan untuk group
Kalau error muncul di group:
- pastikan group terdaftar:
{
"channels": {
"telegram": {
"groups": {
"-1001234567890": {
"requireMention": true
}
}
}
}
}
- pastikan group policy tidak memblokir group:
{
"channels": {
"telegram": {
"groupPolicy": "allowlist"
}
}
}
- tambahkan sender admin:
{
"channels": {
"telegram": {
"groupAllowFrom": [1234567890]
}
}
}
- jika setup lama masih memakai
commands.allowFrom, samakan juga:
{
"commands": {
"allowFrom": {
"telegram": [1234567890]
}
}
}
- restart dan test ulang dari group.
Kalau bot hanya ingin merespons saat disebut, pakai requireMention: true agar tidak ikut semua obrolan group.
Jangan buka akses terlalu lebar
Untuk troubleshooting cepat, kadang orang tergoda memakai wildcard seperti:
{
"channels": {
"telegram": {
"allowFrom": ["*"]
}
}
}
Ini sebaiknya dihindari untuk bot yang punya akses tool, command admin, atau server.
Untuk production ringan, lebih aman:
- DM memakai
dmPolicy: "allowlist"; - group memakai
groupPolicy: "allowlist"; - group yang boleh dipakai ditulis eksplisit di
groups; - sender admin ditulis sebagai numeric user ID;
- command sensitif tetap butuh approval jika menyentuh aksi berisiko.
Kesalahan yang sering terjadi
1. Memasukkan chat ID group ke allowFrom
Telegram group ID biasanya negatif atau diawali -100.... Itu bukan user ID. Simpan group ID di channels.telegram.groups, bukan di allowFrom.
2. Mengandalkan username
Username bisa berubah dan tidak selalu cukup stabil. Untuk Telegram authorization, gunakan numeric sender ID.
3. Hanya mengisi commands.allowFrom, tapi group policy kosong
Di setup baru, group message juga harus lolos layer channel/group access. Jadi kalau group belum diizinkan, command tetap bisa ditolak sebelum sampai ke layer command lama.
4. Menghapus config lama terlalu cepat
Kalau bot lama sudah berjalan dengan commands.allowFrom, jangan langsung hapus. Tambahkan layer baru dulu, test, lalu baru rapikan bertahap.
5. Tidak restart gateway
Setelah mengubah config, restart gateway dan jalankan doctor supaya perubahan benar-benar terbaca.
Checklist final
Gunakan checklist ini sebelum menganggap masalah selesai:
- [ ] config aktif sudah benar;
- [ ] Telegram user ID admin sudah numeric dan benar;
- [ ] DM policy sesuai kebutuhan;
- [ ] group policy sesuai kebutuhan;
- [ ] group ID ditaruh di
channels.telegram.groups; - [ ] sender admin ditaruh di
allowFrom/groupAllowFrom; - [ ]
commands.allowFromtetap ada jika masih dibutuhkan untuk kompatibilitas lama; - [ ] gateway sudah direstart;
- [ ]
openclaw doctortidak menunjukkan warning authorization besar; - [ ] command dites dari akun yang sama.
Kesimpulan
Error "You are not authorized to use this command" pada bot Telegram OpenClaw paling sering terjadi karena sender belum lolos authorization.
Untuk OpenClaw versi baru, jangan hanya melihat commands.allowFrom. Cek juga:
channels.telegram.dmPolicy,channels.telegram.allowFrom,channels.telegram.groupPolicy,channels.telegram.groups,channels.telegram.groupAllowFrom,- per-group/per-topic
allowFromjika dipakai.
Namun untuk kompatibilitas setup lama, commands.allowFrom tetap perlu dipertahankan sampai semua command sudah tervalidasi dengan pola baru.
Dengan pendekatan ini, artikel lama tetap compatible, tapi implementasinya mengikuti source OpenClaw terbaru: channel access dulu, command override sebagai legacy-compatible fallback.
Artikel Terkait
Temukan lebih banyak konten menarik yang mungkin Anda sukai
Tentang Penulis

Rama Aditya
Profesional dengan pengalaman 15+ tahun dalam digital marketing, fullstack development, dan konsultasi bisnis. Fokus membantu bisnis Indonesia membangun sistem yang efisien, scalable, dan berdampak langsung ke pertumbuhan bisnis.
Pelajari Tentang Kami

