Просмотр исходного кода

Constant for mod-only permissions, closing permission gaps in all cogs

pull/13/head
Rocketsoup 2 месяцев назад
Родитель
Сommit
a99243f78f

+ 3
- 1
rocketbot/cogs/configcog.py Просмотреть файл

10
 from config import CONFIG
10
 from config import CONFIG
11
 from rocketbot.storage import ConfigKey, Storage
11
 from rocketbot.storage import ConfigKey, Storage
12
 from rocketbot.cogs.basecog import BaseCog
12
 from rocketbot.cogs.basecog import BaseCog
13
+from rocketbot.utils import MOD_PERMISSIONS
14
+
13
 
15
 
14
 class ConfigCog(BaseCog, name='Configuration'):
16
 class ConfigCog(BaseCog, name='Configuration'):
15
 	"""
17
 	"""
28
 		name='config',
30
 		name='config',
29
 		description='Manages general bot configuration',
31
 		description='Manages general bot configuration',
30
 		guild_only=True,
32
 		guild_only=True,
31
-		default_permissions=Permissions(Permissions.manage_messages.flag)
33
+		default_permissions=MOD_PERMISSIONS,
32
 	)
34
 	)
33
 
35
 
34
 	@config.command()
36
 	@config.command()

+ 4
- 4
rocketbot/cogs/generalcog.py Просмотреть файл

67
 		},
67
 		},
68
 	)
68
 	)
69
 	@guild_only()
69
 	@guild_only()
70
-	@default_permissions(manage_messages=True)
71
-	async def testwarn(self, interaction: Interaction):
70
+	@default_permissions(ban_members=True)
71
+	async def test_warn(self, interaction: Interaction):
72
 		"""Command handler"""
72
 		"""Command handler"""
73
 		if Storage.get_config_value(interaction.guild, ConfigKey.WARNING_CHANNEL_ID) is None:
73
 		if Storage.get_config_value(interaction.guild, ConfigKey.WARNING_CHANNEL_ID) is None:
74
 			await interaction.response.send_message(
74
 			await interaction.response.send_message(
108
 		},
108
 		},
109
 	)
109
 	)
110
 	@guild_only()
110
 	@guild_only()
111
-	@default_permissions(manage_messages=True)
111
+	@default_permissions(administrator=True)
112
 	async def shutdown(self, interaction: Interaction):
112
 	async def shutdown(self, interaction: Interaction):
113
 		"""Command handler"""
113
 		"""Command handler"""
114
 		await interaction.response.send_message('👋', ephemeral=True)
114
 		await interaction.response.send_message('👋', ephemeral=True)
126
 	)
126
 	)
127
 	@guild_only()
127
 	@guild_only()
128
 	@default_permissions(manage_messages=True)
128
 	@default_permissions(manage_messages=True)
129
-	async def deletemessages(self, interaction: Interaction, user: User, age: Transform[timedelta, TimeDeltaTransformer]) -> None:
129
+	async def delete_messages(self, interaction: Interaction, user: User, age: Transform[timedelta, TimeDeltaTransformer]) -> None:
130
 		"""Command handler"""
130
 		"""Command handler"""
131
 		member_id = user.id
131
 		member_id = user.id
132
 		cutoff: datetime = datetime.now(timezone.utc) - age
132
 		cutoff: datetime = datetime.now(timezone.utc) - age

+ 3
- 1
rocketbot/cogs/joinagecog.py Просмотреть файл

12
 from rocketbot.cogs.basecog import BaseCog, BotMessage, BotMessageReaction, CogSetting
12
 from rocketbot.cogs.basecog import BaseCog, BotMessage, BotMessageReaction, CogSetting
13
 from rocketbot.collections import AgeBoundList
13
 from rocketbot.collections import AgeBoundList
14
 from rocketbot.storage import Storage
14
 from rocketbot.storage import Storage
15
-from rocketbot.utils import TimeDeltaTransformer
15
+from rocketbot.utils import TimeDeltaTransformer, MOD_PERMISSIONS
16
 
16
 
17
 
17
 
18
 class JoinAgeQueryContext:
18
 class JoinAgeQueryContext:
