# ตัวแปรคำสั่งของ KickBot (followage, สุ่ม, API)

> ตัวแปรคำสั่งทั้งหมดของ KickBot พร้อมตัวอย่าง ตั้งแต่ {{sender.followage}} สำหรับ followage บน Kick ไปจนถึงเลขสุ่มและคำขอ API ในข้อความตอบในแชท

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

ตัวแปรคือตัวยึดตำแหน่งในข้อความตอบของคำสั่ง ทุกครั้งที่คำสั่งทำงาน KickBot จะใส่ค่าจริงในขณะนั้นแทน เช่น ข้อความตอบของ `!followage` ที่มี `{{sender.followage}}` จะโพสต์ว่าผู้ชมติดตามช่อง Kick ของคุณมานานแค่ไหน ตัวแปรใช้ได้ใน[คำสั่งที่กำหนดเอง](https://kickbot.com/th/docs/chat-bot/custom-commands)และในข้อความตอบของ[คำสั่งในตัว](https://kickbot.com/th/docs/chat-bot/built-in-commands)

เขียนตัวแปรแต่ละตัวด้วยวงเล็บปีกกาสองชั้นทั้งสองข้าง ตามที่แสดงในหน้านี้ทุกตัวอักษร ตัวพิมพ์ใหญ่และเล็กมีผล: `{{sender.username}}` ใช้ได้ แต่ `{{Sender.Username}}` ใช้ไม่ได้

## เพิ่มตัวแปรลงในข้อความตอบ

1. เปิดคำสั่งในหน้า[คำสั่งที่กำหนดเอง](https://kickbot.com/dashboard/commands) หรือคลิก **เพิ่มคำสั่ง**
2. ใต้กล่อง **คำตอบ** ใช้ **แทรกตัวแปร** เลือกกลุ่ม (**ผู้ส่ง** **สตรีมเมอร์** **ผู้ใช้ที่แท็ก / พารามิเตอร์** **สตรีม** **สุ่ม** หรือ **คำขอ API**)
3. คลิกตัวแปร KickBot จะใส่ตัวแปรตรงตำแหน่งเคอร์เซอร์

ตัวอย่าง **ในแชท Kick** จะแสดงค่าตัวอย่าง คุณจึงเช็กข้อความตอบได้ก่อนบันทึก

![เมนูแทรกตัวแปรที่เปิดกลุ่มสตรีมอยู่ และตัวอย่างที่มีค่าตัวอย่างของ followage หมวดหมู่ และจำนวนผู้ชม](https://kickbot.com/docs/images/chat-bot/command-variables/01-variables.webp "ตัวอย่างจะใส่ค่าตัวอย่างให้ ส่วนในแชท KickBot จะใช้ค่าจริง")

ตัวอย่างด้านล่างใช้ผู้ชมชื่อ KickBotDev ในช่องชื่อ yourchannel

## ผู้ส่ง

ผู้ชมที่พิมพ์คำสั่ง

| ตัวแปร | โพสต์อะไร | ตัวอย่างผลลัพธ์ |
| --- | --- | --- |
| `{{sender.username}}` | ชื่อผู้ชมตามลิงก์ช่อง (ตัวพิมพ์เล็ก) | `kickbotdev` |
| `{{sender.followers}}` | จำนวนผู้ติดตามของช่องผู้ชมเอง | `128` |
| `{{sender.followage}}` | ผู้ชมติดตามช่องของคุณมานานแค่ไหน | `4 months 12 days` |
| `{{sender.url}}` | ลิงก์ไปที่ช่อง Kick ของผู้ชม | `https://kick.com/kickbotdev` |
| `{{sender.bio}}` | ไบโอในโปรไฟล์ Kick ของผู้ชม | `Variety streamer from Texas` |
| `{{sender.instagram}}` | ชื่อ Instagram ในโปรไฟล์ Kick ของผู้ชม | `yourhandle` |
| `{{sender.twitter}}` | ชื่อ X (Twitter) ในโปรไฟล์ Kick ของผู้ชม | `yourhandle` |
| `{{sender.youtube}}` | YouTube ในโปรไฟล์ Kick ของผู้ชม | `yourhandle` |
| `{{sender.discord}}` | Discord ในโปรไฟล์ Kick ของผู้ชม | `discord.gg/your-server-code` |
| `{{sender.tiktok}}` | ชื่อ TikTok ในโปรไฟล์ Kick ของผู้ชม | `yourhandle` |
| `{{sender.facebook}}` | ชื่อ Facebook ในโปรไฟล์ Kick ของผู้ชม | `yourhandle` |

### Followage บน 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 ของคุณ | `Chill streams every night` |
| `{{streamer.instagram}}` | ชื่อ Instagram ในโปรไฟล์ Kick ของคุณ | `yourhandle` |
| `{{streamer.twitter}}` | ชื่อ X (Twitter) ในโปรไฟล์ Kick ของคุณ | `yourhandle` |
| `{{streamer.youtube}}` | YouTube ในโปรไฟล์ Kick ของคุณ | `yourhandle` |
| `{{streamer.discord}}` | Discord ในโปรไฟล์ Kick ของคุณ | `discord.gg/your-server-code` |
| `{{streamer.tiktok}}` | ชื่อ TikTok ในโปรไฟล์ Kick ของคุณ | `yourhandle` |
| `{{streamer.facebook}}` | ชื่อ Facebook ในโปรไฟล์ Kick ของคุณ | `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}}` | ชื่อสตรีมของคุณ | `Chill stream, come hang out` |
| `{{stream.category}}` | หมวดหมู่สตรีมของคุณ | `Just Chatting` |
| `{{stream.viewers}}` | จำนวนผู้ชมตอนนี้ | `342` |

ระหว่างที่คุณออฟไลน์ KickBot อ่านข้อมูลสตรีมไม่ได้ คำสั่งที่มีตัวแปรเหล่านี้จึงจะไม่โพสต์ข้อความตอบตามปกติ แต่อาจโพสต์ `404 stream not found` แทน

## สุ่ม

ใช้กับเกมและคำสั่งสนุก ๆ ทุกครั้งที่ใช้คำสั่งจะได้ค่าใหม่

| ตัวแปร | โพสต์อะไร | ตัวอย่างผลลัพธ์ |
| --- | --- | --- |
| `{{randomRange(1,100)}}` | จำนวนเต็มตั้งแต่ตัวเลขแรกถึงตัวเลขที่สอง รวมทั้งสองตัว | `42` |
| `{{randomItem("rock","paper","scissors")}}` | 1 รายการจากลิสต์ ทุกรายการมีโอกาสเท่ากัน | `paper` |
| `{{randomItemPercentage("common":70,"rare":25,"legendary":5)}}` | 1 รายการจากลิสต์ ตามโอกาสที่คุณกำหนดให้แต่ละรายการ | `common` |

กฎ:

- `randomRange` รับจำนวนเต็ม 2 ตัวที่มีค่า 0 ขึ้นไป ตัวแรกต้องไม่มากกว่าตัวที่สอง
- ใส่แต่ละรายการในเครื่องหมายคำพูดแบบตรง (`"`) คั่นด้วยจุลภาค รายการมีเว้นวรรคได้ เช่น `"Ask again later"`
- ใน `randomItemPercentage` ให้ใส่ตัวเลขต่อจากโคลอนทันที ไม่ต้องเว้นวรรค ตัวเลขคือน้ำหนัก ถ้าใช้ 70, 25 และ 5 รายการแรกจะออกประมาณ 70 ครั้งใน 100 ครั้ง `randomItemPercentage` ไม่มีในเมนู **แทรกตัวแปร** ต้องพิมพ์เอง

## คำขอ API

`{{request("https://...")}}` ดึงข้อมูลจากที่อยู่เว็บ (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`

วิธีการทำงาน:

- **เลือกฟิลด์** ใส่ path ต่อท้ายวงเล็บปิด ใช้จุดสำหรับชื่อ และ `[0]` สำหรับรายการในลิสต์ เช่น `.data[0].name` ถ้าไม่ใส่ path หรือ path นั้นไม่มีในคำตอบ KickBot จะโพสต์คำตอบทั้งหมด
- **ใช้ตัวแปรในที่อยู่ได้** เช่น `{{request("https://example.com/rank?user={{sender.username}}").rank}}` KickBot จะใส่ค่าให้และแปลงให้ปลอดภัยสำหรับที่อยู่เว็บ (เว้นวรรคจะกลายเป็น `%20`) ใส่คำขอซ้อนในคำขอไม่ได้
- **ใช้ได้แค่คำขอแบบ GET** KickBot ส่ง body หรือ header ไม่ได้ ถ้า API ต้องใช้คีย์ ให้ใส่คีย์ในที่อยู่เป็น query parameter
- **ขีดจำกัด** ใช้ได้เฉพาะที่อยู่ `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}}`

## ข้อผิดพลาดที่พบบ่อย

- **ใช้วงเล็บชั้นเดียวแทนสองชั้น** `{sender.username}` จะค้างเป็นข้อความ ให้ใช้ `{{sender.username}}`
- **สะกดชื่อผิด** ตัวแปรที่ไม่รู้จัก เช่น `{{sender.name}}` จะทำให้คำสั่งไม่โพสต์ข้อความตอบ เช็กการสะกดกับหน้านี้
- **เครื่องหมายคำพูดแบบโค้ง** `randomItem` และ `request` ต้องใช้เครื่องหมายคำพูดแบบตรง (`"`) มือถือและโปรแกรมแก้ข้อความบางตัวเปลี่ยนเป็นแบบโค้ง (`“ ”`) ให้อัตโนมัติ พิมพ์ในแดชบอร์ดโดยตรงจะปลอดภัยกว่า

## คำถามที่พบบ่อย

**ทำคำสั่ง followage บน Kick ยังไง?**

KickBot มีคำสั่งในตัว `!followage` ที่เปิดให้ทุกช่องอยู่แล้ว ถ้าจะทำเอง ให้เพิ่มคำสั่งที่มีข้อความตอบแบบ `@{{sender.username}} has followed for {{sender.followage}}`

**แสดงชื่อผู้ชมในคำสั่งยังไง?**

ใช้ `{{sender.username}}` สำหรับชื่อตามลิงก์ช่อง หรือ `{{user}}` สำหรับชื่อตามตัวพิมพ์ใหญ่เล็กจริง ใส่ `@` ข้างหน้าถ้าอยากให้ Kick แสดงเป็นการแท็ก เช่น `@{{sender.username}}`

**คำสั่งแสดงจำนวนผู้ชมหรือชื่อสตรีมได้ไหม?**

ได้ ใช้ `{{stream.viewers}}` และ `{{stream.title}}` ใช้ได้ระหว่างที่คุณกำลังไลฟ์
