因此,我目前有一个运行discord.py的discord机器人,并且您知道,discord.py带有其自己的帮助命令(因此,我不必自己创建)。这非常有用,我的命令分为齿轮/类别。它确实有助于简化操作,因为现在我不必编写自己的帮助命令。
问题是,当我运行help命令时,它出现在一个巨大的代码块中,如下所示: 我听到用户的一些抱怨,认为这并不完全具有视觉吸引力,而且随着我添加更多命令,它会填满整个屏幕。是否有简单的方法(无需编写我自己的帮助命令)将所有这些内容移至嵌入内容?也许复制此帮助命令的输出,然后将其移至嵌入?如果没有,那没关系,我将编写自己的帮助命令,但是我只是在尝试寻找一种简单的方法来完成此任务,而不会弄脏我的手。一如既往,谢谢您。
如果需要,这是我的代码示例:
// if data with one parameter, no problem to run the tests
// the data not only the constants at the compile time, so need to work TestFixtureSoource attribute.
type SimpleFixtureArgs =
static member Source = [| (String.Empty, String.Empty); ("hello", "hello") |]
[<TestFixtureSource(typeof<SimpleFixtureArgs>, "Source")>]
type ``simple tests class``(text, text2) =
[<Test>]
member this.``simple test``() =
let expexted = text
let actual = text2
Assert.AreEqual(expexted, actual)
答案 0 :(得分:2)
您将必须使用Bot.help_command
覆盖默认的帮助命令。这是我从MinimalHelpCommand继承的简单的嵌入实现
class MyHelpCommand(commands.MinimalHelpCommand):
async def send_pages(self):
destination = self.get_destination()
e = discord.Embed(color=discord.Color.blurple(), description='')
for page in self.paginator.pages:
e.description += page
await destination.send(embed=e)
client.help_command = MyHelpCommand()
答案 1 :(得分:1)
一个简单的方法是使用“PrettyHelp”python 模块:
pip install -U discord-pretty-help
from pretty_help import DefaultMenu, PrettyHelp
menu = DefaultMenu('◀️', '▶️', '❌') # You can copy-paste any icons you want.
bot.help_command = PrettyHelp(navigation=menu, color=discord.Colour.green())
# The color can be whatever you want, including normal color codes,
# I just like the discord green personally.
我认为这必须在主 bot 文件中完成,而不是在 cog 中完成,最终看起来像这样:screenshot
答案 2 :(得分:0)
您必须使用删除默认的帮助命令
commands.remove_command("help")
答案 3 :(得分:0)
如我之前的2个回答所述,您将必须将默认帮助命令设置为“无”。这是从创建机器人开始就完成的。
至于嵌入,您将不得不自己做一些工作。这是我的机器人的一个示例,但是请注意,这不一定是最佳实践-我不知道,但这对我有用。
# When you create your bot, add this in the arguments
bot = commands.Bot(prefix='.', help_command=None)
# My sample help command:
@bot.command()
async def help(ctx, args=None):
help_embed = discord.Embed(title="My Bot's Help!")
command_names_list = [x.name for x in bot.commands]
# If there are no arguments, just list the commands:
if not args:
help_embed.add_field(
name="List of supported commands:",
value="\n".join([str(i+1)+". "+x.name for i,x in enumerate(bot.commands)]),
inline=False
)
help_embed.add_field(
name="Details",
value="Type `.help <command name>` for more details about each command.",
inline=False
)
# If the argument is a command, get the help text from that command:
elif args in command_names_list:
help_embed.add_field(
name=args,
value=bot.get_command(args).help
)
# If someone is just trolling:
else:
help_embed.add_field(
name="Nope.",
value="Don't think I got that command, boss!"
)
await ctx.send(embed=help_embed)
您可以从GitHub repository中查看完整的代码。