การสร้างบอท
ขั้นตอนที่ 1. สร้างแอปพลิเคชัน (คลิกที่ลิงก์)
ขั้นตอนที่ 2. เพิ่มบอท (คลิกที่ปุ่ม "Add Bot")

ขั้นตอนที่ 2.1. ในส่วน Installation ให้เลือก Install Link → None

ขั้นตอนที่ 2.2. ในส่วน Bot ให้ปิด Public Bot จากนั้นเปิด Intents ดังต่อไปนี้:
- Message Content Intent
- Server Members Intent
คุณสามารถเปิด Presence Intent เพื่อใช้ในอนาคตได้เช่นกัน


ขั้นตอนที่ 3. รับโทเค็น (Reset Token)
ขั้นตอนที่ 4. เพิ่มบอทไปยังเซิร์ฟเวอร์:
- ไปที่ OAuth2 → URL Generator
- ใน Scopes เลือก bot
- ใน Bot Permissions เลือก Send Messages, Read Message History และสิทธิ์อื่น ๆ ที่จำเป็น
จากนั้นเปิดลิงก์ที่สร้างขึ้น เลือกเซิร์ฟเวอร์ที่คุณต้องการเพิ่มบอท และยืนยันการอนุญาต


ในการรับเว็บฮุคแบบเต็มจาก Discord เพียงกำหนดค่าใด ๆ ให้กับตัวแปร save_webhook
หากตั้งค่าตัวแปรนี้ เว็บฮุคจะถูกบันทึกไปยัง discord_webhook
การเชื่อมต่อ Discord Bot ใน MaviBot
ตอนนี้ไปที่ส่วน "Messengers" ในโปรเจกต์ของคุณใน MaviBot:

จากนั้นวางโทเค็นที่คัดลอกจาก Discord

