ฟังก์ชันสามารถเรียกใช้ได้ในฟิลด์ Variables ของบล็อก หรือโดยตรงในข้อความตอบกลับโดยใช้ #{...}:
#{discord_add_role(message_from, '1465674567090704592')}
ID ของเซิร์ฟเวอร์ Discord, แชนเนล, บทบาท และข้อความเป็นค่าตัวเลขยาว วิธีที่ง่ายที่สุดในการคัดลอกคือเปิด Settings → Advanced → Developer Mode หลังจากนั้น ตัวเลือก Copy ID จะปรากฏในเมนูบริบทของวัตถุใดๆ
การเชื่อมต่อบอทอธิบายไว้ในบทความ How to Create a Chatbot in Discord
จะหา ID ข้อความได้ที่ไหน
ID ของข้อความที่ทริกเกอร์บล็อกจะถูกเก็บไว้ในตัวแปร discord_message_id คุณไม่จำเป็นต้องดึงข้อมูลแยกต่างหาก:
#{discord_delete_message(discord_message_id)}
หากคุณต้องการข้อมูลที่ไม่มีในตัวแปรที่กำหนดไว้ล่วงหน้า webhook แบบเต็มจะพร้อมใช้งานในตัวแปร discord_webhook ตัวแปรนี้จะถูกเติมเมื่อมีการกำหนดค่าใดๆ ให้กับตัวแปร save_webhook:
data = discord_webhook["data"]
msg_id = data["id"]
result = discord_reply_to_message(msg_id, "นี่คือการตอบกลับข้อความ")
ตัวแปรที่สร้างขึ้นโดยอัตโนมัติ
ตัวแปรเหล่านี้จะถูกเติมโดยอัตโนมัติสำหรับแต่ละอีเวนต์และไม่ต้องการการกำหนดค่าเพิ่มเติมใดๆ
| ตัวแปร | คำอธิบาย | ตัวอย่าง |
|---|---|---|
guild_id |
ID เซิร์ฟเวอร์ | 1465674567090704591 |
discord_event |
ประเภทอีเวนต์เป็นคำเดียว | message |
discord_message_id |
ID ข้อความที่มีคำนำหน้า mid
|
mid1465674569095319625 |
message_from |
ID ผู้เขียนอีเวนต์ที่มีคำนำหน้า uid
|
uid413984787162726410 |
from_username |
ชื่อผู้ใช้ Discord ของผู้เขียน | 00rei |
from_name |
ชื่อที่แสดงของผู้เขียนในแชท | Rus |
username |
ชื่อผู้ใช้สำหรับข้อความโดยตรงถึงบอท | 00rei |
is_bot |
1 หากผู้เขียนอีเวนต์เป็นบอทอื่น |
0 |
nickname |
ชื่อเล่นบนเซิร์ฟเวอร์; ว่างหากไม่ได้ตั้งค่า | Moderator |
roles |
รายการ ID บทบาทของผู้เขียน | ["1465674567090704592"] |
is_admin |
1 หากผู้ใช้เป็นผู้ดูแลระบบหรือเจ้าของเซิร์ฟเวอร์ |
1 |
reply_from |
ID ของผู้เขียนข้อความที่กำลังตอบกลับ | uid493121376652230668 |
reply_from_username |
ชื่อผู้ใช้ของผู้เขียนที่กำลังตอบกลับ | _deikin |
reply_from_name |
ชื่อที่แสดงของผู้เขียนที่กำลังตอบกลับ | Rus |
reply_to_bot |
1 หากการตอบกลับถึงบอท |
0 |
reply_message_id |
ID ของข้อความที่กำลังตอบกลับ | mid1534837349219958804 |
reply_text |
ข้อความของข้อความที่กำลังตอบกลับ | ใครอยู่เวรวันนี้? |
คำนำหน้า uid, cid และ mid เป็นส่วนหนึ่งของค่า ส่งตัวแปรเหล่านี้ไปยังฟังก์ชันตามที่เป็นอยู่ คุณไม่จำเป็นต้องลบคำนำหน้า
from_name เทียบกับ from_username
from_name มีชื่อที่ควรใช้เพื่อเรียกผู้ใช้ในแชท:
- ชื่อเล่นบนเซิร์ฟเวอร์ หากตั้งค่าไว้
- ชื่อที่แสดงของบัญชี
- ชื่อผู้ใช้
นี่คือตัวแปรที่แนะนำให้ใช้ในการทักทาย เนื่องจาก from_username อาจดูเหมือน _deikin หรือ 00rei
ตัวแปร reply_* จะถูกเติมเมื่อข้อความขาเข้าเป็นการตอบกลับข้อความอื่นเท่านั้น สำหรับข้อความปกติ ตัวแปรทั้งหมดจะถูกล้าง
ดังนั้น เงื่อนไขต่อไปนี้สามารถแยกแยะการตอบกลับจากข้อความปกติได้อย่างน่าเชื่อถือ:
#{reply_from != ''}
ตัวแปร nickname, roles และ is_admin อ้างถึงผู้เขียนอีเวนต์ปัจจุบัน
Discord ไม่ได้ให้ข้อมูลนี้สำหรับอีเวนต์รีแอคชัน ดังนั้นการตรวจสอบผู้ดูแลระบบควรดำเนินการในอีเวนต์ข้อความหรือคำสั่งสแลช
ข้อความขาเข้าจะถูกเก็บไว้ในตัวแปรมาตรฐาน question เช่นเดียวกับในแชนเนลอื่นๆ
อีเวนต์
นอกจากข้อความปกติแล้ว อีเวนต์บริการจะถูกส่งไปยังฟันเนลด้วย
ข้อความของพวกเขาจะถูกเก็บไว้ในตัวแปร question ดังนั้นคุณสามารถจัดการได้โดยใช้เงื่อนไขข้อความปกติ
discord_event |
ข้อความใน question
|
เมื่อเกิดขึ้น |
|---|---|---|
message |
ข้อความข้อความ | สมาชิกส่งข้อความ |
message_edit |
ข้อความที่อัปเดต | ข้อความถูกแก้ไข |
interaction |
/warn @user spam |
ใช้คำสั่งสแลชหรือคลิกปุ่ม |
reaction_add |
new_like ❤️ uid413984787162726410 |
เพิ่มรีแอคชัน |
reaction_remove |
reaction_remove ❤️ uid413984787162726410 |
ลบรีแอคชัน |
message_delete |
message_delete mid1465674569095319625 |
ลบข้อความ |
messages_delete_bulk |
messages_delete_bulk 12 |
ลบหลายข้อความ |
member_join |
member_join uid413984787162726410 |
สมาชิกเข้าร่วมเซิร์ฟเวอร์ |
member_leave |
member_leave uid413984787162726410 |
สมาชิกออกจากเซิร์ฟเวอร์ |
member_update |
member_update uid413984787162726410 |
ชื่อเล่นหรือบทบาทของสมาชิกเปลี่ยน |
member_ban |
member_ban uid413984787162726410 |
สมาชิกถูกแบน |
member_unban |
member_unban uid413984787162726410 |
สมาชิกถูกยกเลิกการแบน |
สำหรับรีแอคชันแบบกำหนดเอง ID อีโมจิแบบกำหนดเองจะถูกใช้แทนอีโมจิ:
new_like beer:1479419477396291696 uid413984787162726410
ดูรายละเอียดในส่วน Reactions
หากบล็อกควรทริกเกอร์เฉพาะข้อความปกติที่ส่งโดยสมาชิก ให้เพิ่มเงื่อนไขต่อไปนี้:
discord_event == 'message'
ซึ่งจะกรองอีเวนต์บริการทั้งหมดในครั้งเดียว
การตรวจสอบเฉพาะข้อความอีเวนต์นั้นไม่น่าเชื่อถือ เนื่องจากสมาชิกสามารถส่งข้อความเช่น member_join ด้วยตนเองได้
สำคัญ:
member_updateถูกทริกเกอร์โดยการอัปเดตสมาชิกใดๆ รวมถึงบทบาทที่กำหนดโดยบอทเอง บล็อกที่ตอบสนองต่อmember_updateและกำหนดบทบาทสามารถสร้างลูปได้ ดังนั้นเงื่อนไขดังกล่าวควรถูกจำกัดอย่างเหมาะสมเสมอ
ข้อความ
| ฟังก์ชัน | คำอธิบาย |
|---|---|
discord_send_message(channel_id, text) |
ส่งข้อความไปยังแชนเนลใดๆ |
discord_send_dm(user_id, text) |
ส่งข้อความโดยตรงถึงสมาชิก |
discord_reply_to_message(message_id, text) |
ตอบกลับข้อความ |
discord_edit_message(message_id, text) |
แก้ไขข้อความที่บอทส่ง |
discord_delete_message(message_id) |
ลบข้อความ |
discord_bulk_delete_messages(channel_id, message_ids) |
ลบหลายข้อความในครั้งเดียว |
discord_get_message(channel_id, message_id) |
ดึงข้อมูลข้อความ |
discord_pin_message(message_id) |
ปักหมุดข้อความ |
discord_unpin_message(message_id) |
เลิกปักหมุดข้อความ |
ข้อจำกัดของ Discord: ไม่มีข้อจำกัดด้านเวลาสำหรับการแก้ไขหรือลบข้อความของตัวเอง การลบจำนวนมากใช้ได้เฉพาะกับข้อความที่อายุน้อยกว่า 14 วัน และคุณสามารถลบได้ระหว่าง 2 ถึง 100 ข้อความ ในครั้งเดียว
รีแอคชัน
| ฟังก์ชัน | คำอธิบาย |
|---|---|
discord_send_reaction(message_id, reaction) |
เพิ่มรีแอคชัน |
discord_delete_reaction(message_id, reaction, user_id) |
ลบรีแอคชัน หากละเว้น user_id รีแอคชันของบอทจะถูกลบ |
พารามิเตอร์ reaction ยอมรับอีโมจิปกติ เช่น ❤️ หรือ ID ของอีโมจิเซิร์ฟเวอร์แบบกำหนดเอง
จะหา ID รีแอคชันแบบกำหนดเองได้ที่ไหน
เพิ่มรีแอคชันแบบกำหนดเองที่ต้องการลงในข้อความใดๆ ในแชนเนล
การเรียกกลับเช่นนี้จะปรากฏในแชท:
new_like beer:1479419477396291696 uid413984787162726410
ที่นี่:
beer:1479419477396291696
คือ ID รีแอคชัน
คุณสามารถคัดลอกและใช้ในฟังก์ชันรีแอคชัน:
#{discord_send_reaction(discord_message_id, 'beer:1479419477396291696')}
อีโมจิปกติจะปรากฏในการเรียกกลับตามที่เป็น:
new_like ❤️ uid413984787162726410
โดยที่ uid413984787162726410 คือ ID ของสมาชิกที่เพิ่มรีแอคชัน
การกลั่นกรอง
| ฟังก์ชัน | คำอธิบาย |
|---|---|
discord_timeout_member(user_id, seconds) |
หมดเวลาสมาชิกตามจำนวนวินาทีที่ระบุ สูงสุด 28 วัน |
discord_remove_timeout(user_id) |
ลบการหมดเวลาก่อนกำหนด |
discord_kick_member(user_id) |
เตะสมาชิกออกจากเซิร์ฟเวอร์; พวกเขาสามารถกลับมาได้โดยใช้คำเชิญ |
discord_ban_member(user_id, delete_message_seconds) |
แบนสมาชิก; อาร์กิวเมนต์ที่สองระบุจำนวนวินาทีของประวัติข้อความที่จะลบ สูงสุด 7 วัน |
discord_unban_member(user_id) |
ยกเลิกการแบนสมาชิก |
Discord ไม่อนุญาตให้บอทกลั่นกรองสมาชิกที่มีบทบาทสูงกว่าบทบาทของบอท เจ้าของเซิร์ฟเวอร์ก็ไม่สามารถถูกกลั่นกรองได้เช่นกัน
บทบาทและสมาชิก
| ฟังก์ชัน | คำอธิบาย |
|---|---|
discord_add_role(user_id, role_id) |
กำหนดบทบาท |
discord_remove_role(user_id, role_id) |
ลบบทบาท |
discord_get_roles() |
รับบทบาทของเซิร์ฟเวอร์และ ID ของพวกเขา |
discord_get_member(user_id) |
รับข้อมูลสมาชิก รวมถึงชื่อเล่น บทบาท และวันที่เข้าร่วม |
discord_set_nickname(user_id, nickname) |
เปลี่ยนชื่อเล่นเซิร์ฟเวอร์ของสมาชิก |
บทบาทของบอทต้องสูงกว่าบทบาทที่กำลังกำหนด
ไม่สามารถกำหนดบทบาท @everyone และบทบาทที่จัดการโดยการรวมระบบ รวมถึงบทบาทที่เป็นของบอทอื่น
แชนเนลและตั๋ว
| ฟังก์ชัน | คำอธิบาย |
|---|---|
discord_create_channel(name, type, parent_id, permission_overwrites) |
สร้างแชนเนล |
discord_delete_channel(channel_id) |
ลบแชนเนล |
discord_set_channel_permission(channel_id, target_id, allow, deny, type) |
อนุญาตหรือปฏิเสธสิทธิ์ของแชนเนล |
discord_create_invite(channel_id, max_age, max_uses) |
สร้างลิงก์เชิญ |
discord_get_invites() |
รับลิงก์เชิญของเซิร์ฟเวอร์ |
สำหรับ discord_create_channel ค่าเริ่มต้นของ type คือ:
| ค่า | ประเภทแชนเนล |
|---|---|
0 |
แชนเนลข้อความ |
2 |
แชนเนลเสียง |
4 |
หมวดหมู่ |
คุณสามารถส่ง ID หมวดหมู่ใน parent_id เพื่อสร้างแชนเนลภายในหมวดหมู่นั้น
สำหรับ discord_set_channel_permission อาร์กิวเมนต์สุดท้ายระบุว่าใครได้รับสิทธิ์:
| ค่า | เป้าหมาย |
|---|---|
1 |
สมาชิก |
0 |
บทบาท |
พารามิเตอร์ allow และ deny ยอมรับค่าต่อไปนี้:
| ค่า | สิทธิ์ |
|---|---|
1024 |
ดูแชนเนล |
2048 |
ส่งข้อความ |
3072 |
ดูแชนเนลและส่งข้อความ |
65536 |
อ่านประวัติข้อความ |
สำหรับ discord_create_invite อายุการใช้งานของคำเชิญจะระบุเป็นวินาที
ตัวอย่างเช่น:
86400
หมายถึง 24 ชั่วโมง
ค่า max_uses ที่ 0 หมายถึง ไม่จำกัดการใช้งาน
คำสั่งสแลช
| ฟังก์ชัน | คำอธิบาย |
|---|---|
discord_get_commands() |
รับคำสั่งที่ลงทะเบียนบนเซิร์ฟเวอร์ |
discord_set_commands(commands) |
แทนที่ชุดคำสั่งทั้งหมด |
discord_set_commands ยอมรับรายการคำสั่ง:
#{discord_set_commands('[
{
"name": "rules",
"description": "แสดงกฎของเซิร์ฟเวอร์"
},
{
"name": "warn",
"description": "ออกคำเตือน",
"options": [
{
"type": 6,
"name": "user",
"description": "ผู้ใช้",
"required": true
},
{
"type": 3,
"name": "reason",
"description": "เหตุผล",
"required": false
}
]
}
]')}
ข้อกำหนดของ Discord
-
nameต้องมีเฉพาะอักขระตัวพิมพ์เล็ก ไม่มีช่องว่าง และต้องมีความยาวระหว่าง 1 ถึง 32 อักขระ -
descriptionเป็นข้อบังคับและต้องมีความยาวระหว่าง 1 ถึง 100 อักขระ - ตัวเลือกที่จำเป็นต้องปรากฏก่อนตัวเลือกที่ไม่จำเป็น
- การส่งรายการว่างจะลบคำสั่งบอททั้งหมดออกจากเซิร์ฟเวอร์
ประเภทตัวเลือก
| ประเภท | คำอธิบาย |
|---|---|
3 |
สตริง |
4 |
จำนวนเต็ม |
5 |
บูลีน |
6 |
สมาชิก |
7 |
แชนเนล |
8 |
บทบาท |
เมื่อเรียกใช้คำสั่ง มันจะถูกส่งไปยังฟันเนลเป็นสตริงเช่น:
/warn @user spam
กล่าวอีกนัยหนึ่ง ชื่อคำสั่งและค่าตัวเลือกจะถูกคั่นด้วยช่องว่าง
คุณสามารถจัดการได้โดยใช้เงื่อนไขข้อความปกติ
ไม่จำเป็นต้องมีฟังก์ชันแยกสำหรับปุ่ม ปุ่มจะถูกกำหนดค่าในบล็อกการตอบกลับปกติ และการคลิกปุ่มจะได้รับในลักษณะเดียวกับคำสั่ง slash: ค่าของปุ่มจะปรากฏในข้อความ
คะแนนและกระดานผู้นำ
การผสานรวม Discord มีระบบชื่นชมในตัว คะแนนจะถูกมอบให้กับผู้เขียนข้อความที่ถูกอ้างถึง
คุณสามารถใช้มันเพื่อสร้างเลเวล อันดับ และกระดานผู้นำ
| ฟังก์ชัน | คำอธิบาย |
|---|---|
discord_add_thanks_score(value) |
เพิ่มคะแนนให้กับผู้เขียนข้อความที่ถูกอ้างถึง |
discord_add_thanks_score_for_answer(value) |
เพิ่มคะแนนให้กับสมาชิกที่ตอบกลับ |
discord_minus_thanks_score(value) |
ลบคะแนน |
discord_get_score(user_id) |
คืนค่าคะแนนของสมาชิกเป็นตัวเลข หากไม่มีอาร์กิวเมนต์ จะใช้ผู้เขียนเหตุการณ์ |
discord_get_level(user_id, points_per_level) |
รับเลเวลของสมาชิก เกณฑ์เริ่มต้น: 100 คะแนนต่อเลเวล |
discord_get_user_info(user_id) |
รับคะแนน ตำแหน่งในกระดานผู้นำ และชื่อเป็นออบเจกต์เดียว |
discord_get_top(count, shift, humanize, delimiter) |
รับกระดานผู้นำ |
สำหรับ discord_get_top:
-
count— จำนวนแถวที่จะส่งคืน; -
shift— จำนวนแถวที่จะข้าม มีประโยชน์สำหรับการแบ่งหน้า; -
humanize=true— ส่งคืนข้อความที่พร้อมแสดง; -
delimiter— ตัวคั่นระหว่างชื่อสมาชิกและคะแนน
เมื่อเปรียบเทียบคะแนนในเงื่อนไขของบล็อก ให้ใช้ discord_get_score ฟังก์ชันนี้จะคืนค่าเป็นตัวเลข ดังนั้นการเปรียบเทียบตัวเลขจึงทำงานได้ตามที่คาดหวัง
ตัวอย่าง
ต้อนรับสมาชิกใหม่ผ่านข้อความโดยตรง
เงื่อนไขของบล็อก:
member_join
ในฟิลด์ ตัวแปร:
discord_send_dm(
message_from,
'สวัสดี, #{from_name}! ตรวจสอบกฎที่ปักหมุดไว้'
)
ลบข้อความที่มีคำต้องห้ามและพักการใช้งานสมาชิกเป็นเวลา 24 ชั่วโมง
เงื่อนไขของบล็อก: รายการคำต้องห้าม
เงื่อนไขเพิ่มเติม:
is_admin != 1
ฟังก์ชัน:
discord_delete_message(discord_message_id)
discord_timeout_member(message_from, 86400)
กำหนดบทบาทสำหรับการตอบสนองต่อข้อความเฉพาะ
เงื่อนไขของบล็อก:
new_like 🍕
เงื่อนไขเพิ่มเติม:
contains(discord_message_id, '1534927170965602324')
ฟังก์ชัน:
discord_add_role(
message_from,
'1465674567090704592'
)
สร้างช่องตั๋วส่วนตัวจากปุ่ม
ticket = discord_create_channel(
'ticket-' + from_username
)
ticket_channel = get(
get(ticket, 'data'),
'id'
)
discord_set_channel_permission(
ticket_channel,
guild_id,
None,
1024,
0
)
discord_set_channel_permission(
ticket_channel,
message_from,
3072,
None,
1
)
discord_send_message(
ticket_channel,
'อธิบายปัญหาของคุณในข้อความเดียว'
)
บรรทัดการอนุญาตแรกจะซ่อนช่องจากทุกคน (guild_id แทนบทบาท @everyone ที่นี่)
บรรทัดที่สองทำให้ช่องพร้อมใช้งานสำหรับสมาชิกที่สร้างตั๋ว
ให้คะแนนสำหรับการขอบคุณและกำหนดบทบาทตามเลเวล
เงื่อนไขของบล็อก:
thanks;thx;thank you
เงื่อนไขเพิ่มเติม:
reply_from != '' and reply_from != message_from and reply_to_bot != 1
ฟังก์ชัน:
discord_add_thanks_score(1)
if (discord_get_level(reply_from) >= 1) {
discord_add_role(
reply_from,
'1465674567090704592'
)
}
เงื่อนไข:
reply_from != message_from
ป้องกันไม่ให้สมาชิกให้คะแนนตัวเอง
เงื่อนไข:
reply_to_bot != 1
ป้องกันไม่ให้คะแนนถูกมอบให้กับบอท
แสดงคะแนนของคุณด้วยคำสั่ง
เงื่อนไขของบล็อก:
/xp
ในฟิลด์ ตัวแปร:
points = discord_get_score()
lvl = discord_get_level()
ข้อความตอบกลับ:
#{from_name}, คุณมี #{points} XP · เลเวล #{lvl}
แสดงกระดานผู้นำด้วยคำสั่ง
เงื่อนไขของบล็อก:
/top
ข้อความตอบกลับ:
🏆 กระดานผู้นำ XP:
#{discord_get_top(10, 0, true, ' — ')}