|
|
|
@ -37,11 +37,13 @@ class Timerole(Cog):
|
|
|
|
|
self.bot = bot
|
|
|
|
|
self.config = Config.get_conf(self, identifier=9811198108111121, force_registration=True)
|
|
|
|
|
default_global = {}
|
|
|
|
|
default_guild = {"announce": None, "reapply": True, "roles": {}}
|
|
|
|
|
default_guild = {"announce": None, "reapply": True}
|
|
|
|
|
default_rolemember = {"had_role": False, "check_again_time": None}
|
|
|
|
|
default_role = {"enabled": False, "days": 0, "hours": 0, "remove": False, "required": []}
|
|
|
|
|
|
|
|
|
|
self.config.register_global(**default_global)
|
|
|
|
|
self.config.register_guild(**default_guild)
|
|
|
|
|
self.config.register_role(**default_role)
|
|
|
|
|
|
|
|
|
|
self.config.init_custom("RoleMember", 2)
|
|
|
|
|
self.config.register_custom("RoleMember", **default_rolemember)
|
|
|
|
@ -72,6 +74,16 @@ class Timerole(Cog):
|
|
|
|
|
|
|
|
|
|
await ctx.maybe_send_embed(f"Took {after_run-pre_run} seconds")
|
|
|
|
|
|
|
|
|
|
@commands.command()
|
|
|
|
|
@checks.guildowner()
|
|
|
|
|
@commands.guild_only()
|
|
|
|
|
async def import_timerole(self, ctx: commands.Context):
|
|
|
|
|
"""
|
|
|
|
|
Run once per guild to migrate data from the old version of timerole to the new version.
|
|
|
|
|
"""
|
|
|
|
|
# TODO: that ^
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
@commands.group()
|
|
|
|
|
@checks.mod_or_permissions(administrator=True)
|
|
|
|
|
@commands.guild_only()
|
|
|
|
@ -96,11 +108,14 @@ class Timerole(Cog):
|
|
|
|
|
days = parsed_time.days
|
|
|
|
|
hours = parsed_time.seconds // 60 // 60
|
|
|
|
|
|
|
|
|
|
to_set = {"days": days, "hours": hours, "remove": False}
|
|
|
|
|
if requiredroles:
|
|
|
|
|
to_set["required"] = [r.id for r in requiredroles]
|
|
|
|
|
# to_set = {"days": days, "hours": hours, "remove": False}
|
|
|
|
|
requiredroles = [r.id for r in requiredroles]
|
|
|
|
|
|
|
|
|
|
await self.config.guild(guild).roles.set_raw(role.id, value=to_set)
|
|
|
|
|
await self.config.role(role).days.set(days)
|
|
|
|
|
await self.config.role(role).hours.set(hours)
|
|
|
|
|
await self.config.role(role).remove.set(False)
|
|
|
|
|
await self.config.role(role).required.set(requiredroles)
|
|
|
|
|
await self.config.role(role).enabled.set(True)
|
|
|
|
|
await ctx.maybe_send_embed(
|
|
|
|
|
f"Time Role for {role.name} set to {days} days and {hours} hours until added"
|
|
|
|
|
)
|
|
|
|
@ -124,11 +139,13 @@ class Timerole(Cog):
|
|
|
|
|
days = parsed_time.days
|
|
|
|
|
hours = parsed_time.seconds // 60 // 60
|
|
|
|
|
|
|
|
|
|
to_set = {"days": days, "hours": hours, "remove": True}
|
|
|
|
|
if requiredroles:
|
|
|
|
|
to_set["required"] = [r.id for r in requiredroles]
|
|
|
|
|
requiredroles = [r.id for r in requiredroles]
|
|
|
|
|
|
|
|
|
|
await self.config.guild(guild).roles.set_raw(role.id, value=to_set)
|
|
|
|
|
await self.config.role(role).days.set(days)
|
|
|
|
|
await self.config.role(role).hours.set(hours)
|
|
|
|
|
await self.config.role(role).remove.set(True)
|
|
|
|
|
await self.config.role(role).required.set(requiredroles)
|
|
|
|
|
await self.config.role(role).enabled.set(True)
|
|
|
|
|
await ctx.maybe_send_embed(
|
|
|
|
|
f"Time Role for {role.name} set to {days} days and {hours} hours until removed"
|
|
|
|
|
)
|
|
|
|
@ -155,12 +172,12 @@ class Timerole(Cog):
|
|
|
|
|
@timerole.command()
|
|
|
|
|
async def delrole(self, ctx: commands.Context, role: discord.Role):
|
|
|
|
|
"""Deletes a role from being added/removed after specified time"""
|
|
|
|
|
guild = ctx.guild
|
|
|
|
|
|
|
|
|
|
await self.config.guild(guild).roles.set_raw(role.id, value=None)
|
|
|
|
|
await self.config.roles(role).enabled.set(False)
|
|
|
|
|
await self.config.custom("RoleMember", role.id).clear()
|
|
|
|
|
await ctx.maybe_send_embed(f"{role.name} will no longer be applied")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@timerole.command()
|
|
|
|
|
async def list(self, ctx: commands.Context):
|
|
|
|
|
"""Lists all currently setup timeroles"""
|
|
|
|
|