Использование проверки в разногласиях-переписать шестеренку

Итак, это мой код, который у меня есть в моей программе перезаписи разногласий, я прочитал код, как cog_check из Github, но я не могу понять, как его использовать.

@commands.command()
async def mee(msg):
    await msg.send("ME")

Пример использования функции или объяснение было бы неплохо. Заранее спасибо!


person KowaiiNeko    schedule 06.03.2019    source источник


Ответы (2)


Он определяется на основе имени. Вам нужно предоставить сопрограмму cog_check, чтобы переопределить унаследованную от Cog

from discord.ext.commands import Cog, command

class MyCog(Cog):
    def __init__(self, bot):
        self.bot = bot
    async def cog_check(self, ctx):
        return True  # Whatever check you want to do
    @command()
    async def mee(self, ctx):
        await ctx.send("ME")
person Patrick Haugh    schedule 06.03.2019
comment
Есть ли способ использовать проверку только для одной команды внутри шестеренки или есть только способ применить ее ко всем командам внутри шестеренки? - person KowaiiNeko; 11.10.2019
comment
Вы можете применить проверку к отдельной команде обычным образом, используя синтаксис декоратора. - person Patrick Haugh; 11.10.2019
comment
Я все еще немного теряюсь в этом, не могли бы вы показать мне пример, отредактировав свой ответ? Это бы очень помогло.! - person KowaiiNeko; 14.10.2019

Нашел ответ на discord.py документация

def is_me():
    def predicate(ctx):
        return ctx.message.author.id == 85309593344815104
    return commands.check(predicate)

@bot.command()
@is_me()
async def only_me(ctx):
    await ctx.send('Only you!')
person KowaiiNeko    schedule 10.02.2020