การสร้างบอท

ขั้นตอนที่ 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_from
  • internal_id
  • discord_webhook["data"]