gpt4 book ai didi

python - discord.py:帮助命令在代码中没有提到 cog 时的问题

转载 作者:行者123 更新时间:2023-12-04 08:25:47 26 4
gpt4 key购买 nike

我的代码:

import discord
from discord.ext import commands
import re
import os

class Help2(commands.Cog):
def __init__(self, bot):
self.bot = bot


@commands.command()
async def help2(self, ctx, * cog=None):
embed = discord.Embed(title=f"Command of {self.bot.user.name}", description=f"Prefix = {self.bot.command_prefix}\n*Per avere maggiori informazioni su ogni comando digita `{self.bot.command_prefix}help <nome comando>`.*")

for command in self.bot.get_cog("Ban").get_commands():
embed.add_field(name=f"{command.name} - {command.description}.", value=f"↳ **Syntax:** `{command.usage}`")

for command in self.bot.get_cog("Kick").get_commands():
embed.add_field(name=f"{command.name} - {command.description}.", value=f"↳ **Syntax:** `{command.usage}`")

for command in self.bot.get_cog("Unban").get_commands():
embed.add_field(name=f"{command.name} - {command.description}.", value=f"↳ **Syntax:** `{command.usage}`")

await ctx.send(embed=embed)



@help2.error
async def help2_error(self, ctx, error):
await ctx.send(f"```{error}```")


def setup(bot):
bot.add_cog(Help2(bot))
当我运行此代码时,机器人必须发送提到的齿轮
但是如果代码中提到的其他齿轮中的一个是“离线”的,或者齿轮的文件没有
存在所有代码都不起作用。
错误:
Command raised an exception: AttributeError: 'NoneType' object has no attribute 'get_commands'
即使一个或多个齿轮“离线”或仅提及在线齿轮,我也希望代码运行
我怎么能做到这一点?

最佳答案

论据 *cog正在作为遵循您的命令的单词元组传递,如果您尝试 *cog=None,则会抛出错误.
我们可以做的是为它添加一个检查,如果用户没有指定一个齿轮,它需要全部。如果 cog 被卸载,它会抛出一个错误,因为 self.bot.get_cog(cog)=NoneType object我们可以改用 tryexcept

    @commands.command()
async def help2(self, ctx, *cog):
embed = discord.Embed(title=f"Command of {self.bot.user.name}", description=f"Prefix = {self.bot.command_prefix}\n*Per avere maggiori informazioni su ogni comando digita `{self.bot.command_prefix}help <nome comando>`.*")

if len(cog)==0:
cog = ("Ban", "Kick", "Unban")

for i in cog:
try:
for command in self.bot.get_cog(i).get_commands():
embed.add_field(name=f"{command.name} - {command.description}.", value=f"↳ **Syntax:** `{command.usage}`")
except:
pass # What will happen if cog is unloaded, or nothing with pass

await ctx.send(embed=embed)

关于python - discord.py:帮助命令在代码中没有提到 cog 时的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65271025/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com