sersViu / discord.py-bot-per-tui

ساختن بات دیسکورد به زبان پایتون

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

اموزش ساخت بات دیسکورد به زبان پایتون🥳

ساختن بات دیسکورد به زبان پایتون

تو این اموزش یاد میگیرید چطوری یک بات دیسکورد به زبان پایتون بنویسید

پیش نیاز ها🤨

چگونه یک بات بسازیم برایه شروع؟

اول از همه میرسیم به راحت ترین بخش کار یعنی ساخت بات اول میرین تویه سایت discord devloper image بعد که رفتید تو این سایت برین قسمت Applications image

رویه new application کلیک کنید بعد باتو بسازید که اموزشش اینجاست!

bandicam.2023-05-12.10-19-20-032.mp4
  • بعد میرسیم به اصل کاری یعنی ساخت بات و تیک هایی که باید زده بشه و پروفایل بات اموزش کلی این ویدیویه زیر💁
bandicam.2023-05-12.10-51-57-248.mp4
  • خب ما الان باتو ساختیم چطور اینوایتش بدیم به سرورمون؟
  • باید اول پرمیشن هایه بات رو مشخص کنید سپس اون پاین یه لینکی بهتون میده میرین تو مرورگر میزنید باتتونو اینوایت میدین!
  • به این شکل
image
  • اول تیک باتو میزنید یه لیست اون پاین باز میشه که چیزایی که ما برایه باتمون باید فعال کنیم ایناس!
image
  • یا دیدین یکسری از بات ها add to server دارن پاین نیک نیمشون؟
  • برید تویه جنرال و مراحل زیر رو انجام بدید توجه داشته باشید ادمیناستور نزنید و همون پرم هایه قبل رو بش بدید
image

هورا الان بات ما به سرور اد شد و اد تو سرور هم داره!!!

image

انلاین کردن بات و استواتوس ها✨

اینجا ما میرسیم به بخش مهم داستان یعنی انلاین کرد بات و تنظیم استاتوس ها

  • اول از همه به چندتا نکته باید توجه داشته باشین
  • اول اینکه ما این اموزش رو به روش cogs که روش حرفه ای تری نسبت به روش معمولی تک فایلی و سریع تر بهتری است انجام میدیم
  • بنابرین لذا اگه شما کدی دارین که توش از روش تک فایلی استفاده کردید و میخاین تبدیل به cogs کن همینطوری نمیشه
  • شما باید چندتا چیز رو تعریف کنید مثل slef و اینا و یسری چیزا پشتشون سلف بزارید
  • بنابرین کدی که به روش تک فایلی نوشته شده رو همینجوری تبدیل به cogs نکنین!!

***اول شما در هر برنامیه ویرایش کدی هستید یک فایل بنام main.py ***بسازید که معمولا خودش خودکار تو پای چارم انجام میشه حالا وقتشه که کد ران بات رو بزنیم!!

import discord
from discord.ext import commands 
from pathlib import Path
import json
import logging
logging.basicConfig(level=logging.DEBUG)


# Load bot configuration from JSON file
with open("config.json") as f:
    config = json.load(f)

# Set up bot intents




# Command to generate an embed message containing information about a specified user
class Bot(commands.Bot):
    def __init__(self, config):
        super().__init__(
            command_prefix="!",
            help_command=None,
            intents=discord.Intents.all(),
            application_id=config["application-id"]


       )

        self.config = config




    async def setup_hook(self):
        for file in Path("cogs").glob("*.py"):
            cog_name = file.name.split(".")[0]
            await self.load_extension(f"cogs.{cog_name}")
            print("loaded extention:", file.name)
        await self.tree.sync()

    async def on_ready(self):
        logging.info(f"{self.user.name} has connected to Discord!")
        print(f"Connected to {len(self.guilds)} guilds")
        activity = discord.Activity(name='fela heci', type=discord.ActivityType.watching)
        await self.change_presence(status=discord.Status.idle, activity=activity)








if __name__ == "__main__":
    config = json.loads(open("config.json").read())
bot = Bot(config)
bot.run(config["token"])

نصب پیش نیاز ها🎗️

خب طبیعتا کد بالا رو همینجوری بزنید کار نمیکنه پس باید پیش نیاز هارو نصب کنید اینجوری

pip install discord.py
pip install pathlib

این دستورات رو تویه Command prompt تویه ترمینال بزنید و بوم پیش نیاز ها نصب شد اما ما یچیز دیگه میخایم اونم config.json هست

  • برایه درست کردنش دقیفا کنار main.py یک فایل بسازید بنام config.json
  • بعد توش کدایه زیر رو بنویسید
{
 "token": "your_bot_token",
 "application-id": "application_id_of-your_bot"
}

باید بجایه tokenتوکن بات خودتون رو قرار بدید و بجایه application-iاپیکیشن ایدی باتتون رو قرار بدید که اموزش دوتاشون اینجاست

bandicam.2023-05-14.15-46-41-466.mp4

