我需要在多个扩展(COG)中使用同一个对象。如何编辑我的简单bot示例来实现这一点?你知道吗
我可以在我的主.py或者也在cog文件中。要点是在COG1和COG2扩展中使用相同的对象。重要的是要考虑到每个扩展都可以在程序启动后重新加载。你知道吗
我正在使用discord.py rewritelib
你知道吗主.py你知道吗
client = Bot(description="Bot", command_prefix="!")
client.run(__token__)
SHARED_OBJECT = SomeObject()
@client.event
async def on_ready():
client.dev = True
print('[Discord] Logged in as {} (ID:{}) | Connected to {} servers'.format(client.user.name,client.user.id,1))
client.load_extension('COG1')
client.load_extension('COG2')
COG1.PY类
class COG1():
def __init__(self, bot):
self.bot = bot
@commands.command()
async def test(self):
print()
def setup(bot):
bot.add_cog(COG1(bot))
COG1.PY类
class COG2():
def __init__(self, bot):
self.bot = bot
@commands.command()
async def test(self):
print("test")
def setup(bot):
bot.add_cog(COG2(bot))
如果您的COG都依赖于这个共享对象,那么您应该扪心自问,它们的功能是否真的足够独立,可以拆分为不同的模块。你知道吗
也就是说,如果您编写自己的
load_extension
,那么您可以编写setup
方法来获取这个共享对象并将其传递给类__init__
。为了简洁起见,我将下面的内容从actual implementation中删除了一些验证。你知道吗cog1.py:(与cog2的更改相同)
你知道吗主.py你知道吗
相关问题 更多 >
编程相关推荐