دیسکورد (Discord) یک پلتفرم محبوب برای پیامرسانی متنی و صوتی است که توسط گیمرها، انجمنهای متنباز، برگزارکنندگان کنفرانسها و … استفاده میشود. دلیل محبوبیت آن امکاناتی نظیر چت صوتی فوقالعاده، کانالهای مختلف متنی و قابلیت توسعه با کمک دستیارهای خودکار (bot) میباشد.
در این راهنما یک ربات دیسکورد با زبان برنامهنویسی Python میسازید و آن را روی سرور Ubuntu 20.04 اجرا میکنید. برای این منظور از کتابخانه discord.py استفاده میشود.
توجه: در مستندات دیسکورد، گاهی به اتاقهای چت/صوتی هم با عنوان Server و هم Guild اشاره میشود که منظور هر دو یکی است. در این آموزش از واژه Guild استفاده میشود.
ساخت و ثبت ربات در پرتال توسعهدهندگان دیسکورد
- وارد پرتال توسعهدهندگان دیسکورد شوید و روی دکمه New Application کلیک کنید. برنامههای دیسکورد امکان تعامل با API این پلتفرم را میدهند.
- یک نام برای برنامه انتخاب کرده و روی Create کلیک کنید (در این مثال، نام را SammySharkBot میگذاریم).
- پس از ساخت برنامه، میتوانید یک آیکون برای ربات خود قرار دهید (اختیاری).
- اکنون باید یک bot به برنامه اضافه کنید. از منوی سمت چپ بخش Bot را انتخاب کرده و روی Add Bot بزنید و سپس تایید انجام دهید.
- صفحه جدیدی ظاهر میشود که توکن API ربات در آن قرار دارد. این توکن را بعدا نیاز دارید.
- از منوی تنظیمات به بخش OAuth2 بروید و فقط گزینه bot را در Scopes انتخاب کنید.
- دسترسیهای لازم (مانند View Channels، Send Messages و Read Message History) را فعال کنید. سپس لینکی برای دعوت ربات تولید شده و میتوانید آن را در مرورگر باز کنید.
- Guild مدنظر را انتخاب و Authorize کنید. ربات اکنون به سرور شما اضافه میشود.
راهاندازی محیط پایتون و نصب وابستگیها
- ابتدا یک دایرکتوری برای محیطهای مجازی خود بسازید:
mkdir ~/.venvs - یک محیط مجازی پایتون ایجاد کنید:
python3 -m venv ~/.venvs/discord - محیط مجازی را فعال کنید:
source ~/.venvs/discord/bin/activate - کتابخانه discord.py را نصب کنید:
pip install discord.py - لیست وابستگیها را ذخیره کنید:
pip freeze > requirements.txt
کدنویسی ربات دیسکورد با پایتون
- فایل
bot.pyرا ساخته و این کد را وارد کنید:import os import random import discord TOKEN = os.getenv('DISCORD_TOKEN') GUILD = os.getenv('DISCORD_GUILD') intents = discord.Intents.default() client = discord.Client(intents=intents) @client.event async def on_ready(): for guild in client.guilds: if guild.name == GUILD: break print( f'{client.user} has connected to the following guild:\n' f'{guild.name}(id: {guild.id})' ) @client.event async def on_message(message): if message.author == client.user: return if 'flip a coin' in message.content.lower(): result = random.choice(['Heads', 'Tails']) await message.channel.send(result) client.run(TOKEN)
دریافت توکن و نام Guild و اجرای ربات
- توکن ربات را از پرتال توسعهدهندگان دیسکورد دریافت و در محیط ذخیره کنید:
export DISCORD_TOKEN='your-token-here' - نام Guild را نیز ذخیره کنید:
export DISCORD_GUILD='your-guild-name-here' - برای اجرای برنامه:
python bot.py
پس از اجرا، اگر خطایی نبود و همه چیز درست پیکربندی شده باشد، ربات به صورت آنلاین در سرور دیسکورد نمایش داده میشود. حالا با نوشتن عبارت flip a coin در کانال متنی، ربات شما با “Heads” یا “Tails” پاسخ میدهد.
استقرار ربات روی سرور Ubuntu 20.04 در ParminCloud
- کد و وابستگیهای مورد نیاز را با دستور scp به سرور منتقل کنید:
scp -r ~/project-path sammy@your_server_ip:~/ - به سرور ssh بزنید:
ssh sammy@your_server_ip - پکیجهای مورد نیاز را نصب کنید:
sudo apt update sudo apt install python3 python3-venv screen - یک session جدید با Screen بسازید:
screen -S discord_bot - دایرکتوری محیطهای مجازی و محیط مجازی جدید بسازید و فعال کنید:
mkdir ~/.venvs python3 -m venv ~/.venvs/discord source ~/.venvs/discord/bin/activate - وابستگیها را نصب کنید:
pip install -r requirements.txt - متغیرهای محیطی را مقدار دهید:
export DISCORD_TOKEN='your-token-here' export DISCORD_GUILD='your-guild-name-here' - ربات را اجرا کنید:
python bot.py - برای خروج از Screen از کلیدهای ترکیبی
Ctrl + A + Dاستفاده کنید و برای بازگشت به session:screen -r discord_bot
به این ترتیب، ربات شما در پسزمینه روی سرور ParminCloud اجرا شده و پاسخگو باقی خواهد ماند.
گام بعدی
اکنون شما یک ربات دیسکورد با پایتون ساختهاید که روی سرور ParminCloud اجرا شده است و به فرامین متنی مشخص پاسخ میدهد. برای آشنایی با قابلیتهای بیشتر، به مستندات discord.py مراجعه کنید.
از همراهی شما با پارمین کلود متشکریم.
نظرات کاربران