@@ -50,8 +50,14 @@ async def ping(self, ctx: SlashContext):
50
50
:param connector: Kwargs connector for the command. Default ``None``.
51
51
:type connector: dict
52
52
"""
53
+ if not permissions :
54
+ permissions = {}
53
55
54
56
def wrapper (cmd ):
57
+ decorator_permissions = getattr (cmd , "__permissions__" , None )
58
+ if decorator_permissions :
59
+ permissions .update (decorator_permissions )
60
+
55
61
desc = description or inspect .getdoc (cmd )
56
62
if options is None :
57
63
opts = manage_commands .generate_options (cmd , desc , connector )
@@ -138,8 +144,14 @@ async def group_say(self, ctx: SlashContext, text: str):
138
144
base_description = base_description or base_desc
139
145
subcommand_group_description = subcommand_group_description or sub_group_desc
140
146
guild_ids = guild_ids if guild_ids else []
147
+ if not base_permissions :
148
+ base_permissions = {}
141
149
142
150
def wrapper (cmd ):
151
+ decorator_permissions = getattr (cmd , "__permissions__" , None )
152
+ if decorator_permissions :
153
+ base_permissions .update (decorator_permissions )
154
+
143
155
desc = description or inspect .getdoc (cmd )
144
156
if options is None :
145
157
opts = manage_commands .generate_options (cmd , desc , connector )
@@ -177,6 +189,25 @@ def wrapper(cmd):
177
189
return wrapper
178
190
179
191
192
+ def permission (guild_id : int , permissions : list ):
193
+ """
194
+ Decorator that add permissions. This will set the permissions for a single guild, you can use it more than once for each command.
195
+
196
+ :param guild_id: ID of the guild for the permissions.
197
+ :type guild_id: int
198
+ :param permissions: List of permissions to be set for the specified guild.
199
+ :type permissions: list
200
+ """
201
+
202
+ def wrapper (cmd ):
203
+ if not getattr (cmd , "__permissions__" , None ):
204
+ cmd .__permissions__ = {}
205
+ cmd .__permissions__ [guild_id ] = permissions
206
+ return cmd
207
+
208
+ return wrapper
209
+
210
+
180
211
def cog_component (
181
212
* ,
182
213
messages : typing .Union [int , discord .Message , list ] = None ,
0 commit comments