بعد که این کارارو کردید و توکن اپیکیشن ایدی خودتون رو قرار دادید باید بریم سراغ ران بات! الان تست میکنیم ببینیم بات ران میشه یا نه نکتهاگر تو ویژوال استودیو کد هستید باید پایتون رو نصب کنید از خودش ولی تویه پای چارم نیازی نیست

bandicam.2023-05-14.16-00-14-294.mp4

هورا باتمون انلاین شد!

استاتوس😯

استاتوس بطور کلی میشه از نوع اکتیویتی بات مثل online idle و چیزایی که کنار پروفایلشون نمایش داده میشه بطور کلی به اینا میگن استاتوس چیزی که خودتونم میتونید داشته باشید! تو بات ما استاتوس ما به idle و نوشته کنار پروفایلش به watching fela hici تنظیم شد شما میتونید هرچی میخاید بزارید

خب مثلا ما اینجا استاتوس رو به do not distrub تنظیم کردیم نوشته هم به sus boy flying و نوعش هم به playing

async def on_ready(self):
    logging.info(f"{bot.user.name} has connected to Discord!")
    print(f"Connected to {len(bot.guilds)} guilds")
    activity = discord.Activity(name='sus boy flying', type=discord.ActivityType.playing)
    await bot.change_presence(status=discord.Status.dnd, activity=activity)

توجه داشته باشید همیشه باید این استاتوس هارو تو تابع ان ردی بزارید تو نسخه هایه جدید discord.py تابع on_ready هم همون تابع ایه که وقتی بات انلاین شد میگه بات انلاین شد یا مثل کد من هم بگه بات انلاین شد هم تعداد سرورا رو بگه

اولین کامند بات 🤠

خب رسیدیم به بخشی که خیلیا منتظرش بودن یعنی ساخت اولین کامند بات! چندتا نکته توجه داشته باشید

  • اول همه این که باید یک فایل cogs تو همون فایل پراجکتتون بسازید حواستون باشه جایه دیگه ای نزارید
  • دوم اینکه همه کامندا این اموزش اسلشی هستن چون پیشرفته تر و راحت تره و معلومم نیست کامندا پرفیکسی تا کی تو دیسکورد بمونن
  • دوباره تاکیید میکنم کد هایه تک فایلی رو اول به روش cogs درست کنین سپس بزارید اینجا!

خب برگردیم سراغ اموزش اول تویه اون فایل cogs یک فایل میسازید با هر اسمی فقط اخرش .py باشه حتما حالا ما میخایم یه کد اسلشی با نام ping بسازیم که بگه pong ! اول اینارو ایمپورت کنید

import discord
from discord.ext import commands
from discord import interactions, app_commands

class Ping(commands.Cog):
    def __init__(self, bot):
        self.bot = bot


    @app_commands.command(name="ping", description="in command beton mige pong")
    async def ping(self, ctx: interactions):
        await ctx.response.send_message("Pong!")


async def setup(bot):
    await bot.add_cog(Ping(bot))
    

این یک کد ساده اسلشی هست که به شما میگه pong بریم تستش کنیم!

bandicam.2023-05-19.20-02-03-175.mp4
  • خب شاید بخاین کامندی که میزنید رو فقط خودتون ببینید و کس دیگه ای نبینه پس میاید اینا و این کارو میکنید
  • توجه کنید این قابلیت فقط برا اسلش کامند و باتن هاست باسه کامند معمولی یا چیز دیگه ای نمیشه
image

بوم و پیام بات ما فقط برا خودمون نمایش داده میشه!

image

باتن ها buttons🔳

باتن ها یک چیز خیلی خوب هستن که باهاشون میشه همه کاری کرد این یک نمونه باتن هست

import discord
from discord import interactions, app_commands
from discord.ext import commands

class Button(discord.ui.View):
    def __init__(self, *, timeout=180):
        super().__init__(timeout=timeout)

    @discord.ui.button(label="yek dokme", style=discord.ButtonStyle.danger, emoji="📁")
    async def vay(self, interaction: discord.Interaction, button: discord.ui.Button):
        await interaction.response.send_message("oh to roye button click kardi", ephemeral=True)

class Buttonn(commands.Cog):
    def __init__(self, bot):
        self.bot = bot

    @app_commands.command(name="button", description="yek adad button")
    async def button(self, ctx: interactions):
        await ctx.response.send_message("inja yek adad button hast!", view=Button())


async def setup(bot):
    await bot.add_cog(Buttonn(bot))

تویه کد بالا ما یک کلاس برایه باتن ساختیم و تویه کامندمون اون اخر گفتیم view=Buttonکه نام کلاس باتنمون هست تا کد اون رو شناسایی کنه استایلم به danger و ایموجی باتن به 📁 تنظیم شده که بعدا اینارو توضیح میدم که چین بریم اول تستش کنیم !

bandicam.2023-05-20.10-48-14-362.mp4

About

ساختن بات دیسکورد به زبان پایتون