چگونه یک ربات موسیقی Discord بسازیم
در این صفحه
ربات موسیقی یک ربات Discord است که به کانال صوتی میپیوندد و صدا پخش میکند. بخش ربات — دستورها، صف پخش، پیام «در حال پخش» — کد معمولی ربات است. بخش سخت، صداست: دریافت آهنگها، رمزگذاری آنها و استریم آنها به کانال صوتی بدون قطعووصل شدن.
این راهنما دو روش مدیریت صدا را توضیح میدهد، اینکه کدام کتابخانهها پس از تغییرات صوتی Discord در 2026 هنوز کار میکنند، و اینکه ربات موسیقی چه چیزی را مجاز است و چه چیزی را مجاز نیست پخش کند. اگر تا به حال رباتی نساختهاید، از چگونه یک ربات Discord بسازیم شروع کنید.
اول: صدای رمزگذاریشده Discord (DAVE)
از 1 مارس 2026، Discord فقط تماسهای صوتی با رمزگذاری سرتاسری را از طریق پروتکلی به نام DAVE مجاز میداند. رباتی که روی کتابخانهای بدون پشتیبانی از آن ساخته شده باشد، دیگر اصلاً نمیتواند به کانالهای صوتی بپیوندد. به همین دلیل بسیاری از آموزشها و مخزنهای قدیمی ربات موسیقی از کار افتادند.
پیش از شروع، مطمئن شوید ابزارهای شما بهاندازه کافی جدید هستند:
| کتابخانه | پشتیبانی از DAVE از نسخه |
|---|---|
| discord.py | 2.7.0، نصبشده بهصورت discord.py[voice] |
| @discordjs/voice | 0.19، که به Node.js 22.12 یا جدیدتر نیاز دارد |
| سرور Lavalink | 4.2.0 |
| discord-player | 7.2.0 |
دو روش برای پخش صدا: Lavalink یا FFmpeg
| Lavalink | FFmpeg داخل ربات | |
|---|---|---|
| نحوه کار | یک سرور صوتی جداگانه موسیقی را استریم میکند؛ ربات به آن دستور میفرستد | خود ربات صدا را با FFmpeg رمزگشایی و استریم میکند |
| نیاز ربات | یک کتابخانه کلاینت Lavalink | FFmpeg و Opus نصبشده در کنار ربات |
| مقیاسپذیری | تعداد زیادی سرور بهطور همزمان؛ یک Lavalink میتواند به چند ربات سرویس دهد | چند سرور، تا وقتی CPU ربات به محدودیت برسد |
| مناسب برای | هر رباتی که انتظار دارید رشد کند | یادگیری، یا رباتی برای یک سرور |
بیشتر رباتهای موسیقی عمومی از Lavalink استفاده میکنند. شروع با FFmpeg سادهتر است، چون فقط یک برنامه باید اجرا شود.
کتابخانههای کلاینت Lavalink که نگهداری میشوند
این کلاینتها در فهرست رسمی Lavalink هستند و در 2026 نسخههایی با تغییرات صوتی بالا منتشر کردهاند:
- JavaScript (discord.js): lavalink-client, Shoukaku, Riffy, Moonlink.js
- Python (discord.py): Wavelink, lavalink.py, mafic, pomice
- C#: Lavalink4NET
- Java (JDA): Lavalink-Client
هر کدام با میزبان، پورت و رمز عبور به یک سرور Lavalink وصل میشود و سپس دستورهایی مانند جستجو، پخش، رد کردن و تنظیم صدا را در اختیار ربات شما میگذارد. راهاندازی خود سرور در چگونه یک سرور Lavalink میزبانی کنیم توضیح داده شده است.
در JavaScript، discord-player هم وجود دارد که صدا را داخل خود ربات پردازش میکند. نسخه فعلی آن دیگر از YouTube پشتیبانی نمیکند؛ SoundCloud، Vimeo، فایلهای پیوست و لینکهای Spotify یا Apple Music را از منابع دیگر پخش میکند.
روش FFmpeg، در چند خط
برای اینکه ببینید صدا کار میکند، فایلی را که مالکش هستید پخش کنید. در Python، افزونه صوتی را نصب کنید و مطمئن شوید ffmpeg روی سیستم شما هست:
pip install "discord.py[voice]"
سپس داخل یک دستور slash، به کانال کاربری که دستور را اجرا کرده بپیوندید و یک فایل محلی پخش کنید:
channel = interaction.user.voice.channel
voice = await channel.connect()
voice.play(discord.FFmpegPCMAudio("song.mp3"))
await interaction.response.send_message("Playing.")
معادل آن در JavaScript، @discordjs/voice همراه با @discordjs/opus و FFmpeg است. یک ربات واقعی صف پخش و دستورهای رد کردن و توقف را اضافه میکند و وقتی کانال خالی شد آن را ترک میکند.
ربات موسیقی چه چیزی را میتواند پخش کند
بیشتر رباتهای موسیقی دقیقاً همینجا به دردسر میافتند، پس پیش از ساختن این موضوع را برای خودتان روشن کنید:
- شرایط YouTube اجازه دانلود یا بازپخش محتوای آن بدون مجوز، یا دور زدن محافظتهای آن را نمیدهد. رباتهای موسیقی بزرگ دقیقاً به همین دلیل تعطیل شدهاند.
- رهنمودهای انجمن Discord اشتراکگذاری محتوایی را که مالکیت فکری هر کسی را نقض کند ممنوع میکنند، و مالک ربات مسئول کارهایی است که ربات انجام میدهد.
- منابع امنتر: موسیقیای که مالکش هستید یا مجوزش را دارید، کتابخانههای بدون حق امتیاز و Creative Commons، رادیوهای اینترنتی که اجازه این کار را میدهند، و فایلهایی که اعضای شما با حق اشتراکگذاری بارگذاری میکنند.
Lavalink و افزونههایش از نظر فنی میتوانند از سایتهای زیادی پخش کنند؛ اینکه شما اجازه این کار را دارید یا نه سؤال جداگانهای است و پاسخ آن با خود شماست.
میزبانی ربات موسیقی
ربات موسیقی باید آنلاین بماند و هنگام استریم اتصالی پایدار داشته باشد، کاری که یک کامپیوتر خانگی روی Wi-Fi بهندرت برای مدت طولانی از پسش برمیآید. در هاستینگ ربات Discord در HytHost:
- ربات روی محیط اجراییای که هنگام سفارش انتخاب میکنید اجرا میشود: Node.js، Python، Java، Go، C# یا Bun.
- Lavalink خودش یک محیط اجرایی مستقل است. بهصورت سرور جداگانه اجرا میشود: یک پلن برای ربات و یک پلن با محیط اجرایی Lavalink سفارش دهید، یا در پلنی با چند جایگاه ربات از ما بخواهید یکی از آنها را به Lavalink منتقل کنیم.
- کلاینت Lavalink ربات را به آدرس، پورت و رمز عبور سرور Lavalink، همانطور که در پنل آن نمایش داده میشود، متصل کنید.
آنلاین نگه داشتن خود ربات، با راهاندازی مجدد خودکار و نگهداری توکن در جای امن، در چگونه یک ربات Discord را 24/7 میزبانی کنیم توضیح داده شده است.
ربات و سرور Lavalink آن را روی هاستینگ ربات Discord در HytHost اجرا کنید — Node.js، Python، Java، Lavalink و بیشتر، از €0.89/ماه.
مشاهده پلنهای هاستینگ رباتپرسشهای متداول
به احتمال زیاد به خاطر صدای رمزگذاریشده Discord. از 1 مارس 2026 فقط کلاینتهایی که از پروتکل DAVE پشتیبانی میکنند میتوانند به تماسهای صوتی بپیوندند. به discord.py 2.7، @discordjs/voice 0.19 یا Lavalink 4.2 یا جدیدتر، و یک کلاینت Lavalink بهروز ارتقا دهید.
نه. یک ربات کوچک میتواند مستقیماً با FFmpeg استریم کند. Lavalink زمانی ارزشش را دارد که ربات همزمان در چند سرور پخش کند، چون بار پردازش صدا را از دوش ربات برمیدارد.
از نظر فنی برخی ابزارها هنوز میتوانند، اما شرایط YouTube اجازه دانلود یا بازپخش محتوای آن بدون مجوز را نمیدهد و این ابزارها اغلب از کار میافتند. موسیقیای که مالکش هستید یا مجوزش را دارید انتخاب امن است.
با discord.js، یک کلاینت Lavalink مانند lavalink-client یا Shoukaku؛ با discord.py، Wavelink یا lavalink.py. کتابخانهای با نسخه منتشرشده در 2026 انتخاب کنید تا از صدای رمزگذاریشده Discord پشتیبانی کند.
خود ربات سبک است؛ آنچه هزینه دارد پردازش صداست. با Lavalink، برای یک ربات کوچک حدود 1 GB به سرور Lavalink بدهید (توصیه ما) و به ربات همان مقداری که بدون موسیقی نیاز دارد.
ربات موسیقی خود را آنلاین کنید
هاستینگ ربات Discord در HytHost ربات و سرور Lavalink شما را همراه با پایگاه داده MySQL و نسخههای پشتیبان اجرا میکند — از €0.89/ماه.
Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hoursاین راهنما برایتان مفید بود؟