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 - 我应该选择哪种方式? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Asyncio 和 Discord.py 超时上下文管理器应该在任务中使用
Discord.py 带线程,RuntimeError: Timeout context manager 应该在任务内部使用