(PYTHON DISCORD BOT) @[].event 和@[].command() 有什么作用?

(PYTHON DISCORD BOT) What does @[].event and @[].command() do?

我正在编写一个简单的 discord 机器人,我是新手。我在定义这样的函数之前使用 @.event 或 @.command() 因为我在视频中看到它们:

import discord
from discord.ext import commands

bot = commands.Bot(command_prefix="!", description="I'M HERE TO SERVE YOU.",)

@bot.event
async def on_ready():
   print(f"BOT {bot.user.name} IS READY TO MISSION.")

@client.command() 
async def ping(ctx):
   await ctx.send(f"PONG! {round(client.latency * 1000)}ms")

我想知道他们是做什么的。有没有办法在不使用这些代码的情况下使用它们?

那些是discord py的装饰器,用于声明后面函数的一些信息。

当您希望机器人在事件发生时执行某些操作时,可以使用 @.event。例如 on_typing 事件、on_message 事件或 on_member_join 事件。当其中一些事件发生时,您的机器人将执行您编写的任何操作。您的 on_ready 事件是您的机器人等待的事件,并将执行您之后编写的内容。

@.command() 用于创建命令,让 discord 中的用户可以输入并执行您的代码。因此,当用户执行您定义的前缀和后面的关键字时,@.command 将使您的代码执行您的功能。在 () 中你可以传入诸如 ctx 之类的东西,它可以在你的函数中使用,阅读相关文档。

一旦你开始思考,它们就非常容易使用,并且可以在你的程序中大量使用。我不认为你可以在没有装饰器的情况下创建命令或事件。请记住,如果您正在执行命令,请在其上方添加@.command。如果是 on_message 之类的事件,请添加 @.event