# コマンド変数の一覧

> KickBotのコマンド変数を例つきですべて紹介します。Kickのフォロー期間を表示する{{sender.followage}}から、ランダムな数字、チャット返信でのAPIリクエストまで。

Source: https://kickbot.com/ja/docs/chat-bot/command-variables

変数は、コマンドの返信に入れるプレースホルダーです。コマンドが実行されるたびに、KickBotがその時点の値に置き換えます。たとえば、`!followage`の返信に`{{sender.followage}}`を入れると、視聴者がKickチャンネルをフォローしている期間が投稿されます。変数は、[カスタムコマンド](https://kickbot.com/ja/docs/chat-bot/custom-commands)と[標準コマンド](https://kickbot.com/ja/docs/chat-bot/built-in-commands)の返信で使えます。

変数は、このページのとおりに、両側を波かっこ2つで囲んで書きます。大文字と小文字は区別されます。`{{sender.username}}`は動きますが、`{{Sender.Username}}`は動きません。

## 返信に変数を追加する

1. [カスタムコマンド](https://kickbot.com/dashboard/commands)ページでコマンドを開くか、**コマンドを追加**をクリックします。
2. **返信**欄の下にある**変数を挿入**を使います。グループ（**送信者**、**配信者**、**タグ付きユーザー / パラメーター**、**配信**、**ランダム**、**APIリクエスト**）を選びます。
3. 変数をクリックします。カーソルの位置に変数が追加されます。

**Kickチャット**のプレビューにはサンプルの値が表示されるので、保存する前に返信を確認できます。

![「変数を挿入」メニューで「配信」グループを開いたところ。フォロー期間、カテゴリー、視聴者数のサンプル値が入ったプレビュー](https://kickbot.com/docs/images/chat-bot/command-variables/01-variables.webp "プレビューにはサンプルの値が入ります。チャットでは、KickBotが実際の値を使います。")

以下の例では、yourchannelというチャンネルにいるKickBotDevという視聴者を使っています。

## 送信者

コマンドを入力した視聴者です。

| 変数 | 投稿される内容 | 出力の例 |
| --- | --- | --- |
| `{{sender.username}}` | チャンネルのリンクと同じ視聴者の名前（小文字） | `kickbotdev` |
| `{{sender.followers}}` | 視聴者自身のチャンネルのフォロワー数 | `128` |
| `{{sender.followage}}` | 視聴者があなたのチャンネルをフォローしている期間 | `4 months 12 days` |
| `{{sender.url}}` | 視聴者のKickチャンネルへのリンク | `https://kick.com/kickbotdev` |
| `{{sender.bio}}` | 視聴者のKickプロフィールの自己紹介 | `大阪から雑談とゲーム配信してます` |
| `{{sender.instagram}}` | 視聴者のKickプロフィールにあるInstagramの名前 | `yourhandle` |
| `{{sender.twitter}}` | 視聴者のKickプロフィールにあるX（Twitter）の名前 | `yourhandle` |
| `{{sender.youtube}}` | 視聴者のKickプロフィールにあるYouTube | `yourhandle` |
| `{{sender.discord}}` | 視聴者のKickプロフィールにあるDiscord | `discord.gg/your-server-code` |
| `{{sender.tiktok}}` | 視聴者のKickプロフィールにあるTikTokの名前 | `yourhandle` |
| `{{sender.facebook}}` | 視聴者のKickプロフィールにあるFacebookの名前 | `yourhandle` |

### Kickのフォロー期間

視聴者がチャンネルをフォローしていない場合、KickBotは返信の代わりに`@kickbotdev is not following @yourchannel`と投稿します。

標準の`!followage`コマンドはこの変数を使っています。返信は`@{{sender.username}} has been following for {{sender.followage}}`なので、チャットでは`@kickbotdev has been following for 4 months 12 days`と表示されます。

## 配信者

チャンネルのオーナーである、あなた自身です。

| 変数 | 投稿される内容 | 出力の例 |
| --- | --- | --- |
| `{{streamer.username}}` | チャンネルのリンクと同じチャンネル名 | `yourchannel` |
| `{{streamer.followers}}` | フォロワー数 | `2450` |
| `{{streamer.url}}` | Kickチャンネルへのリンク | `https://kick.com/yourchannel` |
| `{{streamer.bio}}` | Kickの自己紹介 | `毎晩まったり配信中` |
| `{{streamer.instagram}}` | KickプロフィールにあるInstagramの名前 | `yourhandle` |
| `{{streamer.twitter}}` | KickプロフィールにあるX（Twitter）の名前 | `yourhandle` |
| `{{streamer.youtube}}` | KickプロフィールにあるYouTube | `yourhandle` |
| `{{streamer.discord}}` | KickプロフィールにあるDiscord | `discord.gg/your-server-code` |
| `{{streamer.tiktok}}` | KickプロフィールにあるTikTokの名前 | `yourhandle` |
| `{{streamer.facebook}}` | KickプロフィールにあるFacebookの名前 | `yourhandle` |

> **Caution:** プロフィールの変数（自己紹介、Instagram、X、YouTube、Discord、TikTok、Facebook）は、Kickのプロフィールから読み取ります。プロフィールのその欄が空だと、変数はそのままのテキストで返信に残ります（例：`{{streamer.tiktok}}`）。その欄が入力されているプロフィールにだけ使ってください。

## タグ付きユーザーとパラメーター

視聴者がコマンドのあとに入力したテキストや名前です。たとえば、視聴者が`!so @SomeChannel`や`!hug @friend`と入力した場合です。

| 変数 | 投稿される内容 | `!so @SomeChannel great stream`の場合の例 |
| --- | --- | --- |
| `{{param}}` | コマンドのあとのテキストすべて | `@SomeChannel great stream` |
| `{{taggedUser.username}}` | 最初の`@`のあとの名前 | `SomeChannel` |
| `{{taggedUser.url}}` | タグ付けされたチャンネルへのリンク | `https://kick.com/SomeChannel` |
| `{{taggedUser.followers}}` | タグ付けされたチャンネルのフォロワー数 | `57` |
| `{{taggedUser.followage}}` | タグ付けされた視聴者があなたのチャンネルをフォローしている期間 | `2 months 3 days` |

タグ付けされたユーザーにも、プロフィールの変数があります：`{{taggedUser.bio}}`、`{{taggedUser.instagram}}`、`{{taggedUser.twitter}}`、`{{taggedUser.youtube}}`、`{{taggedUser.discord}}`、`{{taggedUser.tiktok}}`、`{{taggedUser.facebook}}`。

視聴者が誰もタグ付けしなかった場合、`{{taggedUser.username}}`は空になります。タグ付けされた名前がKickチャンネルでない場合、情報を取得する変数（フォロワー数、自己紹介などのプロフィールの欄）は使えず、KickBotは返信の代わりに`404 tagged user not found`と投稿します。

例：標準の`!so`（シャウトアウト）コマンドの返信は`Go check @{{taggedUser.username}}'s channel! {{taggedUser.url}}`です。

## 配信

現在の配信です。これらの変数は配信中に使えます。

| 変数 | 投稿される内容 | 出力の例 |
| --- | --- | --- |
| `{{stream.title}}` | 配信タイトル | `まったり雑談、気軽に来てね` |
| `{{stream.category}}` | 配信のカテゴリー | `Just Chatting` |
| `{{stream.viewers}}` | 現在の視聴者数 | `342` |

オフラインのときはKickBotが配信を読み取れないので、これらの変数を使ったコマンドは通常の返信を投稿しません。代わりに`404 stream not found`と投稿されることがあります。

## ランダム

ゲームやお遊び系のコマンドに使います。実行するたびに新しい値が選ばれます。

| 変数 | 投稿される内容 | 出力の例 |
| --- | --- | --- |
| `{{randomRange(1,100)}}` | 1つ目の数から2つ目の数までの整数（両端を含む） | `42` |
| `{{randomItem("rock","paper","scissors")}}` | リストから1つ。どれも同じ確率で選ばれます | `paper` |
| `{{randomItemPercentage("common":70,"rare":25,"legendary":5)}}` | リストから1つ。項目ごとに指定した確率で選ばれます | `common` |

ルール：

- `randomRange`には、0以上の整数を2つ指定します。1つ目は2つ目より大きくできません。
- 各項目は半角のダブルクォーテーション（`"`）で囲み、カンマで区切ります。項目にはスペースを入れられます（例：`"Ask again later"`）。
- `randomItemPercentage`では、コロンのすぐあとにスペースなしで数字を書きます。数字は重みです。70、25、5の場合、1つ目の項目は100回中およそ70回選ばれます。`randomItemPercentage`は**変数を挿入**メニューにはありません。自分で入力してください。

## APIリクエスト

`{{request("https://...")}}`は、Webアドレス（API）からデータを取得して返信に入れます。ジョーク、ゲームのランクなど、公開APIが返すものなら何でも表示できます。

```text
{{request("https://uselessfacts.jsph.pl/api/v2/facts/random").text}}
```

KickBotがアドレスを開き、JSONの応答を読んで、`text`フィールドを投稿します。たとえば`The praying mantis is the only insect that can turn its head`のように投稿されます。

しくみ：

- **フィールドを選ぶ。** 閉じかっこのあとにパスを付けます。名前にはドット、リストの項目には`[0]`を使います（例：`.data[0].name`）。パスがない場合や、パスが応答にない場合は、応答全体が投稿されます。
- **アドレスに変数を使う。** たとえば`{{request("https://example.com/rank?user={{sender.username}}").rank}}`です。KickBotが値を入れ、Webアドレスで使える形に変換します（スペースは`%20`になります）。リクエストの中にリクエストを入れることはできません。
- **GETリクエストのみ。** KickBotはボディやヘッダーを送れません。APIにキーが必要な場合は、クエリパラメーターとしてアドレスに入れてください。
- **制限。** 使えるのは、公開インターネット上の`http`と`https`のアドレスだけです。KickBotが応答を待つのは最大3秒なので、短い応答をすばやく返すAPIを使ってください。

> **Caution:** コマンドの設定を見られる人なら誰でも、アドレスに入れたAPIキーを見られます。公開データを読むだけのキーを使ってください。

## そのほかの変数

次の変数は使えますが、**変数を挿入**メニューにはありません。

| 変数 | 投稿される内容 | 出力の例 |
| --- | --- | --- |
| `{{user}}` | 大文字を含む視聴者の名前 | `KickBotDev` |
| `{{sender.fullUsername}}` | 先頭に`@`が付いた視聴者の名前 | `@KickBotDev` |
| `{{commands}}` | オンになっているすべてのコマンド（カンマ区切り） | `commands, followage, lurk, me, so, welcome, discord` |

標準の`!commands`コマンドは`{{commands}}`を使っています。返信は`Enabled commands: {{commands}}`です。

## よくある間違い

- **波かっこが2つではなく1つ。** `{sender.username}`はそのままテキストとして残ります。`{{sender.username}}`と書いてください。
- **名前のつづりが違う。** `{{sender.name}}`のような存在しない変数があると、コマンドは返信を投稿しません。このページと見比べて、つづりを確認してください。
- **曲がったクォーテーション。** `randomItem`と`request`には、半角のまっすぐなクォーテーション（`"`）が必要です。スマホやテキストエディターによっては、曲がったクォーテーション（`“ ”`）に変わってしまいます。念のため、ダッシュボードで直接入力してください。

## よくある質問

**Kickでフォロー期間を表示するコマンドを作るには？**

KickBotには、どのチャンネルでもオンになっている標準の`!followage`コマンドがあります。自分で作る場合は、`@{{sender.username}} has followed for {{sender.followage}}`のような返信でコマンドを追加します。

**コマンドに視聴者の名前を表示するには？**

チャンネルのリンクと同じ名前なら`{{sender.username}}`、大文字を含む名前なら`{{user}}`を使います。Kickでメンションとして表示したい場合は、`@{{sender.username}}`のように前に`@`を付けます。

**コマンドで視聴者数や配信タイトルを表示できますか？**

はい。`{{stream.viewers}}`と`{{stream.title}}`を使います。配信中に使えます。
