簡體   English   中英

如何在 Discord.py 的 Cog 中加載擴展?

[英]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.pymain.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM