مقدمه
این آموزش نحوه اجرای ربات Discord را در سرور لینوکس توضیح می دهد. ربات Discord یک راه عالی برای یادگیری اصول توسعه وب و بکاند در حالی که با دوستان خود سرگرم میشوید است. با گسترش اخیر Discord برای استفاده عمومی یادگیری ساخت و راه اندازی ربات های Discord نیز می تواند به یک کار جانبی سرگرم کننده تبدیل شود. ساختن ربات Discord دشوار نیست، اما مستلزم مجموعه ای از مراحل خاص است که باید انجام دهید تا ربات Discord خود را ایمن و عملیاتی نگه دارید.
از آنجایی که رباتهای Discord کد را اجرا میکنند و میتوانند تعاملات بسیار پیچیدهای با سرورهای Discord انجام دهند، باید روی سرور هاست شوند. حتی اگر میتوانید خدمات پولی دریافت کنید که ربات Discord شما را در اینترنت هاست میکند، بعد از آموزش هایی که اینجا خواهید می فهمید که هاست ربات دیسکورد خودتان بسیار راحت تر است.
این آموزش از Python با کتابخانه discord.py استفاده می کند. رباتهای Discord عمدتاً در پایتون (کتابخانه discord.py) یا جاوا اسکریپت (کتابخانه discord.js) نوشته میشوند، که هر دو اکوسیستمهای بسیار عالی هستند که میتوانند با همه کتابخانههای دیگر نوشتهشده به آن زبان کار کنند. در نتیجه، بیشتر مراحل برای هر دو یکسان است (به غیر از مراحل خاص زبان). با این حال، شروع به کار با کتابخانه پایتون ساده تر است، به همین دلیل برای این آموزش انتخاب شده است.
نمونه ربات Discord در این کتابخانه یک ربات ساده تصحیح املایی خواهد بود که برخی از مهم ترین دستورات کتابخانه discord.py را به شما نشان می دهد.
پیش نیاز ها
- یک VPS یا سرور خصوصی مجازی (Virtual private server)
اگر کاربران زیادی ندارید یا ربات شما کار ساده ای انجام می دهد، عملاً هیچ نیاز سخت افزاری وجود ندارد و تنها کاری که باید بتوانید انجام دهید اجرای پایتون است.
- هر سیستم عامل لینوکس 64 بیتی (x86-64 یا Arm64)
این آموزش فرض میکند که شما Ubuntu را اجرا میکنید، اما همین مراحل روی سایر توزیعهای لینوکس و ویندوز با تغییرات جزئی کار میکنند.
- یک حساب Discord با یک سرور Discord که در آن از امتیازات administrator برخوردار هستید.
دانش پایه یا متوسط Python
مرحله 1 – یک محیط مجازی تنظیم کنید
قبل از شروع، توصیه میشود از یک محیط مجازی پایتون به نام virtualenv استفاده کنید، که به هر پروژه اجازه میدهد نسخههای خاصی از کتابخانهها را فقط برای آن پروژه داشته باشد تا از ناسازگاری بین پروژههایی که ممکن است به نسخههای خاصی از کتابخانهها نیاز داشته باشند، جلوگیری شود. این برای رباتهای Discord که روی پایتون اجرا میشوند بسیار توصیه میشود، زیرا میتوانید مطمئن شوید که ربات شما همیشه کار میکند و میتوانید به راحتی آن را به سرور دیگری منتقل کنید.
ترمینال را در لینوکس خود باز کنید یا از طریق (secure shell)SSH به سرور خود متصل شوید و دستورات زیر را اجرا کنید:
apt update && apt install python3.10-venv
mkdir discord-bot && cd discord-bot/
python3 -m venv discord-bot-env
source discord-bot-env/bin/activate
با این کار ، بسته Python مورد نیاز برای ایجاد محیط های مجازی ، ایجاد یک فهرست برای ربات Discord و فعال کردن محیط مجازی Python را نصب می کند. ترمینال شما اکنون باید (discord-bot-env)
قبل از نام کاربری شما نشان داده شود. بعد، کتابخانه discord.py را نصب کنید.
python3 -m pip install --upgrade discord.py
مرحله 2 – ربات خود را با Discord ثبت کنید
قبل از اجرای هر گونه اسکریپت، باید ربات Discord خود را در خود Discord ثبت کنید و یک توکن دریافت کنید که ربات شما از آن برای احراز هویت با Discord استفاده می کند. این یک فرآیند ساده و البته طولانی است. فقط این مراحل را دنبال کنید:
1_یک مرورگر وب باز کنید.
2_وارد سایت دیسکورد شوید.
3_وارد قسمت discord developer portal شوید.
4_روی new application کلیک کنید.
5_در بخش «create an application»، ربات خود را نام ببرید.
6_روی bot کلیک کنید و به bot section بروید.
7_مطمئن شوید که “Public Bot” انتخاب شده و “Requires OAuth2 Code Grant” انتخاب نشده باشد.
8_روی “Reset Token” کلیک کنید و نشانه خود را بنویسید. مطمئن شوید که این نشانه را از دست ندهید. اگر این کار را انجام دادید ، باید دوباره روی دکمه کلیک کنید ، دوباره یک نشانه جدید دریافت کرده و نشانه را در کد خود به نشانه جدید به روز کنید.
9_به پایین بروید و تمام قسمت «Privileged Gateway Intents» را روشن کنید. این به ربات اجازه عملکرد می دهد. از آنجایی که ربات شما هنوز کدی ندارد، شرایط برای بیش از 100 سرور اعمال نمی شود.
10_به بخش OAuth2 و سپس زیربخش URL Generator بروید. URL به شما و هر شخص دیگری که می خواهد از ربات شما استفاده کند این امکان را می دهد که به راحتی ربات خود را تنها با مجوزها و عملکردهایی که می خواهند ربات داشته باشد به سرور خود اضافه کنید.
11_در بخش “Scopes” روی “bot” کلیک کنید.
12_در بخش «Bot Permissions»، روی تمام مجوزهایی که میخواهید به رباتی که میخواهید اجازه دهید، کلیک کنید. این بستگی به آنچه می خواهید ربات شما بتواند انجام دهد بستگی دارد. برای ربات ساده در این مثال، مجوزهای زیر باید کافی باشد.
13_در بخش «Generated URL»، روی «Copy» کلیک کنید.
14_این URL را در نوار جستجو قرار دهید و به لینک بروید.
15_اطلاعات ارائه شده در مورد آنچه که ربات قادر به انجام آن خواهد بود را بخوانید و آن را به سرور اضافه کنید. شما فقط می توانید ربات را به سروری اضافه کنید که در آن امتیازات مدیریتی دارید.
16_روی “Continue” کلیک کنید
17_مجوزهایی را که می خواهید ربات شما روی سروری که به آن اضافه می کنید داشته باشد، انتخاب کنید. سعی کنید به ربات کمترین مجوزی را بدهید که در عین حال کاملاً کاربردی است. دادن مجوزهای اضافی به آن می تواند یک خطر امنیتی باشد در صورتی که کسی توکن ربات شما را دریافت کند.
مرحله 3- کد های ربات خود را بنویسید
اکنون که ربات در Discord ثبت شده است، باید کد های آن را بنویسید. خوشبختانه، ایجاد یک ربات ساده Discord آسان است، و فایل های discord.py به همین ترتیب عالی هستند.
در همان پوشه ای که دستورات را در «مرحله 1» اجرا کردید، یک فایل به نام discord_bot_script.py
با ویرایشگر متن دلخواه خود ایجاد کنید. در این مثال، من از نانو استفاده خواهم کرد.
nano discord_bot_script.py
کد زیر را کپی و جایگذاری کنید و توکن را در خط آخر با توکن خود جایگزین کنید:
import discord
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)
words = [["youre", "you're"], ["im", "i'm"], ["Im", "I'm"], ["hes", "he's"], ["shes", "she's"]]
@client.event
async def on_ready():
print("Bot successfully logged in as " + client.user)
@client.event
async def on_message(message):
if message.author == client.user:
return
for word in words:
if word[0] in message.content:
await message.channel.send(str(message.author) + ", you misspelled " + word[1] + " as " + word[0], reference=message)
client.run('<YOUR-TOKEN-HERE>')
من خط به خط نمیروم، اما این ربات ساده بیشتر آنچه را که برای شروع ایجاد رباتهای Discord خود در پایتون باید بدانید را نشان میدهد. با اعلام مقاصد شروع می شود، که اساساً فیلترهایی هستند که ربات شما برای قضاوت در مورد رویدادهایی که ثبت می کند و به آنها پاسخ می دهد استفاده می کند. برای مثال، اگر یک ربات غلطگیر املا دارید، فقط به رویدادهای پیام پاسخ میدهید، اما رویدادهایی مانند پیوستن افراد به سرور یا انجام بازیهای خاص را نادیده میگیرید. میتوانید در صفحه مستندات discord.py درباره مقاصد بیشتر بخوانید.
On_Ready
، که زمانی است که اسکریپت ربات بارگذاری می شود و ربات به سرورهای آن متصل می شود.ON_MESSAGE
، وقتی کسی پیام جدیدی را در هر سرور می نویسد که ربات به آن وصل شده است. این رویداد همچنین دارای استدلالی است که محتوا و ابرداده پیام را به عملکرد منتقل می کند.
برای تابع on_ready
، کد به سادگی باعث میشود ربات پیامی به ترمینال بنویسد. می توانید از تابع چاپ برای ثبت رویدادها در طول توسعه استفاده کنید.
برای تابع on_message
، ابتدا کد بررسی میکند که آیا نویسنده پیام خود ربات است یا نه، و اگر هست، از تابع برمیگردد. اگر این بررسی را انجام نمی داد، ربات ممکن است به طور تصادفی در حلقه ای گیر کند که برای همیشه به پیام های خود پاسخ می دهد. سپس، کد بررسی می کند که آیا هر یک از کلمات لیست در پیام دریافتی وجود دارد یا خیر. اگر چنین باشد، با استفاده از تابع ارسال به پیام ارسال شده پاسخ می دهد. این یکی از مهم ترین و قدرتمندترین توابع در discord.py است و یادگیری استفاده از پتانسیل کامل آن به شما امکان می دهد ربات های جالب و پیچیده ای بسازید.
حالا که ربات خود را نوشتید، کد را ذخیره کرده و با تابع زیر اجرا کنید:
python3 discord_bot_script.py