Эй, у меня есть бот разногласий, и я хочу установить «разрешения» для использования некоторых команд, таких как команды для персонала, команды, доступные с заданными ролями, или даже с минимальным уровнем.
Поэтому я пытаюсь поместите каждую из моих команд в классе:
class class_test:
def __init__(self):
self.minimal_level = 0
self.minimal_role_name = "valid_member"
self.reset_time = 5
self.pass_role = 0
self.last_execution = 0
self.executions = 0
self.ban_members = []
self.ban_role_name = ["mute", "warn 1", "warn 2"]
@bot.command()
async def __call__(self, ctx, *args, **kwargs):
try:
if self.minimal_role in ctx.author.roles :
await ctx.send("do somthing")
else:
await ctx.send("This role no able to do this command !")
except Exception as exception:
await ctx.send(f"an error as occurs : ```{exception}```")
Но это не работает вообще. Затем я нашел винтики, но если бы я использовал их для каждой команды, я не смог бы разделить их на такие разделы, как staff_commands, game_economy, game_fight, game_utils, settings и т. Д. c, ...
сделать для каждой команды переменную в моем классе Cog с self.function_foo_perm = {minimal_level : 0, minimal_rol......}
, но действительно ли это хорошее решение?
Наконец, я подумал создать специальный класс для передачи разрешения.
Но как лучше? Или это что-то лучше?
Спасибо за помощь!