OpenClaw๋ฅผ ํ…”๋ ˆ๊ทธ๋žจ์— ์ฒ˜์Œ ๋ถ™์ด๋ฉด ๋ณดํ†ต ๊ฐ™์€ ์ง€์ ์—์„œ ๋ง‰ํžŒ๋‹ค. ๋ด‡์€ ์‚ด์•„ ์žˆ๋Š”๋ฐ ๊ทธ๋ฃน์—์„œ ๋ฐ˜์‘์ด ์—†๊ณ , ํ† ํ”ฝ๋งˆ๋‹ค ๋™์ž‘์ด ๋‹ฌ๋ผ ๋ณด์ด๊ณ , ๊ถŒํ•œ์„ ์—ด๋ฉด ํŽธํ•ด์ง€์ง€๋งŒ ์šด์˜ ๋ฆฌ์Šคํฌ๊ฐ€ ๊ฐ‘์ž๊ธฐ ์ปค์ง„๋‹ค.
์ด ๋ฌธ์„œ๋Š” ๊ทธ ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด BotFather ์„ค์ • โ†’ OpenClaw ์—ฐ๊ฒฐ โ†’ ๊ทธ๋ฃน/ํ† ํ”ฝ ๊ถŒํ•œ ๋ถ„๋ฆฌ โ†’ ์ตœ์ข… ๊ฒ€์ฆ ์ˆœ์„œ๋กœ ์ •๋ฆฌํ–ˆ๋‹ค. ๊ทธ๋Œ€๋กœ ๋”ฐ๋ผ ํ•˜๋ฉด ์ดˆ๋ฐ˜์— ๊ฐ€์žฅ ๋งŽ์ด ํ„ฐ์ง€๋Š” ๊ถŒํ•œ/๋ฐ˜์‘ ์ด์Šˆ๋ฅผ ๋น ๋ฅด๊ฒŒ ์•ˆ์ •ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

flowchart LR
A[BotFather ์ƒ์„ฑ/๊ถŒํ•œ] --> B[OpenClaw ํ† ํฐ ์—ฐ๊ฒฐ]
B --> C[DM ์ •์ฑ… ์„ค์ •]
C --> D[๊ทธ๋ฃน ์ •์ฑ… ์„ค์ •]
D --> E[ํ† ํ”ฝ ์ •์ฑ… ๋ถ„๋ฆฌ]
E --> F[๋กœ๊ทธ/๋ณด์•ˆ์ ๊ฒ€]
F --> G[์šด์˜ ๋ฐฐํฌ]

๋จผ์ € ์ด๋ ‡๊ฒŒ ์‹œ์ž‘ํ•˜๋ฉด ์•ˆ์ „ํ•˜๋‹ค

๊ฐ€์žฅ ์‚ฌ๊ณ ๊ฐ€ ์ ์€ ์‹œ์ž‘๊ฐ’์€ **DM์€ pairing, ๊ทธ๋ฃน์€ allowlist, ๊ธฐ๋ณธ์€ ๋ฉ˜์…˜ ํ•„์ˆ˜(requireMention=true)**๋‹ค. ์šด์˜ ์ค‘ ํ•„์š”ํ•œ ํ† ํ”ฝ๋งŒ ์˜ˆ์™ธ๋กœ ์—ด๋ฉด, ํŽธ์˜์„ฑ๊ณผ ์•ˆ์ •์„ฑ์„ ๋™์‹œ์— ํ™•๋ณดํ•˜๊ธฐ ์‰ฝ๋‹ค.

1) BotFather์—์„œ ๋จผ์ € ๋๋‚ด์•ผ ํ•˜๋Š” ์„ค์ •

OpenClaw ์ด์ „์— ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡์˜ ์ˆ˜์‹  ๋ฒ”์œ„๋ฅผ ๋จผ์ € ์žก์•„์•ผ ํ•œ๋‹ค.

