Skip to content
This repository has been archived by the owner on Nov 12, 2022. It is now read-only.

Fixed Role.py Permissions Bug #15

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Commands/help.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ async def help(self, ctx, value: str = None):
embed.set_thumbnail(url=self.client.user.avatar_url)
embed.add_field(name="📷 Profile", value=f"`Profile Customisation`")
embed.add_field(name="😃 Fun", value=f"`Fun Commands`")
if ctx.author.guild_permissions.administrator:
if ctx.author.guild_permissions.administrator or ctx.author.id == int(config["Bot_Owner"]):
embed.add_field(name="🔧 Admin", value=f"`Admin Commands`")
if ctx.author.id == int(config["Bot_Owner"]):
embed.add_field(name="💼 Owner", value=f"`Owner Commands`")
Expand All @@ -40,7 +40,7 @@ async def help(self, ctx, value: str = None):
await msg.add_reaction("😃")
if ctx.author.id == int(config["Bot_Owner"]):
await msg.add_reaction("💼")
if ctx.author.guild_permissions.administrator:
if ctx.author.guild_permissions.administrator or ctx.author.id == int(config["Bot_Owner"]):
await msg.add_reaction("🔧")
if os.path.isfile("Addons/Extras.py"):
await msg.add_reaction("🔗")
Expand Down
62 changes: 38 additions & 24 deletions Commands/role.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import KumosLab.Database.remove

from discord.ext.commands import RoleNotFound
from discord.ext.commands import has_permissions, CheckFailure

import vacefron

Expand All @@ -17,36 +18,42 @@
config = yaml.load(file)



# Roles Class
class role(commands.Cog):
def __init__(self, client):
self.client = client

