Update Roles lib with more helper methods, and typing parameters
This commit is contained in:
parent
e6cf2194b2
commit
a2c4d14540
|
|
@ -1,20 +1,24 @@
|
|||
from typing import override, List
|
||||
|
||||
import discord
|
||||
|
||||
class Roles:
|
||||
async def get_role(self, guild, role):
|
||||
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, roles):
|
||||
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, role, user):
|
||||
fetched_role = await self.get_role(guild, role)
|
||||
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:
|
||||
|
|
@ -22,11 +26,34 @@ class Roles:
|
|||
role_added = True
|
||||
return role_added
|
||||
|
||||
async def remove_role(self, guild, role, user):
|
||||
fetched_role = await self.get_role(guild, role)
|
||||
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
|
||||
Loading…
Reference in a new issue