Fix various setting and role-related bugs
This commit is contained in:
parent
966738b524
commit
373e95b9af
3 changed files with 37 additions and 9 deletions
|
@ -41,6 +41,13 @@ class RolegiverCog(Scale):
|
|||
await ctx.send("Cannot add `@everyone` to rolegiver", ephemeral=True)
|
||||
return
|
||||
|
||||
if role.bot_managed or not role.is_assignable:
|
||||
await ctx.send(
|
||||
"Cannot assign this role, try lowering it below my role or using a different role",
|
||||
ephemeral=True,
|
||||
)
|
||||
return
|
||||
|
||||
setting = await Rolegiver.find_one(q(guild=ctx.guild.id))
|
||||
if setting and role.id in setting.roles:
|
||||
await ctx.send("Role already in rolegiver", ephemeral=True)
|
||||
|
|
|
@ -105,6 +105,12 @@ class SettingsCog(Scale):
|
|||
if role.id == ctx.guild.id:
|
||||
await ctx.send("Cannot set verified to `@everyone`", ephemeral=True)
|
||||
return
|
||||
if role.bot_managed or not role.is_assignable:
|
||||
await ctx.send(
|
||||
"Cannot assign this role, try lowering it below my role or using a different role",
|
||||
ephemeral=True,
|
||||
)
|
||||
return
|
||||
await ctx.defer()
|
||||
await self.update_settings("verified", role.id, ctx.guild.id)
|
||||
await ctx.send(f"Settings applied. New verified role is `{role.name}`")
|
||||
|
@ -118,6 +124,12 @@ class SettingsCog(Scale):
|
|||
if role.id == ctx.guild.id:
|
||||
await ctx.send("Cannot set unverified to `@everyone`", ephemeral=True)
|
||||
return
|
||||
if role.bot_managed or not role.is_assignable:
|
||||
await ctx.send(
|
||||
"Cannot assign this role, try lowering it below my role or using a different role",
|
||||
ephemeral=True,
|
||||
)
|
||||
return
|
||||
await ctx.defer()
|
||||
await self.update_settings("unverified", role.id, ctx.guild.id)
|
||||
await ctx.send(f"Settings applied. New unverified role is `{role.name}`")
|
||||
|
@ -169,14 +181,11 @@ class SettingsCog(Scale):
|
|||
await ctx.send("Setting `massmention` unset")
|
||||
|
||||
@unset.subcommand(sub_cmd_name="verified", sub_cmd_description="Unset verified role")
|
||||
@slash_option(
|
||||
name="role", description="Verified role", opt_type=OptionTypes.ROLE, required=True
|
||||
)
|
||||
@check(admin_or_permissions(Permissions.MANAGE_GUILD))
|
||||
async def _unset_verified(self, ctx: InteractionContext) -> None:
|
||||
await ctx.defer()
|
||||
await self.delete_settings("verified", ctx.guild.id)
|
||||
await ctx.send("Setting `massmention` unset")
|
||||
await ctx.send("Setting `verified` unset")
|
||||
|
||||
@unset.subcommand(sub_cmd_name="unverified", sub_cmd_description="Unset unverified role")
|
||||
@check(admin_or_permissions(Permissions.MANAGE_GUILD))
|
||||
|
|
|
@ -45,7 +45,13 @@ class VerifyCog(Scale):
|
|||
if not role:
|
||||
message = await ctx.send("This guild has not enabled verification", ephemeral=True)
|
||||
return
|
||||
if await ctx.guild.fetch_role(role.value) in ctx.author.roles:
|
||||
verified_role = await ctx.guild.fetch_role(role.value)
|
||||
if not verified_role:
|
||||
await ctx.send("This guild has not enabled verification", ephemeral=True)
|
||||
await role.delete()
|
||||
return
|
||||
|
||||
if verified_role in ctx.author.roles:
|
||||
await ctx.send("You are already verified.", ephemeral=True)
|
||||
return
|
||||
components = create_layout()
|
||||
|
@ -69,12 +75,18 @@ class VerifyCog(Scale):
|
|||
for component in row.components:
|
||||
component.disabled = True
|
||||
setting = await Setting.find_one(q(guild=ctx.guild.id, setting="verified"))
|
||||
try:
|
||||
role = await ctx.guild.fetch_role(setting.value)
|
||||
await ctx.author.add_role(role, reason="Verification passed")
|
||||
except AttributeError:
|
||||
self.logger.warn("Verified role deleted before verification finished")
|
||||
setting = await Setting.find_one(q(guild=ctx.guild.id, setting="unverified"))
|
||||
if setting:
|
||||
try:
|
||||
role = await ctx.guild.fetch_role(setting.value)
|
||||
await ctx.author.remove_role(role, reason="Verification passed")
|
||||
except AttributeError:
|
||||
self.logger.warn("Unverified role deleted before verification finished")
|
||||
|
||||
await response.context.edit_origin(
|
||||
content=f"Welcome, {ctx.author.mention}. Please enjoy your stay.",
|
||||
|
|
Loading…
Add table
Reference in a new issue