# Role Command
@commands.command()
@commands.command(pass_context=True)
@has_permissions(manage_roles=True)
async def role(self, ctx, state: str = None, role_name: discord.Role = None, role_level: int = None):
if state is None:
embed = discord.Embed(description=f"🔴 **ERROR**: `You must define add or remove! - {config['Prefix']}role <add|remove> <role> <role level>`")
embed = discord.Embed(
description=f"🔴 **ERROR**: `You must define add or remove! - {config['Prefix']}role <add|remove> <role> <role level>`")
await ctx.reply(embed=embed)
return
if role is None:
embed = discord.Embed(description=f"🔴 **ERROR**: `You must define a role! - {config['Prefix']}role <add|remove> <role> <role level>`")
embed = discord.Embed(
description=f"🔴 **ERROR**: `You must define a role! - {config['Prefix']}role <add|remove> <role> <role level>`")
await ctx.send(embed=embed)
return
if role_level is None:
embed = discord.Embed(description=f"🔴 **ERROR**: `You must define a role level! - {config['Prefix']}role <add|remove> <role> <role level>`")
embed = discord.Embed(
description=f"🔴 **ERROR**: `You must define a role level! - {config['Prefix']}role <add|remove> <role> <role level>`")
await ctx.send(embed=embed)
return
try:
if state.lower() == "add":
exists = await KumosLab.Database.add.role(guild=ctx.guild, role_name=role_name, role_level=int(role_level))
exists = await KumosLab.Database.add.role(guild=ctx.guild, role_name=role_name,
role_level=int(role_level))
if exists == "error":
embed = discord.Embed(description=f"🔴 **ERROR**: `Role already exists! - {config['Prefix']}role <add|remove> <role> <role level>`")
embed = discord.Embed(
description=f"🔴 **ERROR**: `Role already exists! - {config['Prefix']}role <add|remove> <role> <role level>`")
await ctx.reply(embed=embed)
return
else:
embed = discord.Embed(description=f"🟢 **SUCCESS**: `Added {role_name} to unlock at Level {role_level}`")
embed = discord.Embed(
description=f"🟢 **SUCCESS**: `Added {role_name} to unlock at Level {role_level}`")
await ctx.reply(embed=embed)
elif state.lower() == "remove":
await KumosLab.Database.remove.role(guild=ctx.guild, role_name=role_name, role_level=int(role_level))
Expand All @@ -55,10 +62,20 @@ async def role(self, ctx, state: str = None, role_name: discord.Role = None, rol
await ctx.reply(embed=embed)

except RoleNotFound as e:
embed = discord.Embed(description=f"🔴 **ERROR**: `Role not found! - {config['Prefix']}role <add|remove> <role> <role level>`")
embed = discord.Embed(
description=f"🔴 **ERROR**: `Role not found! - {config['Prefix']}role <add|remove> <role> <role level>`")
await ctx.send(embed=embed)
return

@role_add.error
async def role_add_error(self, error, ctx):
if isinstance(error, CheckFailure):
embed = discord.Embed(
title=":x: Error", description="Looks like you don't have the permission to create new unlockable "
"roles! **Required Permission:** Manage Roles", color=config[
"error_embed_colour"])
await ctx.reply(embed=embed)

# Role List Command
@commands.command()
async def roles(self, ctx):
Expand All @@ -70,29 +87,35 @@ async def roles(self, ctx):
embed.add_field(name="Level:", value="`No level required!`")
else:
embed.add_field(name="Roles:", value=f"`{str(role_array).replace('[', '').replace(']', '')}`")
embed.add_field(name="Level:", value=f"`{str(role_level_array).replace('[', '').replace(']', '')}`", inline=False)
embed.add_field(name="Level:", value=f"`{str(role_level_array).replace('[', '').replace(']', '')}`",
inline=False)
await ctx.send(embed=embed)

@commands.command()
async def creator(self, ctx, amount: int = None, prefix: str = None):
if amount is None:
embed = discord.Embed(description=f"🔴 **ERROR**: `You must define a amount! - {config['Prefix']}creator <amount> <role-prefix>`")
embed = discord.Embed(
description=f"🔴 **ERROR**: `You must define a amount! - {config['Prefix']}creator <amount> <role-prefix>`")
await ctx.reply(embed=embed)
return
if prefix is None:
embed = discord.Embed(description=f"🔴 **ERROR**: `You must define a role-prefix! - {config['Prefix']}creator <amount> <role-prefix>`")
embed = discord.Embed(
description=f"🔴 **ERROR**: `You must define a role-prefix! - {config['Prefix']}creator <amount> <role-prefix>`")
await ctx.reply(embed=embed)
return
if amount > 50 or amount < 1:
embed = discord.Embed(description=f"🔴 **ERROR**: `You can only create 50 roles at a time! - {config['Prefix']}creator <amount> <role-prefix>`")
embed = discord.Embed(
description=f"🔴 **ERROR**: `You can only create 50 roles at a time! - {config['Prefix']}creator <amount> <role-prefix>`")
await ctx.reply(embed=embed)
return
if len(prefix) > 10 or len(prefix) < 1:
embed = discord.Embed(description=f"🔴 **ERROR**: `You can only create a prefix with 10 characters! - {config['Prefix']}creator <amount> <role-prefix>`")
embed = discord.Embed(
description=f"🔴 **ERROR**: `You can only create a prefix with 10 characters! - {config['Prefix']}creator <amount> <role-prefix>`")
await ctx.reply(embed=embed)
return
# loop amount of times
message = await ctx.send(f"🔓 **CREATING ROLES**: `Creating {amount} roles with prefix {prefix}. Please wait, this may take some time...`")
message = await ctx.send(
f"🔓 **CREATING ROLES**: `Creating {amount} roles with prefix {prefix}. Please wait, this may take some time...`")
for i in range(amount):
# create role
role = await ctx.guild.create_role(name=f"{prefix} {i + 1}")
Expand All @@ -102,15 +125,6 @@ async def creator(self, ctx, amount: int = None, prefix: str = None):
await message.edit(content=f"🔓 **CREATING ROLES**: `Created {amount} roles with prefix {prefix}.`")











# Sets-up the cog for roles
def setup(client):
client.add_cog(role(client))