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:
|
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
|
fetched_role = None
|
||||||
for r in guild.roles:
|
for r in guild.roles:
|
||||||
if r.name == role:
|
if r.name == role:
|
||||||
fetched_role = r
|
fetched_role = r
|
||||||
return fetched_role
|
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 = []
|
found_roles = []
|
||||||
for r in guild.roles:
|
for r in guild.roles:
|
||||||
if r.name in roles:
|
if r.name in roles:
|
||||||
found_roles.append(r)
|
found_roles.append(r)
|
||||||
return found_roles
|
return found_roles
|
||||||
|
|
||||||
async def add_role(self, guild, role, user):
|
async def add_role(self, guild: discord.Guild, role: str, user: discord.Member|discord.User) -> bool:
|
||||||
fetched_role = await self.get_role(guild, role)
|
fetched_role = await self.get_guild_role(guild, role)
|
||||||
role_added = False
|
role_added = False
|
||||||
if fetched_role is not None:
|
if fetched_role is not None:
|
||||||
if fetched_role not in user.roles:
|
if fetched_role not in user.roles:
|
||||||
|
|
@ -22,11 +26,34 @@ class Roles:
|
||||||
role_added = True
|
role_added = True
|
||||||
return role_added
|
return role_added
|
||||||
|
|
||||||
async def remove_role(self, guild, role, user):
|
async def remove_role(self, guild: discord.Guild, role: str, user: discord.Member|discord.User) -> bool:
|
||||||
fetched_role = await self.get_role(guild, role)
|
fetched_role = await self.get_guild_role(guild, role)
|
||||||
role_removed = False
|
role_removed = False
|
||||||
if fetched_role is not None:
|
if fetched_role is not None:
|
||||||
if fetched_role in user.roles:
|
if fetched_role in user.roles:
|
||||||
await user.remove_roles(fetched_role)
|
await user.remove_roles(fetched_role)
|
||||||
role_removed = True
|
role_removed = True
|
||||||
return role_removed
|
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