1-1. ๋ด‡ ์ƒ์„ฑ

  1. ํ…”๋ ˆ๊ทธ๋žจ์—์„œ @BotFather ์ ‘์†
  2. /newbot
  3. ์ด๋ฆ„/username ์ง€์ •
  4. ํ† ํฐ ๋ฐœ๊ธ‰ ํ›„ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด๊ด€

1-2. ๊ทธ๋ฃน ์šด์˜์šฉ ํ•ต์‹ฌ ํ† ๊ธ€

  • /setjoingroups : ๊ทธ๋ฃน ์ถ”๊ฐ€ ํ—ˆ์šฉ ์—ฌ๋ถ€
  • /setprivacy : Privacy Mode

Privacy Mode ์šด์˜ ๊ธฐ์ค€:

  • ON(๊ธฐ๋ณธ): ๋ฉ˜์…˜/๋ช…๋ น ์ค‘์‹ฌ์œผ๋กœ๋งŒ ์ˆ˜์‹  (์•ˆ์ „)
  • OFF: ๊ทธ๋ฃน ๋ฉ”์‹œ์ง€๋ฅผ ๊ด‘๋ฒ”์œ„ ์ˆ˜์‹  (ํŽธํ•˜์ง€๋งŒ ์žก์Œ/์˜ค์ž‘๋™ ์œ„ํ—˜ ์ฆ๊ฐ€)

Privacy Mode๋ฅผ ๋ฐ”๊ฟจ๋‹ค๋ฉด, ๊ทธ๋ฃน์—์„œ ๋ด‡์„ ์ œ๊ฑฐ ํ›„ ์žฌ์ดˆ๋Œ€ํ•ด์•ผ ๋ฐ˜์˜์ด ๊น”๋”ํ•˜๋‹ค.

2) OpenClaw ํ…”๋ ˆ๊ทธ๋žจ ๊ธฐ๋ณธ ์—ฐ๊ฒฐ

ํ† ํฐ์„ ๋ถ™์ด๊ณ  ๊ฐ€์žฅ ์•ˆ์ „ํ•œ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‹œ์ž‘ํ•œ๋‹ค.

{
  channels: {
    telegram: {
      enabled: true,
      botToken: "123456:ABC...",
      dmPolicy: "pairing",
      groupPolicy: "allowlist",
      groups: {
        "*": { requireMention: true }
      }
    }
  }
}

๋ฐ˜์˜:

openclaw gateway restart
openclaw status --deep

3) DM(1:1) ๊ถŒํ•œ ์„ค์ • โ€” ๋ˆ„๊ตฌ๋ฅผ ๋ฐ›์„์ง€

๊ถŒ์žฅ: pairing

์ฒ˜์Œ ๋ฉ”์‹œ์ง€๋Š” ํŽ˜์–ด๋ง ์ฝ”๋“œ๋กœ ๋Œ€๊ธฐ์‹œํ‚ค๊ณ , ์Šน์ธ๋œ ์‚ฌ์šฉ์ž๋งŒ ์ฒ˜๋ฆฌํ•œ๋‹ค.

openclaw pairing list telegram
openclaw pairing approve telegram <CODE>

๋‹ค๋ฅธ ์„ ํƒ์ง€

  • allowlist: ํŠน์ • ์‚ฌ์šฉ์ž ID๋งŒ ํ—ˆ์šฉ
  • open: ๋ˆ„๊ตฌ๋‚˜ ํ—ˆ์šฉ(์šด์˜์šฉ ๋น„๊ถŒ์žฅ)
  • disabled: DM ๋น„ํ™œ์„ฑ

3-1) DM ์ขŒ์ƒ๋‹จ new chat +๋Š” ๋ˆ„๊ฐ€ ๋งŒ๋“œ๋Š”๊ฐ€ (์ค‘์š”)