คลิกปุ่ม Done
ฟังก์ชันเครื่องคิดเลข
ตอบกลับข้อความ
discord_reply_to_message(message_id, text) - ฟังก์ชันนี้ใช้เพื่อ ตอบกลับข้อความ
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! message_id | ID ของข้อความ ที่คุณต้องการตอบกลับ |
| ! text | ข้อความตอบกลับ |
ลบข้อความ
discord_delete_message(message_id) - ฟังก์ชันนี้ใช้เพื่อ ลบข้อความ
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! message_id | ID ของข้อความ ที่จะลบ |
แก้ไขข้อความ
discord_edit_message(message_id, text) - ฟังก์ชันนี้ใช้เพื่อ แก้ไขข้อความ
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! message_id | ID ของข้อความ ที่จะแก้ไข |
| ! text | ข้อความใหม่ |
ปักหมุดข้อความ
discord_pin_message(message_id) - ฟังก์ชันนี้ใช้เพื่อ ปักหมุดข้อความ
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! message_id | ID ของข้อความ ที่จะปักหมุด |
เลิกปักหมุดข้อความ
discord_unpin_message(message_id) - ฟังก์ชันนี้ใช้เพื่อ เลิกปักหมุดข้อความ
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! message_id | ID ของข้อความ ที่จะเลิกปักหมุด |
ส่งรีแอคชันไปยังข้อความ
discord_send_reaction(message_id, reaction) - ฟังก์ชันนี้ใช้เพื่อ ส่งรีแอคชันไปยังข้อความ
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! message_id | ID ของข้อความ ที่จะส่งรีแอคชันไปยัง |
| ! reaction | รีแอคชันที่จะส่ง คุณสามารถระบุอีโมจิเดี่ยว (เช่น ❤️) หรือ ID ของอีโมจิแบบกำหนดเองบนเซิร์ฟเวอร์ ข้อมูลเกี่ยวกับวิธีรับ ID ของอีโมจิแบบกำหนดเองมีให้ด้านล่าง |
ลบรีแอคชันออกจากข้อความในแชนเนล
discord_delete_reaction(message_id, reaction, user_id) - ฟังก์ชันนี้ใช้เพื่อ ลบรีแอคชันออกจากข้อความในแชนเนล
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! message_id | ID ของข้อความ ที่จะลบรีแอคชันออก |
| ! reaction | รีแอคชันที่จะลบ คุณสามารถระบุอีโมจิเดี่ยว (เช่น ❤️) หรือ ID ของอีโมจิแบบกำหนดเองบนเซิร์ฟเวอร์ ข้อมูลเกี่ยวกับวิธีรับ ID ของอีโมจิแบบกำหนดเองมีให้ด้านล่าง |
| user_id | ID ของผู้ใช้ ที่คุณต้องการลบรีแอคชัน พารามิเตอร์นี้เป็นตัวเลือกหากคุณต้องการลบรีแอคชันของบอทปัจจุบัน |
ฟังก์ชัน Discord
ฟังก์ชันต่อไปนี้ช่วยให้คุณจัดการเซิร์ฟเวอร์ Discord สมาชิก แชนเนล บทบาท ข้อความ และคำเชิญ
การกลั่นกรองสมาชิก
แบนสมาชิก
discord_ban_member(user_id, delete_message_seconds) - ฟังก์ชันนี้ใช้เพื่อ แบนสมาชิกออกจากเซิร์ฟเวอร์ Discord
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! user_id | ID ผู้ใช้ Discord ของสมาชิกที่จะแบน |
| delete_message_seconds | (ไม่บังคับ) ลบข้อความก่อนหน้าของสมาชิกจากจำนวนวินาทีที่ระบุก่อนการแบน ตั้งค่า 0 เพื่อเก็บข้อความทั้งหมด |
เลิกแบนสมาชิก
discord_unban_member(user_id) - ฟังก์ชันนี้ใช้เพื่อ ลบการแบนออกจากสมาชิก
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! user_id | ID ผู้ใช้ Discord ของสมาชิกที่จะเลิกแบน |
เตะสมาชิก
discord_kick_member(user_id) - ฟังก์ชันนี้ใช้เพื่อ นำสมาชิกออกจากเซิร์ฟเวอร์โดยไม่แบน
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! user_id | ID ผู้ใช้ Discord ของสมาชิกที่จะนำออก |
สมาชิกที่ถูกเตะสามารถเข้าร่วมเซิร์ฟเวอร์อีกครั้งได้โดยใช้ลิงก์คำเชิญที่ถูกต้อง
กำหนดเวลาให้สมาชิก
discord_timeout_member(user_id, seconds) - ฟังก์ชันนี้ใช้เพื่อ กำหนดเวลาให้สมาชิก (ปิดเสียง)
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! user_id | ID ผู้ใช้ Discord ของสมาชิก |
| ! seconds | ระยะเวลากำหนดเวลาเป็น วินาที |
ลบการกำหนดเวลา
discord_remove_timeout(user_id) - ฟังก์ชันนี้ใช้เพื่อ ลบการกำหนดเวลาของสมาชิกก่อนหมดอายุ
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! user_id | ID ผู้ใช้ Discord ของสมาชิก |
ลบข้อความจำนวนมาก
discord_bulk_delete_messages(channel_id, message_ids) - ฟังก์ชันนี้ใช้เพื่อ ลบข้อความหลายข้อความจากแชนเนล
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! channel_id | ID แชนเนล Discord |
| ! message_ids | รายการ ID ข้อความ ที่จะลบ |
ข้อความ
ส่งข้อความ
discord_send_message(channel_id, text) - ฟังก์ชันนี้ใช้เพื่อ ส่งข้อความไปยังแชนเนล Discord
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! channel_id | ID แชนเนล Discord |
| ! text | ข้อความ |
รับข้อความ
discord_get_message(channel_id, message_id) - ฟังก์ชันนี้ใช้เพื่อ ดึงข้อมูลเกี่ยวกับข้อความ
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! channel_id | ID แชนเนล Discord |
| ! message_id | ID ของข้อความ |
ฟังก์ชันส่งคืน:
- เนื้อหาข้อความ
- ข้อมูลผู้เขียน
- ไฟล์แนบ
ส่งข้อความโดยตรง
discord_send_dm(user_id, text) - ฟังก์ชันนี้ใช้เพื่อ ส่งข้อความโดยตรงไปยังสมาชิกเซิร์ฟเวอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! user_id | ID ผู้ใช้ Discord |
| ! text | ข้อความ |
บทบาท
เพิ่มบทบาท
discord_add_role(user_id, role_id) - ฟังก์ชันนี้ใช้เพื่อ กำหนดบทบาทให้กับสมาชิก
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! user_id | ID ผู้ใช้ Discord |
| ! role_id | ID บทบาท Discord |
ลบบทบาท
discord_remove_role(user_id, role_id) - ฟังก์ชันนี้ใช้เพื่อ ลบบทบาทออกจากสมาชิก
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! user_id | ID ผู้ใช้ Discord |
| ! role_id | ID บทบาท Discord |
เปลี่ยนชื่อเล่นสมาชิก
discord_set_nickname(user_id, nickname) - ฟังก์ชันนี้ใช้เพื่อ เปลี่ยนชื่อเล่นของสมาชิกบนเซิร์ฟเวอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! user_id | ID ผู้ใช้ Discord |
| ! nickname | ชื่อเล่นใหม่ |
รับบทบาทเซิร์ฟเวอร์
discord_get_roles() - ฟังก์ชันนี้ใช้เพื่อ ดึงรายการบทบาทเซิร์ฟเวอร์
ฟังก์ชันส่งคืน:
- ID บทบาท
- ชื่อบทบาท
สมาชิก
รับข้อมูลสมาชิก
discord_get_member(user_id) - ฟังก์ชันนี้ใช้เพื่อ ดึงข้อมูลเกี่ยวกับสมาชิกเซิร์ฟเวอร์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! user_id | ID ผู้ใช้ Discord |
ฟังก์ชันส่งคืน:
- บทบาทของสมาชิก
- ชื่อเล่นบนเซิร์ฟเวอร์
- วันที่เข้าร่วม
- สิทธิ์
แชนเนล
สร้างแชนเนล
discord_create_channel(name, type, parent_id, permission_overwrites) - ฟังก์ชันนี้ใช้เพื่อ สร้างแชนเนล Discord ใหม่
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! name | ชื่อแชนเนล |
| ! type | ประเภทแชนเนล (เช่น ข้อความหรือเสียง) |
| parent_id | ID หมวดหมู่ ที่จะสร้างแชนเนล |
| permission_overwrites | การตั้งค่าสิทธิ์ของแชนเนลที่กำหนดว่าผู้ใช้หรือบทบาทใดสามารถเข้าถึงแชนเนลได้ |
ลบแชนเนล
discord_delete_channel(channel_id) - ฟังก์ชันนี้ใช้เพื่อ ลบแชนเนล Discord
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! channel_id | ID แชนเนล Discord |
ตั้งค่าสิทธิ์แชนเนล
discord_set_channel_permission(channel_id, target_id, allow, deny) - ฟังก์ชันนี้ใช้เพื่อ กำหนดค่าสิทธิ์แชนเนลสำหรับผู้ใช้หรือบทบาท
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! channel_id | ID แชนเนล Discord |
| ! target_id | ID ผู้ใช้ หรือ ID บทบาท ที่จะเปลี่ยนสิทธิ์ |
| ! allow | สิทธิ์ที่จะอนุญาต |
| ! deny | สิทธิ์ที่จะปฏิเสธ |
คำเชิญ
สร้างคำเชิญ
discord_create_invite(channel_id, max_age, max_uses) - ฟังก์ชันนี้ใช้เพื่อ สร้างลิงก์เชิญ
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| ! channel_id | ID ของแชนเนล Discord |
| max_age | อายุของคำเชิญในหน่วย วินาที ใช้ 0 เพื่อไม่ให้หมดอายุ |
| max_uses | จำนวนการใช้งานสูงสุด ใช้ 0 สำหรับไม่จำกัดจำนวนครั้ง |
รับคำเชิญของเซิร์ฟเวอร์
discord_get_invites() - ฟังก์ชันนี้ใช้เพื่อ ดึงลิงก์เชิญทั้งหมดของเซิร์ฟเวอร์
ฟังก์ชันจะส่งคืน:
- URL ของคำเชิญ
- จำนวนการใช้งาน
- อายุที่เหลืออยู่ (ถ้ามี)
อีเวนต์ Webhook
อีเวนต์ Discord ต่อไปนี้สามารถส่งต่อไปยังโฟลว์แชทได้:
- สมาชิกเข้าร่วมเซิร์ฟเวอร์
- สมาชิกออกจากเซิร์ฟเวอร์
- สมาชิกถูกเตะ
- สมาชิกถูกแบน
- สมาชิกถูกยกเลิกการแบน
- บทบาทของสมาชิกเปลี่ยนไป
- ข้อความถูกแก้ไข
- ข้อความถูกลบ
- เพิ่มรีแอคชัน
- ลบรีแอคชัน
- คำสั่ง Slash ถูกเรียกใช้
- ปุ่มถูกคลิก
Payload ของ Webhook
ข้อมูล Webhook สามารถเข้าถึงได้ใน:
discord_webhook["data"]
| ฟิลด์ | คำอธิบาย |
|---|---|
| author_id | ID ผู้ใช้ Discord ของผู้เขียนข้อความ |
| username | ชื่อผู้ใช้ Discord |
| nickname | ชื่อเล่นในเซิร์ฟเวอร์ |
| channel_id | ID แชนเนล Discord |
| guild_id | ID เซิร์ฟเวอร์ Discord |
| message_id | ID ข้อความ Discord |
| content | เนื้อหาข้อความ |
| roles | รายการ ID บทบาทของสมาชิก |
| is_admin | ระบุว่าสมาชิกมีสิทธิ์ผู้ดูแลระบบหรือไม่ |
Callbacks
เมื่อผู้ใช้ส่งรีแอคชัน จะได้รับ callback ในแชทในรูปแบบต่อไปนี้:
new_like ❤️ uid413984787162726410

