AliiiBenn / videos-code

All the code from YouTube videos
6 stars 1 forks source link

problème avec les hybrid command #1

Open ColibriXD opened 1 year ago

ColibriXD commented 1 year ago

salut, j'ai suivis tes vidéos mais en voulant créer mon hybrid command celle ci ne s'affiche pas et ne fonctionne pas, pourrais tu m'aider ?

import discord from discord.ext import commands

class Bot(commands.Bot): def init(self): super().init( command_prefix='!', intents=discord.Intents.all() )

async def on_ready(self): print('-------------') print(f'Logged in as {self.user}') print(f'Bot is ready.')

async def setup_hook(self): await self.tree.sync()

bot = Bot()

@bot.hybrid_command(name="say") async def say(ctx: commands.context, message : str)-> discord.Message: return await ctx.send(message)

bot.run("token")

pour information j'utilise python 3.8.6

merci par avance @AliiiBenn

AliiiBenn commented 1 year ago

La première chose que je vois est que dans ta commande say tu utilises un mauvais Type Hinting, c'est commands.Context et non commands.context. Ensuite, je pense que le problème majeur vient de la version que tu utilises, le créateur de discord.py adore utiliser les dernières fonctionnalités du langage donc je pense que les commandes hybrides utilisent des fonctionnalités qui ne sont pas présentes en 3.8

Si tu as plus de détails sur ton erreur je pourrais peut-être mieux trouver mais sinon essaye de changer de version et regarde si ça fonctionne.

ColibriXD commented 1 year ago

merci pour ta réponse aussi rapide, tu m'as enormement aider, continie t'es vidéo elle sont bien expliqués, complète et récente. et merci encore mile fois

ColibriXD commented 1 year ago

me revoila avec un autre problème, voici mon code ( c'est une commande de ban )

@bot.hybrid_command(name="ban")

async def ban(ctx: commands.Context, member : discord.Member, * , reason : str = "" )-> discord.Message:

is_in_private_message = ctx.guild is None and isinstance(ctx.author, discord.User)

if is_in_private_message :

    return await ctx.send("Cette commande ne fonctionne pas en mp")

has_permission = ctx.author.guild_permissions.ban_members 

if not has_permission :

    return await ctx.send("vous n'avez pas la permissions de bannir un utilisateur")

is_banned = ctx.author.top_role > member.top_role 

if not is_banned:

    return await ctx.send("vous ne pouvez pas bannir cette utilisateur car il suppérieure à votre role")

if reason == "":

    reason = "aucune justification fournit par le moderateur"

banEmbed = discord.Embed (
    title = "Modération",
    description="{menber} à été banni par **{ctx.author}** pour la raison suivante : **{reason}**",
    color=discord.Color.blue()
)
banUserEmbed = discord.Embed (
    title = "Modération",
    description="Vous avez été banni par **{ctx.author}** pour la raison suivante : **{reason}**.\n Vous pouvez contester la décision en remplissant ce formulaire : example.com ",
    color=discord.Color.blue()
)
banEmbed.set.thumbnail(url=ctx.guild.icon.url)

await ctx.guild.ban(member, reason=reason)
await member.send (embed=banUserEmbed)
return await ctx.send(embed=banEmbed)
AliiiBenn commented 1 year ago

Désolé d'avoir mis autant de temps à répondre.

J'ai du mal à comprendre d'où pourrait venir ton erreur, est-ce possible que tu montre l'erreur aussi et que le code soit formaté en Markdown Python ?