๋งŽ์ด ํ—ท๊ฐˆ๋ฆฌ๋Š” ์ง€์ ์ธ๋ฐ, DM ์ขŒ์ƒ๋‹จ new chat +๋Š” BotFather ๊ถŒํ•œ์œผ๋กœ ์ผœ๋Š” ๊ธฐ๋Šฅ์ด ์•„๋‹ˆ๋‹ค. OpenClaw๊ฐ€ ๋ฒ„ํŠผ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๋„ ์•„๋‹ˆ๋‹ค. ์ด ๋ฒ„ํŠผ์€ ํ…”๋ ˆ๊ทธ๋žจ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ œ๊ณตํ•˜๋Š” UI๋‹ค.

์šด์˜ ๊ด€์ ์—์„œ ์ค‘์š”ํ•œ ๊ฑด ๋ฒ„ํŠผ ์ž์ฒด๋ณด๋‹ค message_thread_id๊ฐ€ ๋“ค์–ด์˜ค๋А๋ƒ๋‹ค.

  • message_thread_id๊ฐ€ ์žˆ๋Š” DM ๋ฉ”์‹œ์ง€: OpenClaw๊ฐ€ thread-aware ์„ธ์…˜์œผ๋กœ ๋ถ„๋ฆฌํ•ด ๊ด€๋ฆฌ
  • message_thread_id๊ฐ€ ์—†๋Š” ์ผ๋ฐ˜ DM ๋ฉ”์‹œ์ง€: ๊ธฐ์กด DM ์„ธ์…˜ ๊ทœ์น™(dmScope)์œผ๋กœ ์ฒ˜๋ฆฌ

์ฆ‰, ์ฃผ์ œ๋ณ„ ์ƒˆ ๋Œ€ํ™”๊ฐ€ ์ž๋™ ๋ถ„๋ฆฌ๋˜๋Š” ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด ๊ถŒํ•œ ํ† ๊ธ€๋ณด๋‹ค ๋‹ค์Œ 2๊ฐ€์ง€๋ฅผ ๋งž์ถ”๋ฉด ๋œ๋‹ค.

  1. OpenClaw์—์„œ thread ์ฒ˜๋ฆฌ ํ™œ์„ฑํ™”(session.threadBindings.enabled=true)
  2. ๋‹ค๋ฅธ ๋ด‡/๋ฐฑ์—”๋“œ์—์„œ๋„ ๋‹ต์žฅ ์‹œ ๋™์ผ message_thread_id๋ฅผ ์œ ์ง€

๊ฒ€์ฆ์€ openclaw logs --follow์—์„œ message_thread_id ์œ ์ž… ์—ฌ๋ถ€๋ฅผ ๋จผ์ € ํ™•์ธํ•˜๋Š” ๊ฒŒ ๊ฐ€์žฅ ๋น ๋ฅด๋‹ค.

4) ๊ทธ๋ฃน ๊ถŒํ•œ ์„ค์ • โ€” ์‚ฌ๊ณ ๋ฅผ ์ค„์ด๋Š” ํ•ต์‹ฌ ํฌ์ธํŠธ

๊ทธ๋ฃน์€ ์•„๋ž˜ 4๊ฐ€์ง€๋ฅผ ํ•จ๊ป˜ ๋ด์•ผ ํ•œ๋‹ค.

  1. groups : ํ—ˆ์šฉํ•  ๊ทธ๋ฃน ๋ชฉ๋ก
  2. groupPolicy : ๊ทธ๋ฃน ๋ฐœํ™”์ž ์ •์ฑ… (allowlist | open | disabled)
  3. groupAllowFrom : ๊ทธ๋ฃน์—์„œ ๋ง ๊ฑธ ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž ์ œํ•œ
  4. requireMention : ๋ฉ˜์…˜ํ•ด์•ผ ๋ฐ˜์‘ํ• ์ง€

์‹ค๋ฌด ๊ธฐ๋ณธ ํ…œํ”Œ๋ฆฟ (ํŽธ์˜+์•ˆ์ • ๊ท ํ˜•)

{
  channels: {
    telegram: {
      dmPolicy: "pairing",
      allowFrom: ["YOUR_TELEGRAM_USER_ID"],
 
      groupPolicy: "allowlist",
      groupAllowFrom: ["YOUR_TELEGRAM_USER_ID"],
 
      groups: {
        "*": { requireMention: true },
        "-1001234567890": {
          groupPolicy: "allowlist",
          requireMention: true
        }
      }
    }
  }
}

5) ๊ทธ๋ฃน ์ฃผ์ œ(Forum Topic) ์„ค์ • โ€” ํ† ํ”ฝ๋ณ„ ๋ถ„๋ฆฌ ์šด์˜

ํฌ๋Ÿผํ˜• ๊ทธ๋ฃน์—์„œ๋Š” ํ† ํ”ฝ๋ณ„๋กœ ์ •์ฑ…์„ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

{
  channels: {
    telegram: {
      groups: {
        "-1001234567890": {
          requireMention: true,
          topics: {
            "1": { requireMention: true },
            "12": {
              requireMention: false,
              groupPolicy: "allowlist",
              allowFrom: ["YOUR_TELEGRAM_USER_ID"],
              agentId: "main"
            },
            "34": {
              requireMention: true,
              agentId: "youtube-analyzer"
            }
          }
        }
      }
    }
  }
}

ํ† ํ”ฝ ID ํ™•์ธ์€ ๋ณดํ†ต openclaw logs --follow์—์„œ message_thread_id๋กœ ์žก๋Š”๋‹ค.

6) ํ…”๋ ˆ๊ทธ๋žจ ๊ทธ๋ฃน ๊ถŒํ•œ(๊ด€๋ฆฌ์ž ๊ถŒํ•œ) ์ฒดํฌ

OpenClaw ์„ค์ •์ด ๋งž์•„๋„, ํ…”๋ ˆ๊ทธ๋žจ ๊ทธ๋ฃน ๊ถŒํ•œ์ด ๋ถ€์กฑํ•˜๋ฉด ๋™์ž‘์ด ์ œํ•œ๋œ๋‹ค.

  • ์ผ๋ฐ˜ ๋‹ต๋ณ€: ๋ฉค๋ฒ„ ๊ถŒํ•œ์œผ๋กœ๋„ ์ถฉ๋ถ„ํ•œ ๊ฒฝ์šฐ ๋งŽ์Œ
  • ๊ทธ๋ฃน ์ „์ฒด ๋ฉ”์‹œ์ง€ ์ธ์‹: Privacy Mode OFF ๋˜๋Š” ๊ด€๋ฆฌ์ž ๊ถŒํ•œ ํ•„์š” ๊ฐ€๋Šฅ
  • ํ† ํ”ฝ ์ƒ์„ฑ/๊ด€๋ฆฌ ์ž๋™ํ™”: ํ† ํ”ฝ ๊ด€๋ฆฌ ๊ถŒํ•œ ํ•„์š”
  • ๋ฉ”์‹œ์ง€ ์‚ญ์ œ/์ˆ˜์ • ์ž๋™ํ™”: ํ•ด๋‹น ๊ด€๋ฆฌ ๊ถŒํ•œ ํ•„์š”

๐Ÿง  ์น ํŒ ์น˜ํŠธ์‹œํŠธ

  1. BotFather: /newbot, /setjoingroups, /setprivacy
  2. OpenClaw: botToken + dmPolicy + groupPolicy๋ถ€ํ„ฐ ๊ณ ์ •
  3. ๊ทธ๋ฃน ๊ธฐ๋ณธ์€ allowlist + requireMention=true
  4. ํ† ํ”ฝ์€ groups.<chatId>.topics.<threadId>๋กœ ๋ถ„๋ฆฌ
  5. ๋งˆ์ง€๋ง‰์€ security audit --deep๋กœ ๊ฒ€์ฆ

7) 20๋ถ„ ๋„์ž… ๋ฃจํ‹ด

0~5๋ถ„: ๋ด‡ ์ƒ์„ฑ + BotFather ํ† ๊ธ€

  • /newbot
  • /setjoingroups
  • /setprivacy

5~10๋ถ„: OpenClaw ์—ฐ๊ฒฐ

  • botToken ์ž…๋ ฅ
  • dmPolicy, groupPolicy, groups.*.requireMention ์„ค์ •

