ठीक है, इसलिए मैंने एक कमांड में has_role() फ़ंक्शन लागू किया। कोड:

@client.command()
@commands.has_role('Cleaner')
async def clear(ctx, amount=5):
    await ctx.channel.purge(limit=amount)

यदि MissingRole त्रुटि को ट्रिगर किया जाना था, तो मैं एक f-स्ट्रिंग भेजना चाहूंगा जिसमें has_role () फ़ंक्शन के अंदर की भूमिका का उल्लेख हो।

@clear.error
async def mr4c(ctx, error):
    if isinstance(error, commands.MissingRole):
#just a special embed to display the error
        mr4cembed=discord.Embed(title='ERROR...', description=f"You do not have the required permission to execute this command!", color=discord.Colour.blue())
        #this is where I would like to mention it
        mr4cembed.set_footer(text=f'You need the {WHAT WOULD I WRITE HERE} role to proceed.')
        await ctx.send(embed=mr4cembed) 
0
RickyTicky Bobbywobbin 19 जुलाई 2020, 10:59

1 उत्तर

सबसे बढ़िया उत्तर

का उपयोग करें Missing_role अपवाद की विशेषता:

@commands.command()
@commands.has_role("Dumb role")
async def test(ctx):
    ...

@test.error
async def handle(ctx, error):
    if isinstance(error, commands.MissingRole):
        await ctx.send(f"Role thats you need is: {error.missing_role}")
1
Fixator10 19 जुलाई 2020, 08:17