Créer un bot discord en 10 minutes avec Python !

Vidéo publiée le samedi 6 janvier 2024, page mise à jour le mardi 24 septembre 2024.

Comment écrire des commandes pour interagir avec les messages d'un serveur discord ? Apprenez comment coder un bot discord en Python avec discord.py !

Le code de la vidéo

import os
import random
import discord
from discord.ext import commands

intents = discord.Intents.default()
intents.message_content = True

bot = commands.Bot(command_prefix="!", intents=intents)


@bot.command()
async def bonjour(ctx):
  await ctx.send(f"Bonjour {ctx.author} !")


@bot.command()
async def ping(ctx):
  await ctx.send(f"Pong !")


@bot.command()
async def pileouface(ctx):
  await ctx.send(random.choice(["Pile", "Face"]))


@bot.command(
    help="Lance un dé cubique",
    description="Lance un dé et renvoie le résultat entre 1 et 6 compris")
async def roll(ctx):
  await ctx.send(random.randint(1, 6))


token = os.environ['TOKEN_BOT_DISCORD']
bot.run(token)

Le Replit du projet

Et si vous voulez aller plus loin, voici quelques pistes d’amélioration.

Code de base “boilerplate”

import os
from dotenv import load_dotenv
import discord

load_dotenv()
token = os.getenv("BOT_DISCORD")

intents = discord.Intents.all()
client = discord.Client(intents=intents)

client.run(token=token)

Un bot Client

import os
from dotenv import load_dotenv
import discord

load_dotenv()

intents = discord.Intents.all()
client = discord.Client(intents=intents)

@client.event
async def on_ready():
  print(f"Le bot discord est prêt {client.user}")


@client.event
async def on_message(message):
  if message.author == client.user:
    return
  elif message.content.startswith('!bonjour'):
    await message.channel.send('Bonjour !')


@client.event
async def on_member_join(member):
  welcome_channel_id = os.getenv("WELCOME_CHANNEL_ID")
  channel = client.get_partial_messageable(welcome_channel_id)
  await channel.send(f"Bienvenue {member.name}")


token = os.getenv("BOT_DISCORD")
client.run(token=token)

Un bot avec des Commandes

import os
from dotenv import load_dotenv
import discord
from discord.ext import commands

load_dotenv()

intents = discord.Intents.all()
client = discord.Client(intents=intents)

bot = commands.Bot(command_prefix="!", intents=intents)

@bot.command()
async def ping(context):
  await context.send("Pong")


@bot.command()
async def aide(context):
  embed = discord.Embed(
      title="Commandes",
      description="Une liste des commandes du serveur",
      colour=discord.Colour.random()
  )
  embed.set_thumbnail(url="https://www.commentcoder.com/favicon.ico")
  embed.add_field(name="!ping", value="Répond Pong")
  await context.send(embed=embed)


token = os.getenv("BOT_DISCORD")
bot.run(token=token)

Un Bot de Modération

import os
from dotenv import load_dotenv
import discord
from discord.ext import commands

load_dotenv()

intents = discord.Intents.all()
client = discord.Client(intents=intents)

bot = commands.Bot(command_prefix="!", intents=intents)

@bot.command()
#async def kick(context, member):
async def kick(context, member: discord.Member):
  #await context.guild.kick(member)
  await context.guild.kick(member, reason="Raison")

@bot.command()
async def ban(context, member):
  pass

@bot.command()
async def unban(context, member):
  pass

token = os.getenv("BOT_DISCORD")
bot.run(token=token)