[英]How can I load an extension inside a Cog in Discord.py?
我有一個文件ticket.py
,我目前正在使用client.load_extension(ticket)
將命令加載到我的機器人中。
ticket.py
看起來像這樣:
@commands.command(name='ticket')
async def ticket(ctx,*, args=None):
//do stuff
def setup(bot):
bot.add_command(ticket)
我將它加載到主文件中:
client=commands.Bot(command_prefix='!')
client.load_extension("ticket")
哪個工作正常,但目前, ticket
命令與 Cog 無關。 我想知道如何將它加載到 Cog 中(例如,使其與Utilities
Cog 相關聯)。
通常,我會簡單地在類中定義命令:
class Utilities(commands.Cog):
@commands.command(name='ticket')
async def ticket(self, ctx, *, args=None):
//do stuff
但是,我的代碼相當冗長乏味,我更願意在單獨的文件中處理它(因此ticket.py
位於main.py
之外)。
如何將工ticket
命令加載到Utilities
Cog 中? (同時保持ticket.py
和main.py
分開)。
您可以將命令的實際代碼存儲在另一個文件中,然后直接從 cog 內部調用它。
假設這被稱為command_ticket.py
並且你有一堆隨機參數:
async def _ticket(ctx, number: int, whatever: str, consume_rest: str):
# do things
然后,您只需在 cog 中調用它:
import command_ticket
class MyCog(commands.Cog):
@commands.command(name='ticket')
async def ticket(ctx, number: int, whatever: str, *, consume_rest: str = None):
command_ticket._ticket(ctx, number, whatever, consume_rest)
請注意,在這種情況下,無需為內部工單功能添加單獨的擴展 - 您只需使用 cog 注冊擴展即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.