【Carl-bot】既存のリアクションロール機能に新規のロールと説明を追加する方法

# 概要
DiscordのサーバーにCarl-botを用いたロール自動付与機能を導入しました。

付与したいロールが増えたので、とりあえずググって「+ Create new reaction role」ボタンのEditをクリックしてロールの付与を...と思ったのですがクリックしても編集画面が出てこない状態に突然陥ってしまいました...（下画像の画面）

この記事では、以下の2点の方法について記します
1. 既存リアクションロール機能に新規のロールを渡せるように設定する
2. 既存リアクションロール機能の埋め込み説明文を編集する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117529/4499e43e-5bab-5467-5b46-828838b374f5.png)
# 目標
これを
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117529/6615c28d-9671-4061-913d-ce325cec010e.png)
こうする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117529/d2b127ea-c03f-aa40-a099-6c3260d060b2.png)

# 手順１
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117529/6615c28d-9671-4061-913d-ce325cec010e.png)
ターゲットのリアクションロール機能を用意します。
追加するロールは、必ず事前に作成し、権限設定を済ませましょう。

:::note warn
追加するロールは、「carl-bot」ロールよりも下位のロールである必要があります。
:::


:one:の絵文字に「ロールA」ロールが紐づけられている状態です。
ここに、:two:「ロールB」のペアを紐づけます。
## 1. /reactionrole showコマンドを実行
チャットに```/reactionrole show```を打ち込みTabキー
現在サーバーで稼働しているリアクションロール機能の一意のIDが返されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117529/db3e4588-303d-8cfa-626a-413576f64156.png)

## 2. /reactionrole addコマンドを実行
チャットに```/reactionrole add```を打ち込み実行。
* message_id部に、「手順1.で確認した対象のID」を
* emoji部に、設定したい絵文字を
* roleに、事前に作成しておいた追加したいロール
を指定し、実行。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117529/7f8ca73f-503a-f526-3a28-f0c30846b888.png)

対象のリアクションロール機能に:two: ロールBを追加することができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117529/e839840c-abdd-5375-f5e8-a39e3fdf0c2e.png)
:two:のリアクションをクリックして、自分にロールBのロールが付与されたことを確認しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117529/b74e62d2-130b-d5b1-96cd-c0ee75be6325.png)

## 手順２
先ほどのリアクションロール機能の、メッセージ埋め込み部の内容を編集します。
ここです👇
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117529/2a00cf47-d605-de6d-d968-6b0b834abe58.png)
## 1. embedsourceコマンドで埋め込みのコンテンツとレイアウトをjsonで取得
チャットに ```!embedsource　[対象のメッセージID]``` を入力し実行。
jsonが出力されます。コピーして控えておきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117529/87a0ed62-f2a2-4ac4-90d7-1b2da421ff0b.png)

## 2. Carl-botダッシュボードで埋め込みコンテンツを編集する
### jsonの読み込み
[Carl-botのサーバー管理画面](https://carl.gg/ "Carl-bot
Dashboard")を開き、左のメニュー->Embedsへ移動。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117529/9c47f3a5-83f0-81cf-63a8-b9e466a2bf0b.png)
1.でコピーしたjsonを、右上のPreviewウィンドウの```Raw JSON```に張り付け、Applyをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117529/58e46c20-7a25-81bf-8bdd-61a247344973.png)

先ほどの埋め込みコンテンツの内容がエディターに反映されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117529/aeef2702-531f-274e-6379-fc8937b286d1.png)
### 埋め込みコンテンツの編集
エディターでコンテンツを編集します。今回はこのように編集しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117529/e75bec32-da5d-8f86-9b2e-74e9c3badba8.png)
Previewウィンドウの```Copy to clipboard```をクリックし、jsonをコピー。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117529/538037f8-b7d2-9a39-84e6-eac83a3ca20e.png)

## 3. Discordでメッセージにjsonを適用
チャットに```!ecembed [対象のメッセージID] [2.で作成したjson]``` を記入し実行。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117529/f331690b-6d3e-fe14-3c08-91188b137a6e.png)
```Edited message!```が表示され、対象のリアクションロール機能が編集されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117529/17d7b3f1-6964-4d25-2301-1e46133535eb.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117529/7e6e192c-208d-259f-4557-43d7c4b05022.png)

# おわりに
以上が、Carl-botのリアクションロール機能がDashboardで編集できなくなったときのコマンドでの対処法です。
かなり困っていたのですが、対処法を見つけられてよかったと感じています。
お役に立てば幸いです。

# 参考サイト

### Reaction Roles
https://docs.carl.gg/roles/reaction-roles/

### 埋め込みの編集
https://docs.carl.gg/utilities/embeds/#embed-commands:~:text=mm%2DddTHH%3AMM%3ASS.000Z-,%E5%9F%8B%E3%82%81%E8%BE%BC%E3%81%BF%E3%81%AE%E7%B7%A8%E9%9B%86,-%E5%9F%8B%E3%82%81%E8%BE%BC%E3%81%BF