FunkyBot/libs/Roles.py

59 lines
2.1 KiB
Python

from typing import override, List
import discord
class Roles:
async def get_guild_role(self, guild: discord.Guild, role: str) -> discord.Role:
fetched_role = None
for r in guild.roles:
if r.name == role:
fetched_role = r
return fetched_role
async def get_roles(self, guild: discord.Guild, roles: List[str]) -> List[discord.Role]:
found_roles = []
for r in guild.roles:
if r.name in roles:
found_roles.append(r)
return found_roles
async def add_role(self, guild: discord.Guild, role: str, user: discord.Member|discord.User) -> bool:
fetched_role = await self.get_guild_role(guild, role)
role_added = False
if fetched_role is not None:
if fetched_role not in user.roles:
await user.add_roles(fetched_role)
role_added = True
return role_added
async def remove_role(self, guild: discord.Guild, role: str, user: discord.Member|discord.User) -> bool:
fetched_role = await self.get_guild_role(guild, role)
role_removed = False
if fetched_role is not None:
if fetched_role in user.roles:
await user.remove_roles(fetched_role)
role_removed = True
return role_removed
@override
async def remove_role(self, role: discord.Role, user: discord.Member|discord.User) -> bool:
role_removed = False
if role is not None and role in user.roles:
await user.remove_roles(role)
role_removed = True
return role_removed
async def add_guild_role(self, role):
role_added = False
if not await self.get_guild_role(role):
await self.bot.guild.create_role(name=role)
role_added = True
return role_added
async def remove_guild_role(self, guild, role):
role_removed = False
fetched_role = await self.get_guild_role(role)
if fetched_role:
await fetched_role.delete()
role_removed = True
return role_removed