Сделать глобальную функцию проверки с помощью discord.py-rewrite - PullRequest
0 голосов
/ 02 февраля 2020

Итак, используя discord.py-rewrite, я знаю, что могу использовать:

def check(message):
    """Checks the message author and channel."""
    return message.author == ctx.author and message.channel == ctx.channel
await bot.wait_for("message", timeout=180, check=check)

для проверки ввода сообщений (который должен быть от автора контекста и в канале контекста) , Но поскольку мне нужна эта проверка для нескольких команд, я не могу просто сделать:

def check_msg(context, message):
    return context.author == message.author and context.channel == message.channel

и затем использовать:

await bot.wait_for("message", timeout=180, check=check_msg)

1 Ответ

2 голосов
/ 02 февраля 2020

Переписанная ветвь discord.py больше не существует. Теперь это просто v1.

Bot.wait_for s check Предикат для проверки того, что ждать, получает только переданные параметры ожидаемого события. Это означает, что, поскольку вы ожидаете событие сообщения, ему будет передан только один аргумент сообщения.

Один из способов достижения sh того, что вы хотите, - это использовать метод-обертку, который обрабатывает context параметр и возвращает предикат проверки, например:

def wrapper(context):
    def check_msg(message):
        return context.author == message.author and context.channel == message.channel
    return check_msg

await bot.wait_for("message", timeout=180, check=wrapper(ctx))
...