首页 > 解决方案 > (PYTHON DISCORD BOT) @[].event 和 @[].command() 做什么?

问题描述

我正在编写一个简单的不和谐机器人,我是新手。在定义这样的函数之前,我使用了@.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")

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

标签: pythondiscordbots

解决方案


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

当您希望机器人在事件发生时执行某些操作时,使用 @.event。例如 on_typing 事件、on_message 事件或 on_member_join 事件。当这些事件发生时,你的机器人会做你写过的事情。您的 on_ready 事件是您的机器人等待的事件,并将执行您之后编写的操作。

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

一旦您开始了解它们,它们就非常易于使用,并且可以在您的程序中大量使用。我认为没有装饰器就无法创建命令或事件。请记住,如果您正在发出命令,请在其上方添加 @.command。如果是 on_message 之类的事件,请添加 @.event


推荐阅读