Пользовательский декоратор не работает с командами discord.pyPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Пользовательский декоратор не работает с командами discord.py

Сообщение Anonymous »

Сейчас я работаю над своим ботом в discord.py 2.0. Каждый раз, когда я создаю новую команду, мне нужно проверять, зарегистрирован ли пользователь в боте. Если нет, то отправьте заявку на регистрацию. Раньше мне приходилось прописывать эту проверку в каждой новой команде. Я посчитал это неразумным дублированием кода и поставил эту проверку в декораторе. Но когда я назначаю команде декоратор, она не добавляется в бот. Ее просто не существует. Я никогда раньше не сталкивался с такой проблемой. Если кто-то сталкивался с такой проблемой или имеет представление, в чем может быть проблема, то буду очень признателен услышать об этом.
Это класс команд.

Код: Выделить всё

from discord.ext import commands

from main import db

from scr.phrases_func import dict_to_str
from scr.cfg import phrases
from scr.command_author_check import command_author_check

class GeneralCommands(commands.Cog):
def __init__(self, bot: commands.Bot):
self.bot = bot

@commands.command()
async def info(self, ctx):
auth = ctx.message.author
if db.check_user(auth):
if db.get_user(auth).permissions_level >= 20:
await auth.send(ctx.message.author.mention + phrases.master_greeting + dict_to_str(phrases.master_commands))
else:
await auth.send(ctx.message.author.mention + phrases.slaves_greeting + dict_to_str(phrases.slaves_commands))
else:
await auth.send(ctx.message.author.mention + phrases.general_greeting + dict_to_str(phrases.slaves_commands))

@commands.command()
@command_author_check()
async def test(self, ctx):
await ctx.send("ПОЛУЧИЛОСЬ")

async def setup(bot: commands.Bot):
await bot.add_cog(GeneralCommands(bot))
Это декоратор.

Код: Выделить всё

from main import db
from scr.cfg import phrases
from scr import phrases_func

def command_author_check(permissions_level: int = 1):
print("command_author_check")

def decorator(func):
print("decorator")

async def wrapper(ctx, *args, **kwargs):
print("wrapper")
auth = ctx.message.author
if db.check_user(auth):
if db.get_user(auth).permissions_level >= permissions_level:
return await func(ctx, *args, **kwargs)
else:
await auth.send(ctx.message.author.mention + phrases.slaves_greeting + phrases_func.dict_to_str(phrases.slaves_commands))
else:
await auth.send(ctx.message.author.mention + phrases.general_greeting + phrases_func.dict_to_str(phrases.slaves_commands))
return wrapper
return decorator
Я пытался вызвать в своем декораторе команду, уже оформленную декоратором discord.exe.command.commands, но это ни к чему не привело.


Подробнее здесь: https://stackoverflow.com/questions/786 ... y-commands
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Проблема отправителя сообщений Discord.py с командами
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Discord Bot с Discord.py 2.0 - невозможно отобразить изображение из параметра ресурсов в discord.Streaming()
    Anonymous » » в форуме Python
    0 Ответы
    51 Просмотры
    Последнее сообщение Anonymous
  • Как это приложение может взаимодействовать с командами Bluetooth?
    Anonymous » » в форуме JAVA
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как это приложение может взаимодействовать с командами Bluetooth?
    Anonymous » » в форуме Android
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Голосовой помощник Python — ответы чата перекрываются с командами
    Гость » » в форуме Python
    0 Ответы
    26 Просмотры
    Последнее сообщение Гость

Вернуться в «Python»