বিল্ডিং একটিডিসকর্ড বট একটি মজাদার, ব্যবহারিক পাইথন প্রকল্প যা অ্যাসিঙ্ক প্রোগ্রামিং, API এবং ইভেন্ট পরিচালনা শেখায়। 2026 সালে,discord.py এটা সোজা করে তোলে এই গাইডটি স্ল্যাশ কমান্ড, এম্বেড এবং ইন্টারেক্টিভ বোতাম সহ একটি কার্যকরী বট তৈরি করে, তারপর এটি স্থাপন করে।
📋 Table of Contents
- ধাপ 1: একটি ডিসকর্ড অ্যাপ্লিকেশন তৈরি করুন
- ধাপ 2: সেটআপ
- ধাপ 3: স্ল্যাশ কমান্ড সহ বেসিক বট
- ধাপ 4: সমৃদ্ধ এমবেডস
- ধাপ 5: ইন্টারেক্টিভ বোতাম
- ধাপ 6: ইভেন্ট হ্যান্ডলিং
- ধাপ 7: বট স্থাপন করুন
- প্রায়শই জিজ্ঞাসিত প্রশ্ন
- পাইথনের সাথে একটি ডিসকর্ড বট তৈরি করা একটি সহজলভ্য প্রকল্প যা অ্যাসিঙ্ক প্রোগ্রামিং এবং API ইন্টিগ্রেশন শেখায়।
ধাপ 1: একটি ডিসকর্ড অ্যাপ্লিকেশন তৈরি করুন
- ডিসকর্ড ডেভেলপার পোর্টালে যান (discord.com/developers)
- ক্লিক করুননতুন আবেদন, আপনার বটের নাম দিন
- যাওবট বিভাগ, ক্লিক করুনবট যোগ করুন
- কপি করুনটোকেন (এটি গোপন রাখুন – এটি কখনই করবেন না)
- সক্ষম করুনবার্তা বিষয়বস্তুর অভিপ্রায় প্রিভিলেজড গেটওয়ে ইনটেন্টস
- অধীনেOAuth2, তারপর URL জেনারেটর: নির্বাচন করুন
botএবংapplications.commandsস্কোপ, অনুমতি চয়ন করুন, এবং আপনার সার্ভারে বটকে আমন্ত্রণ জানাতে তৈরি করা URL ব্যবহার করুন
ধাপ 2: সেটআপ
pip install discord.py python-dotenv
# Project structure
mybot/
├── bot.py
├── .env
└── requirements.txt
# .env — never commit this
DISCORD_TOKEN=your_bot_token_here
ধাপ 3: স্ল্যাশ কমান্ড সহ বেসিক বট
# bot.py
import os
import discord
from discord import app_commands
from discord.ext import commands
from dotenv import load_dotenv
load_dotenv()
intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix="!", intents=intents)
@bot.event
async def on_ready():
# Sync slash commands with Discord
await bot.tree.sync()
print(f"Logged in as {bot.user}")
# Slash command
@bot.tree.command(name="hello", description="Greet the user")
async def hello(interaction: discord.Interaction):
await interaction.response.send_message(
f"Hello, {interaction.user.mention}!"
)
# Slash command with parameters
@bot.tree.command(name="add", description="Add two numbers")
async def add(interaction: discord.Interaction, a: int, b: int):
await interaction.response.send_message(f"{a} + {b} = {a + b}")
bot.run(os.getenv("DISCORD_TOKEN"))
ধাপ 4: সমৃদ্ধ এমবেডস
@bot.tree.command(name="userinfo", description="Show user information")
async def userinfo(interaction: discord.Interaction, member: discord.Member = None):
member = member or interaction.user
embed = discord.Embed(
title=f"User Info: {member.display_name}",
color=discord.Color.blurple()
)
embed.set_thumbnail(url=member.display_avatar.url)
embed.add_field(name="Username", value=str(member), inline=True)
embed.add_field(name="ID", value=member.id, inline=True)
embed.add_field(
name="Joined",
value=member.joined_at.strftime("%Y-%m-%d"),
inline=False
)
embed.set_footer(text="MyBot")
await interaction.response.send_message(embed=embed)
ধাপ 5: ইন্টারেক্টিভ বোতাম
class ConfirmView(discord.ui.View):
def __init__(self):
super().__init__(timeout=60)
self.value = None
@discord.ui.button(label="Confirm", style=discord.ButtonStyle.green)
async def confirm(self, interaction: discord.Interaction, button: discord.ui.Button):
self.value = True
await interaction.response.send_message("Confirmed!", ephemeral=True)
self.stop()
@discord.ui.button(label="Cancel", style=discord.ButtonStyle.red)
async def cancel(self, interaction: discord.Interaction, button: discord.ui.Button):
self.value = False
await interaction.response.send_message("Cancelled.", ephemeral=True)
self.stop()
@bot.tree.command(name="confirm", description="Ask for confirmation")
async def confirm_cmd(interaction: discord.Interaction):
view = ConfirmView()
await interaction.response.send_message("Are you sure?", view=view)
ধাপ 6: ইভেন্ট হ্যান্ডলিং
# Welcome new members
@bot.event
async def on_member_join(member):
channel = member.guild.system_channel
if channel:
await channel.send(f"Welcome {member.mention} to the server!")
# React to messages
@bot.event
async def on_message(message):
if message.author == bot.user:
return # ignore the bot's own messages
if "hello bot" in message.content.lower():
await message.channel.send("Hello there!")
await bot.process_commands(message) # keep prefix commands working
ধাপ 7: বট স্থাপন করুন
# Bots need to run 24/7. Deploy to a small VPS or Railway/Fly.io.
# On a VPS with systemd — /etc/systemd/system/mybot.service
[Unit]
Description=Discord Bot
After=network.target
[Service]
WorkingDirectory=/opt/mybot
ExecStart=/opt/mybot/venv/bin/python bot.py
Restart=always
EnvironmentFile=/opt/mybot/.env
[Install]
WantedBy=multi-user.target
# Enable and start
sudo systemctl enable mybot
sudo systemctl start mybot
প্রায়শই জিজ্ঞাসিত প্রশ্ন
প্রশ্ন: স্ল্যাশ কমান্ড বনাম প্রিফিক্স কমান্ড?
উত্তর: স্ল্যাশ কমান্ড (/command) হল আধুনিক মান — ডিসকর্ড সেগুলিকে প্যারামিটার ইঙ্গিত সহ একটি মেনুতে দেখায়। উপসর্গ কমান্ড ( ) এখনও কাজ করে কিন্তু উত্তরাধিকার। নতুন বটের জন্য স্ল্যাশ কমান্ড ব্যবহার করুন।!commandপ্রশ্ন: কেন আমার স্ল্যাশ কমান্ড প্রদর্শিত হচ্ছে না?
উত্তরঃ আপনাকে অবশ্যই কল করতে হবে
ডিসকর্ডের সাথে তাদের নিবন্ধন করতে (উপরে প্রস্তুত করা হয়েছে)। গ্লোবাল সিঙ্ক প্রচার করতে এক ঘন্টা পর্যন্ত সময় নিতে পারে; তাত্ক্ষণিক পরীক্ষার জন্য একটি নির্দিষ্ট গিল্ডের সাথে সিঙ্ক করুন।bot.tree.sync()প্রশ্ন: আমি কিভাবে আমার বট টোকেন সুরক্ষিত রাখতে পারি?
A: এটি একটি
এ সংরক্ষণ করুন ফাইল (gitigned), কখনই এটি হার্ডকোড করবেন না এবং কখনই এটি কমিট করবেন না। ফাঁস হয়ে গেলে, বিকাশকারী পোর্টালে অবিলম্বে এটি পুনরায় তৈরি করুন — একটি ফাঁস হওয়া টোকেন যে কেউ আপনার বট নিয়ন্ত্রণ করতে দেয়৷.envপ্রশ্ন: আমার বটটি বিনামূল্যে/সস্তায় কোথায় হোস্ট করা উচিত?
উত্তর: Railway এবং Fly.io-এর বিনামূল্যে/স্বল্প-মূল্যের স্তর রয়েছে৷ একটি $4-6/মাস VPS (Hetzner, Contabo) সঙ্গে systemd নির্ভরযোগ্য এবং সস্তা। নিষ্ক্রিয়তার উপর ঘুমানো বিনামূল্যের স্তরগুলি এড়িয়ে চলুন – বটগুলিকে ক্রমাগত চলতে হবে।
প্রশ্নঃ আমি কিভাবে আমার বটে একটি ডাটাবেস যোগ করব?
উত্তর: সাধারণ বটের জন্য SQLite (async-এর জন্য aiosqlite-এর মাধ্যমে), অথবা বড়গুলির জন্য PostgreSQL (asyncpg)। প্রতি-সার্ভার সেটিংস, ব্যবহারকারীর ডেটা বা কমান্ডের অবস্থা সংরক্ষণ করুন। বট ব্লক করা এড়াতে সর্বদা async ডাটাবেস লাইব্রেরি ব্যবহার করুন।
উপসংহার
পাইথনের সাথে একটি ডিসকর্ড বট তৈরি করা একটি সহজলভ্য প্রকল্প যা অ্যাসিঙ্ক প্রোগ্রামিং এবং API ইন্টিগ্রেশন শেখায়।
লাইব্রেরি কঠিন অংশগুলি পরিচালনা করে — আপনি পরিষ্কার ডেকোরেটর সহ স্ল্যাশ কমান্ড, সমৃদ্ধ এম্বেড এবং ইন্টারেক্টিভ বোতামগুলি সংজ্ঞায়িত করেন। একবার আপনার বট স্থানীয়ভাবে কাজ করলে, এটিকে সিস্টেমড (বা Railway/Fly.io) সহ একটি ছোট VPS এ স্থাপন করুন যাতে এটি 24/7 চলে। এখান থেকে, একটি ডাটাবেস, আরও কমান্ড এবং ইভেন্ট হ্যান্ডলার যোগ করুন যাতে আপনার সম্প্রদায়ের যা কিছুর প্রয়োজন হয় তাতে আপনার বট বৃদ্ধি পায়।discord.py লাইব্রেরি কঠিন অংশগুলি পরিচালনা করে — আপনি পরিষ্কার ডেকোরেটর সহ স্ল্যাশ কমান্ড, সমৃদ্ধ এম্বেড এবং ইন্টারেক্টিভ বোতামগুলি সংজ্ঞায়িত করেন। একবার আপনার বট স্থানীয়ভাবে কাজ করলে, এটিকে সিস্টেমড (বা Railway/Fly.io) সহ একটি ছোট VPS এ স্থাপন করুন যাতে এটি 24/7 চলে। এখান থেকে, একটি ডাটাবেস, আরও কমান্ড এবং ইভেন্ট হ্যান্ডলার যোগ করুন যাতে আপনার সম্প্রদায়ের যা কিছুর প্রয়োজন হয় তাতে আপনার বট বৃদ্ধি পায়।
🔗 Share this article
✍️ Leave a Comment