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)
|
await ctx.send("Cannot add `@everyone` to rolegiver", ephemeral=True)
|
||||||
return
|
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))
|
setting = await Rolegiver.find_one(q(guild=ctx.guild.id))
|
||||||
if setting and role.id in setting.roles:
|
if setting and role.id in setting.roles:
|
||||||
await ctx.send("Role already in rolegiver", ephemeral=True)
|
await ctx.send("Role already in rolegiver", ephemeral=True)
|
||||||
|
|
|
@ -105,6 +105,12 @@ class SettingsCog(Scale):
|
||||||
if role.id == ctx.guild.id:
|
if role.id == ctx.guild.id:
|
||||||
await ctx.send("Cannot set verified to `@everyone`", ephemeral=True)
|
await ctx.send("Cannot set verified to `@everyone`", ephemeral=True)
|
||||||
return
|
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 ctx.defer()
|
||||||
await self.update_settings("verified", role.id, ctx.guild.id)
|
await self.update_settings("verified", role.id, ctx.guild.id)
|
||||||
await ctx.send(f"Settings applied. New verified role is `{role.name}`")
|
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:
|
if role.id == ctx.guild.id:
|
||||||
await ctx.send("Cannot set unverified to `@everyone`", ephemeral=True)
|
await ctx.send("Cannot set unverified to `@everyone`", ephemeral=True)
|
||||||
return
|
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 ctx.defer()
|
||||||
await self.update_settings("unverified", role.id, ctx.guild.id)
|
await self.update_settings("unverified", role.id, ctx.guild.id)
|
||||||
await ctx.send(f"Settings applied. New unverified role is `{role.name}`")
|
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")
|
await ctx.send("Setting `massmention` unset")
|
||||||
|
|
||||||
@unset.subcommand(sub_cmd_name="verified", sub_cmd_description="Unset verified role")
|
@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))
|
@check(admin_or_permissions(Permissions.MANAGE_GUILD))
|
||||||
async def _unset_verified(self, ctx: InteractionContext) -> None:
|
async def _unset_verified(self, ctx: InteractionContext) -> None:
|
||||||
await ctx.defer()
|
await ctx.defer()
|
||||||
await self.delete_settings("verified", ctx.guild.id)
|
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")
|
@unset.subcommand(sub_cmd_name="unverified", sub_cmd_description="Unset unverified role")
|
||||||
@check(admin_or_permissions(Permissions.MANAGE_GUILD))
|
@check(admin_or_permissions(Permissions.MANAGE_GUILD))
|
||||||
|
|
|
@ -45,7 +45,13 @@ class VerifyCog(Scale):
|
||||||
if not role:
|
if not role:
|
||||||
message = await ctx.send("This guild has not enabled verification", ephemeral=True)
|
message = await ctx.send("This guild has not enabled verification", ephemeral=True)
|
||||||
return
|
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)
|
await ctx.send("You are already verified.", ephemeral=True)
|
||||||
return
|
return
|
||||||
components = create_layout()
|
components = create_layout()
|
||||||
|
@ -69,12 +75,18 @@ class VerifyCog(Scale):
|
||||||
for component in row.components:
|
for component in row.components:
|
||||||
component.disabled = True
|
component.disabled = True
|
||||||
setting = await Setting.find_one(q(guild=ctx.guild.id, setting="verified"))
|
setting = await Setting.find_one(q(guild=ctx.guild.id, setting="verified"))
|
||||||
role = await ctx.guild.fetch_role(setting.value)
|
try:
|
||||||
await ctx.author.add_role(role, reason="Verification passed")
|
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"))
|
setting = await Setting.find_one(q(guild=ctx.guild.id, setting="unverified"))
|
||||||
if setting:
|
if setting:
|
||||||
role = await ctx.guild.fetch_role(setting.value)
|
try:
|
||||||
await ctx.author.remove_role(role, reason="Verification passed")
|
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(
|
await response.context.edit_origin(
|
||||||
content=f"Welcome, {ctx.author.mention}. Please enjoy your stay.",
|
content=f"Welcome, {ctx.author.mention}. Please enjoy your stay.",
|
||||||
|
|
Loading…
Add table
Reference in a new issue