Migrate rolegiver to custom database object
This commit is contained in:
parent
59ef2aeac3
commit
0a10b8fc02
3 changed files with 36 additions and 27 deletions
|
@ -41,7 +41,7 @@ jarvis = commands.Bot(
|
||||||
|
|
||||||
slash = SlashCommand(jarvis, sync_commands=False, sync_on_cog_reload=True)
|
slash = SlashCommand(jarvis, sync_commands=False, sync_on_cog_reload=True)
|
||||||
jarvis_self = Process()
|
jarvis_self = Process()
|
||||||
__version__ = "1.10.7"
|
__version__ = "1.10.8"
|
||||||
|
|
||||||
|
|
||||||
@jarvis.event
|
@jarvis.event
|
||||||
|
|
|
@ -4,7 +4,7 @@ from discord.ext import commands
|
||||||
from discord_slash import SlashContext, cog_ext
|
from discord_slash import SlashContext, cog_ext
|
||||||
from discord_slash.utils.manage_commands import create_option
|
from discord_slash.utils.manage_commands import create_option
|
||||||
|
|
||||||
from jarvis.db.models import Setting
|
from jarvis.db.models import Rolegiver
|
||||||
from jarvis.utils import build_embed
|
from jarvis.utils import build_embed
|
||||||
from jarvis.utils.field import Field
|
from jarvis.utils.field import Field
|
||||||
from jarvis.utils.permissions import admin_or_permissions
|
from jarvis.utils.permissions import admin_or_permissions
|
||||||
|
@ -31,19 +31,19 @@ class RolegiverCog(commands.Cog):
|
||||||
)
|
)
|
||||||
@admin_or_permissions(manage_guild=True)
|
@admin_or_permissions(manage_guild=True)
|
||||||
async def _rolegiver_add(self, ctx: SlashContext, role: Role) -> None:
|
async def _rolegiver_add(self, ctx: SlashContext, role: Role) -> None:
|
||||||
setting = Setting.objects(guild=ctx.guild.id, setting="rolegiver").first()
|
setting = Rolegiver.objects(guild=ctx.guild.id).first()
|
||||||
if setting and role.id in setting.value:
|
if setting and role.id in setting.roles:
|
||||||
await ctx.send("Role already in rolegiver", hidden=True)
|
await ctx.send("Role already in rolegiver", hidden=True)
|
||||||
return
|
return
|
||||||
|
|
||||||
if not setting:
|
if not setting:
|
||||||
setting = Setting(guild=ctx.guild.id, setting="rolegiver", value=[])
|
setting = Rolegiver(guild=ctx.guild.id, roles=[])
|
||||||
|
|
||||||
setting.value.append(role.id)
|
setting.roles.append(role.id)
|
||||||
setting.save()
|
setting.save()
|
||||||
|
|
||||||
roles = []
|
roles = []
|
||||||
for role_id in setting.value:
|
for role_id in setting.roles:
|
||||||
if role_id == role.id:
|
if role_id == role.id:
|
||||||
continue
|
continue
|
||||||
e_role = ctx.guild.get_role(role_id)
|
e_role = ctx.guild.get_role(role_id)
|
||||||
|
@ -82,7 +82,7 @@ class RolegiverCog(commands.Cog):
|
||||||
options=[
|
options=[
|
||||||
create_option(
|
create_option(
|
||||||
name="role",
|
name="role",
|
||||||
description="Role to add",
|
description="Role to remove",
|
||||||
option_type=8,
|
option_type=8,
|
||||||
required=True,
|
required=True,
|
||||||
)
|
)
|
||||||
|
@ -90,19 +90,19 @@ class RolegiverCog(commands.Cog):
|
||||||
)
|
)
|
||||||
@admin_or_permissions(manage_guild=True)
|
@admin_or_permissions(manage_guild=True)
|
||||||
async def _rolegiver_remove(self, ctx: SlashContext, role: Role) -> None:
|
async def _rolegiver_remove(self, ctx: SlashContext, role: Role) -> None:
|
||||||
setting = Setting.objects(guild=ctx.guild.id, setting="rolegiver").first()
|
setting = Rolegiver.objects(guild=ctx.guild.id).first()
|
||||||
if not setting or (setting and not setting.value):
|
if not setting or (setting and not setting.roles):
|
||||||
await ctx.send("Rolegiver has no roles", hidden=True)
|
await ctx.send("Rolegiver has no roles", hidden=True)
|
||||||
return
|
return
|
||||||
elif role.id not in setting.value:
|
elif role.id not in setting.roles:
|
||||||
await ctx.send("Role not in rolegiver", hidden=True)
|
await ctx.send("Role not in rolegiver", hidden=True)
|
||||||
return
|
return
|
||||||
|
|
||||||
setting.value.remove(role.id)
|
setting.roles.remove(role.id)
|
||||||
setting.save()
|
setting.save()
|
||||||
|
|
||||||
roles = []
|
roles = []
|
||||||
for role_id in setting.value:
|
for role_id in setting.roles:
|
||||||
e_role = ctx.guild.get_role(role_id)
|
e_role = ctx.guild.get_role(role_id)
|
||||||
if not e_role:
|
if not e_role:
|
||||||
continue
|
continue
|
||||||
|
@ -139,13 +139,13 @@ class RolegiverCog(commands.Cog):
|
||||||
description="List roles rolegiver",
|
description="List roles rolegiver",
|
||||||
)
|
)
|
||||||
async def _rolegiver_list(self, ctx: SlashContext) -> None:
|
async def _rolegiver_list(self, ctx: SlashContext) -> None:
|
||||||
setting = Setting.objects(guild=ctx.guild.id, setting="rolegiver").first()
|
setting = Rolegiver.objects(guild=ctx.guild.id).first()
|
||||||
if not setting or (setting and not setting.value):
|
if not setting or (setting and not setting.roles):
|
||||||
await ctx.send("Rolegiver has no roles", hidden=True)
|
await ctx.send("Rolegiver has no roles", hidden=True)
|
||||||
return
|
return
|
||||||
|
|
||||||
roles = []
|
roles = []
|
||||||
for role_id in setting.value:
|
for role_id in setting.roles:
|
||||||
e_role = ctx.guild.get_role(role_id)
|
e_role = ctx.guild.get_role(role_id)
|
||||||
if not e_role:
|
if not e_role:
|
||||||
continue
|
continue
|
||||||
|
@ -157,7 +157,7 @@ class RolegiverCog(commands.Cog):
|
||||||
value = "\n".join([r.mention for r in roles]) if roles else "None"
|
value = "\n".join([r.mention for r in roles]) if roles else "None"
|
||||||
|
|
||||||
embed = build_embed(
|
embed = build_embed(
|
||||||
title="Rolegiver Updated",
|
title="Rolegiver",
|
||||||
description=f"Available roles:\n{value}",
|
description=f"Available roles:\n{value}",
|
||||||
fields=[],
|
fields=[],
|
||||||
)
|
)
|
||||||
|
@ -187,11 +187,11 @@ class RolegiverCog(commands.Cog):
|
||||||
)
|
)
|
||||||
@commands.cooldown(1, 10, commands.BucketType.user)
|
@commands.cooldown(1, 10, commands.BucketType.user)
|
||||||
async def _role_get(self, ctx: SlashContext, role: Role) -> None:
|
async def _role_get(self, ctx: SlashContext, role: Role) -> None:
|
||||||
setting = Setting.objects(guild=ctx.guild.id, setting="rolegiver").first()
|
setting = Rolegiver.objects(guild=ctx.guild.id).first()
|
||||||
if not setting or (setting and not setting.value):
|
if not setting or (setting and not setting.roles):
|
||||||
await ctx.send("Rolegiver has no roles", hidden=True)
|
await ctx.send("Rolegiver has no roles", hidden=True)
|
||||||
return
|
return
|
||||||
elif role.id not in setting.value:
|
elif role.id not in setting.roles:
|
||||||
await ctx.send("Role not in rolegiver", hidden=True)
|
await ctx.send("Role not in rolegiver", hidden=True)
|
||||||
return
|
return
|
||||||
elif role in ctx.author.roles:
|
elif role in ctx.author.roles:
|
||||||
|
@ -242,11 +242,11 @@ class RolegiverCog(commands.Cog):
|
||||||
)
|
)
|
||||||
@commands.cooldown(1, 10, commands.BucketType.user)
|
@commands.cooldown(1, 10, commands.BucketType.user)
|
||||||
async def _role_forfeit(self, ctx: SlashContext, role: Role) -> None:
|
async def _role_forfeit(self, ctx: SlashContext, role: Role) -> None:
|
||||||
setting = Setting.objects(guild=ctx.guild.id, setting="rolegiver").first()
|
setting = Rolegiver.objects(guild=ctx.guild.id).first()
|
||||||
if not setting or (setting and not setting.value):
|
if not setting or (setting and not setting.roles):
|
||||||
await ctx.send("Rolegiver has no roles", hidden=True)
|
await ctx.send("Rolegiver has no roles", hidden=True)
|
||||||
return
|
return
|
||||||
elif role.id not in setting.value:
|
elif role.id not in setting.roles:
|
||||||
await ctx.send("Role not in rolegiver", hidden=True)
|
await ctx.send("Role not in rolegiver", hidden=True)
|
||||||
return
|
return
|
||||||
elif role not in ctx.author.roles:
|
elif role not in ctx.author.roles:
|
||||||
|
@ -289,14 +289,14 @@ class RolegiverCog(commands.Cog):
|
||||||
)
|
)
|
||||||
@admin_or_permissions(manage_guild=True)
|
@admin_or_permissions(manage_guild=True)
|
||||||
async def _rolegiver_cleanup(self, ctx: SlashContext) -> None:
|
async def _rolegiver_cleanup(self, ctx: SlashContext) -> None:
|
||||||
setting = Setting.objects(guild=ctx.guild.id, setting="rolegiver").first()
|
setting = Rolegiver.objects(guild=ctx.guild.id).first()
|
||||||
if not setting or not setting.value:
|
if not setting or not setting.roles:
|
||||||
await ctx.send("Rolegiver has no roles", hidden=True)
|
await ctx.send("Rolegiver has no roles", hidden=True)
|
||||||
guild_roles = await ctx.guild.fetch_roles()
|
guild_roles = await ctx.guild.fetch_roles()
|
||||||
guild_role_ids = [x.id for x in guild_roles]
|
guild_role_ids = [x.id for x in guild_roles]
|
||||||
for role_id in setting.value:
|
for role_id in setting.roles:
|
||||||
if role_id not in guild_role_ids:
|
if role_id not in guild_role_ids:
|
||||||
setting.value.remove(role_id)
|
setting.roles.remove(role_id)
|
||||||
setting.save()
|
setting.save()
|
||||||
|
|
||||||
await ctx.send("Rolegiver cleanup finished")
|
await ctx.send("Rolegiver cleanup finished")
|
||||||
|
|
|
@ -159,6 +159,15 @@ class Reminder(Document):
|
||||||
meta = {"db_alias": "main"}
|
meta = {"db_alias": "main"}
|
||||||
|
|
||||||
|
|
||||||
|
class Rolegiver(Document):
|
||||||
|
"""Rolegiver database object."""
|
||||||
|
|
||||||
|
guild = SnowflakeField(required=True)
|
||||||
|
roles = ListField(field=SnowflakeField())
|
||||||
|
|
||||||
|
meta = {"db_alias": "main"}
|
||||||
|
|
||||||
|
|
||||||
class Roleping(Document):
|
class Roleping(Document):
|
||||||
"""Roleping database object."""
|
"""Roleping database object."""
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue