OpenClaw Discord絵文字スキル開発記 - ユーザー承認ワークフローの実装
OpenClaw AIエージェントでDiscordの絵文字リアクションを検知してユーザーの意思決定を受け取るスキルを開発し、GitHubにアップロードした経験記。ClawdHubのデプロイ過程で遭遇した問題と解決策も共有。
この記事はAIによって韓国語から機械翻訳されています。原文と表現が異なる場合があります。
原文(韓国語)を読むはじめに
AIエージェントを使っていると「これ、本当に実行していいのか?」という瞬間が訪れる。特にツイートの投稿、メールの送信、ファイルの削除のような取り返しのつかない操作ではなおさらだ。
そこで作った。Discordの絵文字リアクションでユーザーの承認を得るスキルを。
📸 Discordで 1️⃣ 2️⃣ 3️⃣ 🔥 ❌ の絵文字が付いたメッセージの例
問題の定義
OpenClawで「アルファハンター」というクリプト相場の自動Twitterボットを作っていた。AIがニュースを収集してツイート候補を生成するところまでは良いのだが、問題は承認なしにいきなり投稿してはいけないということ。
従来の方式の限界:
- ✅/❌ の絵文字を使うと、Discordで見切れてしまい表示されない
- 複数の候補の中から選択するのが難しい
- 承認なしに投稿されてしまうケースが発生
解決策: 数字絵文字の承認システム
設計原則

実装コード (approval_workflow.py)
class ApprovalManager:
"""승인 워크플로우 관리자"""
EMOJI_MAP = {
'1️⃣': 0,
'2️⃣': 1,
'3️⃣': 2,
'🔥': 'all',
'❌': 'reject'
}
def __init__(self):
self.pending = {} # message_id -> candidates
self.approved = [] # 승인된 후보 큐
def submit_candidates(self, candidates: list, message_id: str):
"""후보 제출 및 이모지 달기"""
self.pending[message_id] = {
'candidates': candidates,
'submitted_at': datetime.now(),
'expires_at': datetime.now() + timedelta(hours=24)
}
return self.EMOJI_MAP.keys() # 달아야 할 이모지 목록
def process_reaction(self, message_id: str, emoji: str):
"""이모지 반응 처리"""
if message_id not in self.pending:
return None
action = self.EMOJI_MAP.get(emoji)
candidates = self.pending[message_id]['candidates']
if action == 'all':
self.approved.extend(candidates)
elif action == 'reject':
del self.pending[message_id]
elif isinstance(action, int) and action < len(candidates):
self.approved.append(candidates[action])
return self.approvedDiscord連携
OpenClawの message ツールで絵文字を付ける:
# 후보 전송 후 이모지 달기
message_id = send_candidates_to_discord(candidates)
for emoji in ['1️⃣', '2️⃣', '3️⃣', '🔥', '❌']:
message(
action='react',
channel='discord',
messageId=message_id,
emoji=emoji
)GitHubへのアップロード
スキルの開発が完了したら、GitHubにアップロードする必要がある。OpenClawのスキルは次の構造に従う:
skills/
└── discord-emoji-approval/
├── SKILL.md # 스킬 문서
├── scripts/
│ └── approval_workflow.py
└── config.json # 설정SKILL.mdの作成
# Discord Emoji Approval Skill
디스코드 이모지 반응으로 사용자 승인을 받는 스킬.
## 사용법
1. 후보를 디스코드로 전송
2. 이모지 5개 달기 (1️⃣ 2️⃣ 3️⃣ 🔥 ❌)
3. 사용자가 이모지 클릭
4. 승인된 후보만 실행
## 의존성
- OpenClaw message 도구 (react 액션)Gitのコミット & プッシュ
cd ~/.openclaw/workspace/skills/discord-emoji-approval
git add .
git commit -m "feat: 디스코드 이모지 승인 스킬 추가"
git push origin mainClawdHubへのデプロイ試行 (失敗)
ClawdHub はOpenClawのスキルマーケットプレイスだ。作ったスキルを共有できる。
デプロイの試行
clawdhub publish ./skills/discord-emoji-approval発生したエラー
Error: Unable to connect to clawdhub.com
Status: 503 Service Unavailableサービスが一時的に不安定な状態だった。後で再度試すことにする。
代替案: GitHubから直接インストール
ClawdHubがダメなら、GitHubのURLで直接インストールできる:
# 다른 사람이 설치할 때
git clone https://github.com/arang/openclaw-skills.git
cp -r openclaw-skills/discord-emoji-approval ~/.openclaw/workspace/skills/教訓
1. ユーザーの承認は必須
AIがどれだけ賢くても、取り返しのつかない操作は人間が確認する必要がある。
2. 絵文字は直感的
テキストで「1番を選択してください」と書くより、1️⃣ の絵文字のほうがはるかに速い。
3. キューイングシステムが必要
複数を選択した際に同時に実行すると、rate limitに引っかかる。順次実行が安全。
4. オフラインフォールバック
ClawdHubのような外部サービスが使えない場合に備えて、GitHubからの直接インストール方法も文書化しておこう。
おわりに
このスキルのおかげで、アルファハンターボットは「AIが勝手にツイートを投稿する危険なボット」から「人間が承認したらツイートする安全なボット」へと変わった。
次回は、実際にこの承認システムを活用して自己発展するAIエージェントを作った経験を共有する。
関連リンク:
コメント