โดยที่ uid413984787162726410 คือ ID ของผู้ใช้ ที่ส่งรีแอคชัน
วิธีรับ ID ของอีโมจิแบบกำหนดเอง
หากคุณส่งรีแอคชันแบบกำหนดเองไปยังข้อความในแชนเนล Discord จะได้รับ callback ในรูปแบบต่อไปนี้:
new_like beer:1479419477396291696 uid413984787162726410

โดยที่ beer:1479419477396291696 คือ ID ของรีแอคชัน คุณสามารถคัดลอกเพื่อใช้ในฟังก์ชันที่เกี่ยวข้องกับรีแอคชัน
วิธีรับ ID ข้อความ
คุณสามารถรับ ID ข้อความของไคลเอนต์จาก webhook ได้หากเปิดใช้งาน save_webhook ตัวอย่าง:
data = discord_webhook["data"]
msg_id = data["id"]
result = discord_reply_to_message(msg_id, "นี่คือการตอบกลับข้อความ")
Callbacks เพิ่มเติม
นอกจาก new_like แล้ว ยังมี callbacks ต่อไปนี้:
| Callback | คำอธิบาย |
|---|---|
new_like {emoji} uid{user_id} |
ผู้ใช้เพิ่มรีแอคชันให้กับข้อความ |
reaction_remove {emoji} uid{user_id} |
ผู้ใช้ลบรีแอคชันออกจากข้อความ |
message_delete mid{message_id} |
ข้อความถูกลบ |
message_edit mid{message_id} |
ข้อความถูกแก้ไข ข้อความที่อัปเดตแล้วสามารถดูได้ในข้อมูล webhook |
member_join uid{user_id} |
สมาชิกเข้าร่วมเซิร์ฟเวอร์ |
member_leave uid{user_id} |
สมาชิกออกจากเซิร์ฟเวอร์ |
member_update uid{user_id} |
ข้อมูลของสมาชิก (เช่น บทบาทหรือชื่อเล่น) ได้รับการอัปเดต |
member_ban uid{user_id} |
สมาชิกถูกแบนจากเซิร์ฟเวอร์ |
member_unban uid{user_id} |
สมาชิกถูกยกเลิกการแบนจากเซิร์ฟเวอร์ |
ตัวแปร Callback
เพื่อความสอดคล้องกับรูปแบบอีเวนต์ Discord ที่มีอยู่ ตัวระบุผู้ใช้และข้อความจะใช้คำนำหน้าตามประวัติ:
- ID ผู้ใช้จะถูกส่งคืนเป็น
uid{user_id} - ID ข้อความจะถูกส่งคืนเป็น
mid{message_id}
ตัวแปรต่อไปนี้ยังใช้ตัวระบุที่มีคำนำหน้าเหล่านี้:
message_frominternal_iddiscord_webhook["data"]