Команда для отображения установленного префикса в discord.py (переписать)

#python #command #discord #discord.py #discord.py-rewrite

#python #команда #Discord #discord.py

Вопрос:

Я пытаюсь создать команду справки, которая отправляет текущие серверные префиксы для бота во внедрении. У меня возникли некоторые проблемы, пытаясь понять, как это закодировать, и я хотел бы получить некоторую помощь. Я пытался делать:

 @bot.command()
async def help(ctx):
    embed = discord.Embed(
        title='Help', description='', colour=discord.Colour.blue())
    embed.set_footer(text='Have fun!')

    prefix = command_prefix

    embed.add_field(
        name='Prefix',
        value=
        f'The current prefix for this server is {prefix}',
        inline=True)

    await ctx.send(embed=embed)
  

Однако, когда я делаю это, я получаю сообщение об ошибке:

 raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: NameError: name 'command_prefix' is not defined
  

Я не уверен, что я делаю не так, любая помощь будет оценена. (:

Комментарии:

1. Вам нужно определить command_prefix , что делать prefix = command_prefix .

2. Как это, async def help(ctx, command_prefix): ?

3. Нет, это не то, что вам нужно, вам нужно автоматически сохранять и отправлять эти префиксы в файл.

4. Итак, я мог бы использовать данные json для их отображения?

5. Да, если вы создаете этого бота для нескольких гильдий, или если вы хотите распечатать префикс, или если вы хотите изменить префикс с помощью команды, вам нужно сохранить его.

Ответ №1:

Если кого-то все еще интересует этот вопрос, вы можете сделать:

 client.commmand_prefix #if u use bot, just use bot.command_prefix
  

в этом случае это было бы:

 @bot.command()
async def help(ctx):
    embed = discord.Embed(
        title='Help', description='', colour=discord.Colour.blue())
    embed.set_footer(text='Have fun!')

    prefix = command_prefix

    embed.add_field(
        name='Prefix',
        value=
        f'The current prefix for this server is {bot.command_prefix}',
        inline=True)

    await ctx.send(embed=embed)
  

Ответ №2:

Вы должны создать префиксную переменную, которую затем можно отобразить в команде справки и изменить позже:

 prefix="!!"
bot = commands.Bot(command_prefix=prefix)

@bot.command()
async def help(ctx):
    embed = discord.Embed(
        title='Help', description='', colour=discord.Colour.blue())
    embed.set_footer(text='Have fun!')

    embed.add_field(
        name='Prefix',
        value=
        f'The current prefix for this server is {prefix}',
        inline=True)

    await ctx.send(embed=embed)