สร้างบอทเปิดเพลง Discord ด้วย Python

ผู้เขียนบทความ : นายนวพรรษ แก้วช่วย 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 ด้วย Python - มทร.ศรีวิชัย (RMUTSV)

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.ผลการดำเนินการ

สร้างบอทเปิดเพลง Discord ด้วย Python - มทร.ศรีวิชัย (RMUTSV)

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

อ้างอิงรูปภาพ

Profile : https://res.cloudinary.com/apideck/image/upload/w_196,f_auto/v1678484810/marketplaces/ckhg56iu1mkpc0b66vj7fsj3o/listings/tried-to-make-the-discord-clyde-logo-more-similar-to-the-v0-g2bha52fh9v91_w9wnla.webp

You may also like...