10~15๋ถ„: ๊ทธ๋ฃน/ํ† ํ”ฝ ๊ฒ€์ฆ

  • DM 1๊ฑด
  • ๊ทธ๋ฃน ๋ฉ˜์…˜ 1๊ฑด
  • ํ† ํ”ฝ 1๊ฑด

15~20๋ถ„: ์šด์˜ ์ ๊ฒ€

openclaw status --deep
openclaw logs --follow
openclaw security audit --deep

8) ์ž์ฃผ ๋ง‰ํžˆ๋Š” ๋ฌธ์ œ์™€ ์ฆ‰์‹œ ํ™•์ธ ํฌ์ธํŠธ

์ฆ์ƒ A: DM์€ ๋˜๋Š”๋ฐ ๊ทธ๋ฃน์ด ์นจ๋ฌต

  • groups์— ํ•ด๋‹น chat ID๊ฐ€ ์žˆ๋Š”์ง€
  • requireMention์ด true์ธ๋ฐ ์‹ค์ œ ๋ฉ˜์…˜ํ–ˆ๋Š”์ง€
  • BotFather privacy ์ƒํƒœ๊ฐ€ ์˜๋„์™€ ๋งž๋Š”์ง€

์ฆ์ƒ B: ํŠน์ • ํ† ํ”ฝ์—์„œ๋งŒ ๋ฐ˜์‘ ์•ˆ ํ•จ

  • topics.<threadId> ์ˆซ์ž ์ผ์น˜ ํ™•์ธ
  • ํ•ด๋‹น ํ† ํ”ฝ์— allowFrom/groupPolicy ์˜ˆ์™ธ๊ฐ€ ๊ฑธ๋ ค ์žˆ๋Š”์ง€

์ฆ์ƒ C: ์˜ˆ์ „์—” ๋˜๋˜ ํ˜ธ์ถœ์ด ๋ง‰ํž˜

  • groupPolicy=open์—์„œ allowlist๋กœ ๋ฐ”๋€Œ์—ˆ๋Š”์ง€
  • groupAllowFrom ๋ฏธ์„ค์ •์œผ๋กœ ์ฐจ๋‹จ๋˜๋Š”์ง€
  • ๋ณด์•ˆ ์ ๊ฒ€ ๊ฒฐ๊ณผ์—์„œ critical/warn ํ•ญ๋ชฉ ์žฌํ™•์ธ

์ฆ์ƒ D: ๋ฒ„ํŠผ์€ ๋ณด์ด๋Š”๋ฐ ์ฝœ๋ฐฑ(callback)์ด ์•ˆ ์˜ฌ๋ผ์˜ด

๋ฒ„ํŠผ ์ฝœ๋ฐฑ ์ด์Šˆ๋Š” ๋Œ€๋ถ€๋ถ„ ๋ด‡ ๊ณ ์žฅ๋ณด๋‹ค ๊ฒฝ๋กœ/์ •์ฑ…/๊ถŒํ•œ ๋ถˆ์ผ์น˜๋กœ ์ƒ๊ธด๋‹ค. ์•„๋ž˜ ์ˆœ์„œ๋Œ€๋กœ ๋ณด๋ฉด 10๋ถ„ ์•ˆ์— ์›์ธ์„ ์ขํž ์ˆ˜ ์žˆ๋‹ค.

  1. ์ฑ„๋„ ์ƒํƒœ๋ถ€ํ„ฐ ํ™•์ธ
openclaw channels status --probe
  • running, works, audit ok๊ฐ€ ์•„๋‹ˆ๋ฉด gateway ์ƒํƒœ๋ถ€ํ„ฐ ๋ณต๊ตฌํ•œ๋‹ค.
  1. ๊ทธ๋ฃน์—์„œ๋งŒ ์‹คํŒจํ•˜๋ฉด BotFather privacy mode ํ™•์ธ
  • /setprivacy์—์„œ ์šด์˜ ์˜๋„์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ์ ๊ฒ€
  • ๋ณ€๊ฒฝ ํ›„ gateway ์žฌ์‹œ์ž‘
