ผู้เขียนบทความ : นายนวพรรษ แก้วช่วย COE#15
คณะวิศวกรรมศาสตร์ : สาขาวิศวกรรมคอมพิวเตอร์
วิชา : 04-513-201 การโปรแกรมคอมพิวเตอร์ชั้นสูง 1/2566
1. ความเป็นมา
สาเหตุหลักในการสร้างบอท Discord เพื่อเล่นเพลงคือการตอบสนองต่อความสนใจและความต้องการของชุมชน ในDiscord ที่ต้องการมีบอทสามารถเล่นเพลงในห้องสนทนาที่ปราศจาก โฆษณา นอกจากนี้ยังมีความประสงค์ที่จะศึกษาและพัฒนาทักษะในการเขียนโปรแกรม Python
การสร้างบอท Discord เปิดเพลงด้วย Python เป็นโครงงานที่ใช้ Python ร่วมกับไลบรารี Discord.py เพื่อสร้างบอทที่สามารถเชื่อมต่อกับ Discord และเล่นเพลงในห้องเสียงของเซิร์ฟเวอร์ Discord ได้.
2. วัตถุประสงค์
2.1 เพื่อสร้างบอท Discord ที่สามารถเปิดเพลงได้อย่างง่าย ๆ โดยใช้คำสั่งที่สะดวกและเข้าใจง่ายสำหรับผู้ใช้ทั่วไป.
2.2 เพื่อเรียนรู้การใช้งาน Python
3. ขอบเขต
3.1 บอท Discord นี้จะมีความสามารถในการเชื่อมต่อกับห้องเสียงในเซิร์ฟเวอร์ Discord.
3.2 บอทสามารถใช้คำสั่ง /play [URL] เพื่อเข้าร่วมห้องเสียงและเล่นเพลงจาก URL, /leave เพื่อออกจากห้องเสียง, /pause เพื่อหยุดเล่นเพลง, และ /resume เพื่อเล่นเพลงต่อ.
4. ประโยชน์ที่คาดว่าจะได้รับ
4.1 โครงงานนี้จะช่วยให้ผู้ใช้สามารถเพลิดเพลินกับเพลงในห้องเสียง Discord ของพวกเขาได้อย่างสะดวกสบายโดยไม่มีโฆษณา.
4.2 การเรียนรู้การสร้างบอท Discord จะช่วยในการเพิ่มความเข้าใจในการเขียนโปรแกรมด้วย Python และการใช้งาน API Discord.
5. ความรู้ที่เกี่ยวข้อง
5.1 ความเข้าใจในการใช้งาน Discord Developer Portal เพื่อสร้างบัญชีบอท Discord และรับ Token.
Discord Developer Portal เป็นหน้าเว็บที่จะใช้ในการสร้างบัญชีบอท Discord และรับ Token สำหรับบอท.
ความเข้าใจขั้นตอนการสร้างบัญชี, สร้างแอปพลิเคชัน, และรับ Token สำคัญในการเชื่อมต่อแอปพลิเคชันของคุณกับ Discord API เป็นสิ่งสำคัญเพื่อให้บอทของคุณสามารถทำงานได้อย่างถูกต้อง.
5.2 ความเข้าใจใน Discord.py และวิธีการใช้คำสั่งสร้างบอทและควบคุมห้องเสียง.
Discord.pyเป็นไลบรารี Python ที่ใช้ในการเชื่อมต่อและสื่อสารกับ Discord API ความเข้าใจวิธีการใช้ Discord.py เพื่อสร้างบอท Discord, รับคำสั่งจากผู้ใช้, และควบคุมห้องเสียง เช่น การเล่นเพลงหรือสร้างการประชุมออนไลน์, จำเป็นต้องเข้าใจหลักการของไลบรารีนี้และรู้วิธีใช้คำสั่งเพื่อทำงานตามความต้องการของบอท Discord .
import discord
from discord.ext import commands
import youtube_dl
# เริ่มต้นโปรแกรมด้วยการนำเข้าแพ็คเกจ discord และ discord.ext ซึ่งเป็นไลบรารีสำหรับพัฒนา Discord Bot.
# คำสั่ง import youtube_dl ใช้ในการนำเข้าแพ็คเกจ youtube_dl เพื่อใช้ในการดาวน์โหลดข้อมูลวิดีโอจาก YouTube.
intents = discord.Intents.default()
intents.typing = False
intents.presences = False
# กำหนดค่าสิทธิ์ (intents) สำหรับ Bot โดยใช้ discord.Intents.default() และปรับแต่งค่า intents
# เพื่อปิดการติดตามการพิมพ์ข้อความ (typing) และสถานะออนไลน์ (presences) เนื่องจากไม่จำเป็นสำหรับการเล่นเพลง.
bot = commands.Bot(command_prefix='/', intents=intents)
# สร้างวัตถุ Bot ด้วย commands.Bot และกำหนด prefix ให้เป็น '/' และใช้ intents ที่กำหนดไว้ข้างต้น.
@bot.event
async def on_ready():
print(f"Logged in as {bot.user.name}")
# ฟังก์ชัน on_ready ซึ่งจะถูกเรียกเมื่อ Bot เข้าสู่ระบบ และในที่นี้แค่แสดงข้อความว่า Bot เข้าสู่ระบบแล้ว.
@bot.command()
async def stop(ctx):
await ctx.voice_client.disconnect()
# คำสั่ง stop ที่ใช้ในการหยุดการเล่นเพลงและออกจากห้องสนทาสที่ Bot กำลังอยู่.
@bot.command()
async def play(ctx, url):
channel = ctx.author.voice.channel
voice_client = await channel.connect()
# คำสั่ง play ที่ใช้ในการเล่นเพลง โดยเริ่มต้นด้วยการเชื่อมต่อกับห้องสนทาสของผู้ใช้ที่ใช้คำสั่งนี้.
ydl_opts = {
'format': 'bestaudio/best',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192',
}],
}
with youtube_dl(ydl_opts) as ydl:
info = ydl.extract_info(url, download=False)
url2 = info['formats'][0]['url']
voice_client.play(discord.FFmpegPCMAudio(url2))
# ในส่วนนี้, โค้ดใช้ YoutubeDL เพื่อดาวน์โหลดข้อมูลเพลงจาก URL และเล่นไฟล์เสียงที่ดาวน์โหลดด้วย discord.FFmpegPCMAudio.
# ส่วน ydl_opts ใช้ในการกำหนดค่าการดาวน์โหลดเพลงที่ต้องการ (รูปแบบที่ดีที่สุด, คุณภาพเสียง, การแปลงไฟล์เป็น mp3 เป็นต้น).
@bot.command()
async def Pause(ctx):
voice_client = ctx.voice_client
if voice_client.is_playing():
voice_client.pause()
# คำสั่ง Pause ที่ใช้ในการหยุดการเล่นเพลง ถ้าเพลงกำลังเล่นอยู่.
@bot.command()
async def Resume(ctx):
voice_client = ctx.voice_client
if voice_client.is_paused():
voice_client.resume()
# คำสั่ง Resume ที่ใช้ในการรีเซ็ตการเล่นเพลงที่หยุดไว้ ถ้าเพลงถูกหยุดไว้.
bot.run(TOKEN)
# คำสั่ง bot.run(TOKEN) ใช้ในการเริ่มบอทด้วย token
6.ผลการดำเนินการ
Diagram เป็นภาพรวมการทำงานของระบบ เพื่อทำให้เข้าใจการทำงานของระบบมากขึ้น โดยจะมีขั้นตอนการทำงานดังนี้
- เริ่มศึกษาและหาข้อมูลเกี่ยวกับ ภาษา python หรือ Code ที่ใช้ในการเขียน
- เริ่มเขียนและพัฒนา Code และทดสอบ ในโปรแกรม VS-Code
- ศึกษา Code ที่ใช้เขียน Bot และการเขียนคำสั่งในการทำงานใน Discord Developer
- สั่งการทำงานและใช้งานได้ใน โปรเเกรมที่เชื่อมโยงกันใน โปรแกรม Discord
7. สรุปผลและข้อเสนอแนะ
1.สรุปผล
1.1 เริ่มต้นโปรแกรมและสร้าง Bot ด้วย prefix ‘/’ และตั้งค่า intents ให้ปิดการติดตามการพิมพ์ข้อความและสถานะออนไลน์.
1.2 เมื่อ Bot เข้าสู่ระบบ, มันจะพิมพ์ข้อความ “Logged in as [ชื่อของบอท]” ในหน้าคอนโซล.
1.3 Bot มีคำสั่ง /play ในการเล่นเพลงจาก URL:
- โดยคำสั่ง /play [URL], บอทจะเชื่อมต่อกับห้องสนทนาของผู้ใช้และดาวน์โหลดข้อมูลเพลงจาก URL ด้วย youtube_dl.
- ข้อมูลเพลงถูกดาวน์โหลดด้วย youtube_dl และเล่นด้วย FFmpegPCMAudio.
1.4 มีคำสั่ง /stop ในการหยุดการเล่นเพลงและออกจากห้องสนทาส.
1.5 มีคำสั่ง /Pause ในการหยุดการเล่นเพลงที่กำลังเล่นอยู่.
1.6 มีคำสั่ง /Resume ในการเล่นเพลงหลังจากที่หยุดไว้.
2.ข้อเสนอแนะ
2.1 การจัดการข้อผิดพลาด: เพิ่มการจัดการข้อผิดพลาดในระบบ เนื่องจากเว็บไซต์และบริการภายนอกอาจเปลี่ยนแปลง ควรพิจารณาการจัดการเหตุการณ์เหล่านี้และแสดงข้อความหรือการแจ้งเตือนเมื่อเกิดข้อผิดพลาด.
2.2 เพิ่มความสามารถ: ในการพัฒนาเพิ่มเติม, สามารถเพิ่มความสามารถในการค้นหาและเล่นเพลงต่าง ๆ หรือเพิ่มคำสั่งอื่น ๆ ที่คิดว่าจะเป็นประโยชน์สำหรับบอท เช่น ค้นหาเพลงจากคีย์เวิร์ด แสดงรายชื่อเพลงที่ออกอากาศล่าสุด เป็นต้น.
8. ข้อมูลอ้างอิง
pawel02.(2022). Music bot. สืบค้นเมื่อ 4 ตุลาคม 2566,
จาก https://olgarose.github.io/ParkingLot/
Computeshorts. (2022, February 22). Create a Music Discord bot using Python [Video file].
จาก https://www.youtube.com/watch?v=dRHUW_KnHLs
TechnicalPhoo. (2021, May11). สร้างบอท Discord ด้วย Python [Video file].
จาก https://www.youtube.com/watch?v=dRHUW_KnHLs
อ้างอิงรูปภาพ