Discord.PY帮助命令

时间:2020-05-16 19:39:26

标签: python-3.x discord.py discord.py-rewrite

好的,所以我的机器人遇到了问题。我知道它是什么,但我不知道要解决的字符串是什么。 基本上,我将其设置为在json中存储配置和前缀等,但是help命令多次加载了我的命令之一。

我已经检查了help命令,但我认为不是这样。因为在重做我的setprefix命令(已多次显示)之后,它又添加了一个命令,所以现在情况更糟了。

我认为这是导致此问题的存储系统。

with open("./config/config.json", "r") as configjsonFile:
    configData = json.load(configjsonFile)
    login_token = configData["discordtoken"]


with open("./config/prefixes.json") as f:
    prefixes = json.load(f)
default_prefix = "-"

def prefix(client, message):
    id = message.guild.id
    return prefixes.get(id, default_prefix)

client = commands.Bot(command_prefix=prefix)
client.remove_command('help')

@client.command(name="setprefix", aliases=["Prefix", "prefix"])
@commands.has_permissions(administrator=True)
async def setprefix(ctx, new_prefix):
    """Change the server prefix for the bot.
    Alt     : Prefix, prefix
    Usage   : prefix <custom prefix>"""
    prefixes[ctx.message.guild.id] = new_prefix
    with open("./config/prefixes.json", "w") as f:
        json.dump(prefixes, f, indent=4)



    embed = discord.Embed(color=0x4a3d9a, timestamp=ctx.message.created_at)
    embed.set_author(name=f"{client.user.name}", icon_url=client.user.avatar_url)
    embed.add_field(name="Success", value=f"Successfully changed prefix changed to `{new_prefix}`")
    embed.set_thumbnail(url=client.user.avatar_url)
    embed.set_footer(text="NewHorizon Development | https://newhorizon-development.netlify.app", icon_url=client.user.avatar_url)
    await ctx.message.delete()
    await ctx.send(embed=embed, delete_after=4)

这是我的自定义帮助命令,以防万一我错了。

@commands.command(name="help", aliases=["Help", "H", "h"])
    @commands.has_permissions(add_reactions=True, embed_links=True)
    async def help(self, ctx, *cog):
        """Gets all cogs and commands.
        Alt     : h, H, Help
        Usage   : [h]elp <cog or command>"""
        try:
            if not cog:
                """Cog listing.  What more?"""
                embed = discord.Embed(title='Cog Listing and Uncatergorized Commands',
                                     description='Use `help <cog>` to find out more about them!\n(BTW, the Cog Name Must Be in Title Case, Just Like this Sentence.)')
                cogs_desc = ''
                for x in self.client.cogs:
                    cogs_desc += ('{} - {}'.format(x, self.client.cogs[x].__doc__) + '\n')
                embed.add_field(name='Cogs', value=cogs_desc[0:len(cogs_desc) - 1], inline=False)
                cmds_desc = ''
                for y in self.client.walk_commands():
                    if not y.cog_name and not y.hidden:
                        cmds_desc += ('{} - {}'.format(y.name, y.help) + '\n')
                embed.add_field(name='Uncatergorized Commands', value=cmds_desc[0:len(cmds_desc) - 1], inline=False)
                await ctx.message.add_reaction(emoji='✉')
                await ctx.message.author.send('', embed=embed)
            else:
                """Helps me remind you if you pass too many args."""
                if len(cog) > 1:
                    embed = discord.Embed(title='Error!', description='That is way too many cogs!', color=discord.Color.red())
                    await ctx.message.author.send('', embed=embed)
                else:
                    """Command listing within a cog."""
                    found = False
                    for x in self.client.cogs:
                        for y in cog:
                            if x == y:
                                embed = discord.Embed(title=cog[0] + ' Command Listing', description=self.client.cogs[cog[0]].__doc__)
                                for c in self.client.get_cog(y).get_commands():
                                    if not c.hidden:
                                        embed.add_field(name=c.name, value=c.help, inline=False)
                                found = True
                    if not found:
                        """Reminds you if that cog doesn't exist."""
                        embed = discord.Embed(title='Error!', description='How do you even use "' + cog[0] + '"?', color=discord.Color.red())
                    else:
                        await ctx.message.add_reaction(emoji='✉')
                    await ctx.message.author.send('', embed=embed)
        except:
            await ctx.send("Excuse me, I can't send embeds.")

如果有帮助,我正在使用重写分支。而且与其他命令不同,我的setprefix命令不在齿轮中。因此,为什么它们看起来有些不同。

现在我假设我的问题是json没有关闭,我需要知道如何使其关闭,但是如果这不是问题,我将非常感谢有人帮助我弄清楚问题出在哪里。

0 个答案:

没有答案