Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Discord Python:如何设置自定义参数以允许或不允许使用函数_Python_Python 3.x_Discord_Discord.py - Fatal编程技术网

Discord Python:如何设置自定义参数以允许或不允许使用函数

Discord Python:如何设置自定义参数以允许或不允许使用函数,python,python-3.x,discord,discord.py,Python,Python 3.x,Discord,Discord.py,嘿,我有一个discord机器人,我想为使用一些命令设置“权限”,比如员工命令、给定角色可用的命令,甚至是最低级别的命令 因此,我尝试将我的每个命令放在类中: class\u测试: 定义初始化(自): self.minimal_level=0 self.minimal\u role\u name=“有效成员” 自复位时间=5 self.pass\u角色=0 self.last_执行=0 self.executions=0 self.ban_成员=[] self.ban_role_name=[“静

嘿,我有一个discord机器人,我想为使用一些命令设置“权限”,比如员工命令、给定角色可用的命令,甚至是最低级别的命令

因此,我尝试将我的每个命令放在类中:

class\u测试:
定义初始化(自):
self.minimal_level=0
self.minimal\u role\u name=“有效成员”
自复位时间=5
self.pass\u角色=0
self.last_执行=0
self.executions=0
self.ban_成员=[]
self.ban_role_name=[“静音”、“警告1”、“警告2”]
@bot.command()
异步定义调用(self、ctx、*args、**kwargs):
尝试:
如果ctx.author.roles中的self.minimal_角色:
等待ctx发送(“做某事”)
其他:
等待ctx.send(“此角色无法执行此命令!”)
例外情况除外:
等待ctx.send(f“出现错误:``{exception}```”)
但这根本不起作用。然后我找到了COG,但是如果我在每个命令中都使用它们,我就不能用诸如人员命令、游戏经济、游戏战斗、游戏实用程序、设置等部分来分隔

我还想为每个命令在Cog类中使用
self.function\u foo\u perm={minimal\u level:0,minimal\u rol……}
的变量,但这真的是一个好的解决方案吗

最后,我想制作一个特殊的类来处理权限

但最好的办法是什么?还是更好


谢谢你的帮助

无关:您误用了类。你所做的“工作”,但它是令人难以置信的黑客


discord.py库中有许多检查装饰程序,涵盖了您需要的许多内容:

对于您所扮演的角色:

@commands.has_role("rolename"/roleid)
@commands.has_any_role("rolename"/roleid,"rolename"/roleid,"rolename"/roleid ...)
@bot.command()
async def ... 

自定义检查可以按如下方式实施:

def check_if_it_is_me(ctx):
    return ctx.message.author.id == 85309593344815104

@bot.command()
@commands.check(check_if_it_is_me)
async def only_for_me(ctx):
    await ctx.send('I know you!')

但如何检查重置时间、禁止成员等?我编辑了我的答案,并提供了一个如何编写自定义检查的示例。