我正在构建一个 Discord 机器人。该机器人应该将一些信息存储到一些内部变量中,以便以后访问。为此,我将其构造为一个类(与许多命令在定义之外的示例相反class
)。但是,我发现当您使用@commands.command(name='test')
装饰器时,该方法会变成一种“静态”方法,并且不再将对象作为第一个输入。
鉴于此,有什么方法可以访问类属性(例如an_instance_property
下面的示例)和/或类方法(例如a_class_method
下面的示例)?
如果这是错误的方法,那么对于具有内部状态的机器人来说有什么更好的方法呢?
import discord
from discord.ext import commands
with open('TOKEN', 'r') as f:
TOKEN = f.read()
class mybot(commands.Bot):
def __init__(self):
intents = discord.Intents.default()
super().__init__(command_prefix="!", intents=intents)
self.add_command(self.test)
self.an_instance_property = [] # <----
def a_class_method(x): # <----
return x
@commands.command(name='test')
async def test(ctx, *args):
# How can I access self.an_instance_property from here?
# How can I call self.a_class_method from here?
return
bot = mybot()
bot.run(TOKEN)