54
 	joinage = Group(
54
 	joinage = Group(
55
 		name='joinage',
55
 		name='joinage',
56
 		description='Queries for users who joined in the past span of time',
56
 		description='Queries for users who joined in the past span of time',
57
+		guild_only=True,
58
+		default_permissions=MOD_PERMISSIONS,
57
 		extras={
59
 		extras={
58
 			'long_description': 'Searches for users who joined the server recently. ' + \
60
 			'long_description': 'Searches for users who joined the server recently. ' + \
59
 				'Can use time spans like 30s, 5m, 1h, 7d, etc.',
61
 				'Can use time spans like 30s, 5m, 1h, 7d, etc.',

+ 5
- 4
rocketbot/cogs/patterncog.py Просмотреть файл

8
 
8
 
9
 from discord import Guild, Member, Message, utils as discordutils, Permissions, Interaction
9
 from discord import Guild, Member, Message, utils as discordutils, Permissions, Interaction
10
 from discord.app_commands import Choice, Group, autocomplete, rename
10
 from discord.app_commands import Choice, Group, autocomplete, rename
11
-from discord.ext import commands
11
+from discord.ext.commands import Cog
12
 
12
 
13
 from config import CONFIG
13
 from config import CONFIG
14
 from rocketbot.bot import Rocketbot
14
 from rocketbot.bot import Rocketbot
17
 from rocketbot.pattern import PatternCompiler, PatternDeprecationError, \
17
 from rocketbot.pattern import PatternCompiler, PatternDeprecationError, \
18
 	PatternError, PatternStatement
18
 	PatternError, PatternStatement
19
 from rocketbot.storage import Storage
19
 from rocketbot.storage import Storage
20
-from rocketbot.utils import dump_stacktrace
20
+from rocketbot.utils import dump_stacktrace, MOD_PERMISSIONS
21
+
21
 
22
 
22
 class PatternContext:
23
 class PatternContext:
23
 	"""
24
 	"""
148
 			Storage.set_state_value(guild, 'PatternCog.last_matched', last_matched)
149
 			Storage.set_state_value(guild, 'PatternCog.last_matched', last_matched)
149
 		last_matched[name] = time
150
 		last_matched[name] = time
150
 
151
 
151
-	@commands.Cog.listener()
152
+	@Cog.listener()
152
 	async def on_message(self, message: Message) -> None:
153
 	async def on_message(self, message: Message) -> None:
153
 		"""Event listener"""
154
 		"""Event listener"""
154
 		if message.author is None or \
155
 		if message.author is None or \
261
 		name='pattern',
262
 		name='pattern',
262
 		description='Manages message pattern matching.',
263
 		description='Manages message pattern matching.',
263
 		guild_only=True,
264
 		guild_only=True,
264
-		default_permissions=Permissions(Permissions.manage_messages.flag),
265
+		default_permissions=MOD_PERMISSIONS,
265
 	)
266
 	)
266
 
267
 
267
 	@pattern.command()
268
 	@pattern.command()

+ 3
- 1
rocketbot/cogs/usernamecog.py Просмотреть файл

10
 from config import CONFIG
10
 from config import CONFIG
11
 from rocketbot.cogs.basecog import BaseCog, BotMessage, BotMessageReaction, CogSetting
11
 from rocketbot.cogs.basecog import BaseCog, BotMessage, BotMessageReaction, CogSetting
12
 from rocketbot.storage import Storage
12
 from rocketbot.storage import Storage
13
+from rocketbot.utils import MOD_PERMISSIONS
14
+
13
 
15
 
14
 class UsernamePatternContext:
16
 class UsernamePatternContext:
15
 	"""
17
 	"""
83
 		name='username',
85
 		name='username',
84
 		description='Manages username pattern detection.',
86
 		description='Manages username pattern detection.',
85
 		guild_only=True,
87
 		guild_only=True,
86
-		default_permissions=Permissions(Permissions.manage_messages.flag),
88
+		default_permissions=MOD_PERMISSIONS,
87
 	)
89
 	)
88
 
90
 
89
 	@username.command(
91
 	@username.command(

+ 3
- 1
rocketbot/utils.py Просмотреть файл

8
 from typing import Any, Optional, Type, Union
8
 from typing import Any, Optional, Type, Union
9
 
9
 
10
 import discord
10
 import discord
11
-from discord import Guild
11
+from discord import Guild, Permissions
12
 from discord.ext.commands import Cog
12
 from discord.ext.commands import Cog
13
 
13
 
14
 def dump_stacktrace(e: BaseException) -> None:
14
 def dump_stacktrace(e: BaseException) -> None:
171
 		raise ValueError(f'Not a quoted string: {val}')
171
 		raise ValueError(f'Not a quoted string: {val}')
172
 	return val[1:-1]
172
 	return val[1:-1]
173
 
173
 
174
+MOD_PERMISSIONS: Permissions = Permissions(Permissions.manage_messages.flag)
175
+
174
 from discord import Interaction
176
 from discord import Interaction
175
 from discord.app_commands import Transformer
177
 from discord.app_commands import Transformer
176
 from discord.ext.commands import BadArgument
178
 from discord.ext.commands import BadArgument

Загрузка…
Отмена
Сохранить