Discord.py - 我应该选择哪种方式? [关闭]

Posted

技术标签:

【中文标题】Discord.py - 我应该选择哪种方式? [关闭]【英文标题】:Discord.py - which way should I pick? [closed] 【发布时间】:2021-08-18 06:09:59 【问题描述】:

最近我知道开发人员能够以 2 种方式(甚至更多方式)编写 Discord.py 机器人:

    将每个命令编码为if message.content.startswith("hello"): 或将每个命令编码为async def hello(ctx):

那么,哪种类型的效率更高、效果更好? 谢谢

【问题讨论】:

我想在某些时候使用commands 会更好,但这只是我自己的看法。 on_message 事件只需将 message 作为参数,commands 可以更加通用。作为初学者,on_message 事件可能更典型。 随心所欲。您甚至可以同时使用这两种方法。创建commands 是为了让生活更简单,所以我会选择command - 它检查前缀和if message ...,所以我不必这样做。但是如果我需要一些不寻常的东西,那么我仍然可以使用`on_message. In one answer I created example which uses on_message`来运行一个不带前缀的命令,而其他命令仍然需要前缀。 只要使用commands,它们会更好处理且易于管理。 【参考方案1】:

如果您需要命令,请使用命令扩展名。 文档: https://discordpy.readthedocs.io/en/latest/ext/commands/commands.html

为什么要使用命令扩展?

防止意大利面条代码 更好的性能 轻松处理和处理命令参数 参数类型转换器 简单的子命令 命令冷却时间 内置帮助功能 简单的前缀管理 命令检查,用于控制何时调用它们 能够通过扩展/cogs 添加命令模块 仍然可以使用第一种方式完成所有您可以做的事情

【讨论】:

以上是关于Discord.py - 我应该选择哪种方式? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Meme 命令 discord.py

我应该为 HTML 嵌入选择哪种音频格式和哪种压缩方式?

Asyncio 和 Discord.py 超时上下文管理器应该在任务中使用

任务不删除消息,discord.py

我可以使用外部方式控制 discord.py 机器人吗?

Discord.py 带线程,RuntimeError: Timeout context manager 应该在任务内部使用