我看到许多开发人员用两种方式为Discord编写python机器人。
有些人使用:
if message.content.startswith("command"):
await message.channel.send("text")
和其他人(大多数)使用这种方法:
@client.command()
async def command(ctx):
response = "Text"
await ctx.send(response)
两者之间的区别是什么,哪种方法更好/更有效?
使用@client.command()
和async def
意味着它们是coroutine
内部的可调用函数,而if
,我认为,将需要在某种循环中嵌套。
当你client.RUN(TOKEN)
启动你的bot时,Discord模块启动一个asyncio coroutine
。它使用async
和await
来允许异步任务管理,请参阅Python文档中的协程和Discord.py API参考文件中的wait_for事件