fix(ranks): Add create permission check.

This commit is contained in:
2023-10-06 12:52:11 +03:00
parent 04b4050172
commit 1f7b90612b

View File

@@ -6,7 +6,7 @@ from discord.ui.select import select, Select, SelectOption, RoleSelect
from discord.ui.button import button, Button, ButtonStyle from discord.ui.button import button, Button, ButtonStyle
from meta import conf, LionBot from meta import conf, LionBot
from meta.errors import ResponseTimedOut from meta.errors import ResponseTimedOut, SafeCancellation
from core.data import RankType from core.data import RankType
from data import ORDER from data import ORDER
@@ -16,7 +16,7 @@ from wards import equippable_role
from babel.translator import ctx_translator from babel.translator import ctx_translator
from .. import babel, logger from .. import babel, logger
from ..data import AnyRankData from ..data import AnyRankData, RankData
from ..utils import rank_model_from_type, format_stat_range, stat_data_to_value from ..utils import rank_model_from_type, format_stat_range, stat_data_to_value
from .editor import RankEditor from .editor import RankEditor
from .preview import RankPreviewUI from .preview import RankPreviewUI
@@ -157,11 +157,21 @@ class RankOverviewUI(MessageUI):
Errors if the client does not have permission to create roles. Errors if the client does not have permission to create roles.
""" """
t = self.bot.translator.t
if not self.guild.me.guild_permissions.manage_roles:
raise SafeCancellation(t(_p(
'ui:rank_overview|button:create|error:my_permissions',
"I lack the 'Manage Roles' permission required to create rank roles!"
)))
async def _create_callback(rank, submit: discord.Interaction): async def _create_callback(rank, submit: discord.Interaction):
await submit.response.send_message( await submit.response.send_message(
embed=discord.Embed( embed=discord.Embed(
colour=discord.Colour.brand_green(), colour=discord.Colour.brand_green(),
description="Rank Created!" description=t(_p(
'ui:rank_overview|button:create|success',
"Created a new rank {role}"
)).format(role=f"<@&{rank.roleid}>")
), ),
ephemeral=True ephemeral=True
) )