openclaw gateway restart
openclaw channels status --probe
  1. ๊ธฐ๋Šฅ ๊ฒฝ๋กœ ์‹ค์ธก ํ…Œ์ŠคํŠธ
  • ์ „์†ก(send)
  • ์ˆ˜์ •(edit)
  • ๋ฐ˜์‘(react)
  • ์‚ญ์ œ(delete)
  • ๋ฒ„ํŠผ ์ „์†ก ํ›„ callback ์ˆ˜์‹ 

์ด 5๊ฐœ๊ฐ€ ์—ฐ์† ํ†ต๊ณผํ•˜๋ฉด ๋ผ์šฐํŒ…์€ ์ •์ƒ์ด๊ณ , ์ดํ›„ ๋ฌธ์ œ๋Š” ํŠน์ • ๊ทธ๋ฃน/ํ† ํ”ฝ ์ •์ฑ…์œผ๋กœ ์ขํ˜€์„œ ์žก์„ ์ˆ˜ ์žˆ๋‹ค.

๋ฒ„ํŠผ ์ฝœ๋ฐฑ 10๋ถ„ ๋ณต๊ตฌ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

  • openclaw channels status --probe ํ™•์ธ
  • running/works/audit ok ์ƒํƒœ ํ™•์ธ
  • BotFather privacy mode ํ™•์ธ
  • gateway ์žฌ์‹œ์ž‘ ํ›„ ์žฌ๊ฒ€์ฆ
  • callback ํ…Œ์ŠคํŠธ 3ํšŒ ์—ฐ์† ํ†ต๊ณผ

9) ์šด์˜์šฉ ๊ถŒํ•œ ํ”„๋กœํ•„ 3๋‹จ๊ณ„

ํ”„๋กœํ•„ํ•ต์‹ฌ ์„ค์ •์ถ”์ฒœ ์ƒํ™ฉ
๋ณด์ˆ˜ํ˜•pairing + allowlist + requireMention=true์šด์˜๋ฐฉ/์—…๋ฌด๋ฐฉ
๊ท ํ˜•ํ˜•๋ณด์ˆ˜ํ˜• + ์ผ๋ถ€ ํ† ํ”ฝ requireMention=falseํŒ€ ํ˜‘์—… ์‹ค์‚ฌ์šฉ
๊ฐœ๋ฐฉํ˜•groupPolicy=open, ๋ฉ˜์…˜ ์™„ํ™”ํ…Œ์ŠคํŠธ/์ž„์‹œ ์ด๋ฒคํŠธ

๊ฐœ๋ฐฉํ˜•์€ ํŽธํ•˜์ง€๋งŒ, ์žฅ๊ธฐ ์šด์˜ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋‘์ง€ ์•Š๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.

10) ์ตœ์ข… ์ ๊ฒ€ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

  • BotFather ํ† ํฐ ์ •์ƒ
  • /setjoingroups, /setprivacy ํ™•์ธ
  • channels.telegram.botToken ๋ฐ˜์˜
  • DM ์ •์ฑ…(pairing/allowlist) ํ™•์ธ
  • DM thread(message_thread_id) ์œ ์ž…/๋‹ต์žฅ ์œ ์ง€ ํ™•์ธ
  • ๊ทธ๋ฃน ์ •์ฑ…(groupPolicy, groupAllowFrom) ํ™•์ธ
  • ํ† ํ”ฝ ์ •์ฑ…(topics.threadId) ํ™•์ธ
  • openclaw status --deep ์ •์ƒ
  • openclaw security audit --deep critical 0 ๋ชฉํ‘œ

๋‹ค์Œ ์ฝ๊ธฐ

AI ์ƒ์„ฑ ๊ณ ์ง€: ์ด ๋ฌธ์„œ๋Š” OpenClaw/Telegram ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ƒ์„ฑํ˜• AI๋ฅผ ํ™œ์šฉํ•ด ์ž‘์„ฑยทํŽธ์ง‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.