forked from cswimr/SeaCogs
feat(aurora): adding the first parts of menu configs
This commit is contained in:
parent
ebccec54bf
commit
14705efddd
4 changed files with 47 additions and 6 deletions
|
@ -21,7 +21,8 @@ class Configuration(Mixin):
|
||||||
@aurora_settings.command(name="core")
|
@aurora_settings.command(name="core")
|
||||||
async def aurora_settings_core(self, ctx: commands.Context):
|
async def aurora_settings_core(self, ctx: commands.Context):
|
||||||
"""Manage Aurora's core settings."""
|
"""Manage Aurora's core settings."""
|
||||||
await ctx.send(embed=await embed(ctx))
|
menu = await embed(ctx)
|
||||||
|
await ctx.send(embed=menu[0], view=menu[1])
|
||||||
|
|
||||||
@aurora_settings.command(name="addrole", aliases=["removerole"])
|
@aurora_settings.command(name="addrole", aliases=["removerole"])
|
||||||
@commands.admin_or_permissions(manage_guild=True)
|
@commands.admin_or_permissions(manage_guild=True)
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
from typing import Union
|
from typing import Union
|
||||||
|
|
||||||
from discord import Embed, Guild, Member, User
|
from discord import Embed, Guild, Member, User, ui
|
||||||
from redbot.core import commands
|
from redbot.core import commands
|
||||||
from redbot.core.utils.chat_formatting import bold, error, warning
|
from redbot.core.utils.chat_formatting import bold, error, warning
|
||||||
|
|
||||||
from .utils import get_bool_emoji, get_pagesize_str
|
from aurora.configuration.menus.core import Overrides
|
||||||
from ..utilities.config import config
|
from aurora.configuration.utils import get_bool_emoji, get_pagesize_str
|
||||||
|
from aurora.utilities.config import config
|
||||||
|
|
||||||
async def _core(ctx: commands.Context) -> Embed:
|
async def _core(ctx: commands.Context) -> Embed:
|
||||||
"""Generates the core embed for configuration menus to use."""
|
"""Generates the core embed for configuration menus to use."""
|
||||||
|
@ -100,13 +101,15 @@ async def _immune(guild: Guild) -> str:
|
||||||
immune = warning("No roles are set as immune roles!")
|
immune = warning("No roles are set as immune roles!")
|
||||||
return immune
|
return immune
|
||||||
|
|
||||||
async def embed(ctx: commands.Context) -> Embed:
|
async def embed(ctx: commands.Context) -> (Embed, ui.View):
|
||||||
"""Generates the configuration embed for a guild."""
|
"""Generates the configuration embed for a guild."""
|
||||||
e = await _core(ctx)
|
e = await _core(ctx)
|
||||||
e.add_field(name="User Overrides", value=await _overrides(ctx.author), inline=False)
|
e.add_field(name="User Overrides", value=await _overrides(ctx.author), inline=False)
|
||||||
|
view = Overrides(ctx)
|
||||||
if ctx.guild is not None and (ctx.author.guild_permissions.administrator or ctx.author.guild_permissions.manage_guild):
|
if ctx.guild is not None and (ctx.author.guild_permissions.administrator or ctx.author.guild_permissions.manage_guild):
|
||||||
e.add_field(name="Guild Settings", value=await _guild(ctx.guild), inline=False)
|
e.add_field(name="Guild Settings", value=await _guild(ctx.guild), inline=False)
|
||||||
return e
|
view = None
|
||||||
|
return (e, view)
|
||||||
|
|
||||||
async def addrole_embed(ctx: commands.Context) -> Embed:
|
async def addrole_embed(ctx: commands.Context) -> Embed:
|
||||||
"""Generates the addrole embed for a guild."""
|
"""Generates the addrole embed for a guild."""
|
||||||
|
|
37
aurora/configuration/menus/core.py
Normal file
37
aurora/configuration/menus/core.py
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
from discord import ui, ButtonStyle, Interaction
|
||||||
|
from redbot.core import commands
|
||||||
|
|
||||||
|
from aurora.configuration.embed import embed
|
||||||
|
from aurora.utilities.config import config
|
||||||
|
|
||||||
|
class Overrides(ui.View):
|
||||||
|
def __init__(self, ctx: commands.Context):
|
||||||
|
super().__init__()
|
||||||
|
self.ctx = ctx
|
||||||
|
|
||||||
|
@ui.button(label="Auto Evidence Format", style=ButtonStyle.green)
|
||||||
|
async def auto_evidenceformat(self, interaction: Interaction, button: ui.Button): # pylint: disable=unused-argument
|
||||||
|
current_setting = await config.user(self.ctx.author).auto_evidenceformat()
|
||||||
|
if current_setting:
|
||||||
|
await config.user(self.ctx.author).auto_evidenceformat.set(not current_setting)
|
||||||
|
else:
|
||||||
|
await config.user(self.ctx.author).auto_evidenceformat.set(True)
|
||||||
|
await self.ctx.message.edit(embed=await embed(self.ctx))
|
||||||
|
|
||||||
|
@ui.button(label="Ephemeral", style=ButtonStyle.green)
|
||||||
|
async def ephemeral(self, interaction: Interaction, button: ui.Button): # pylint: disable=unused-argument
|
||||||
|
current_setting = await config.user(self.ctx.author).history_ephemeral()
|
||||||
|
if current_setting:
|
||||||
|
await config.user(self.ctx.author).history_ephemeral.set(not current_setting)
|
||||||
|
else:
|
||||||
|
await config.user(self.ctx.author).history_ephemeral.set(True)
|
||||||
|
await self.ctx.message.edit(embed=await embed(self.ctx))
|
||||||
|
|
||||||
|
@ui.button(label="Inline", style=ButtonStyle.green)
|
||||||
|
async def inline(self, interaction: Interaction, button: ui.Button): # pylint: disable=unused-argument
|
||||||
|
current_setting = await config.user(self.ctx.author).history_inline()
|
||||||
|
if current_setting:
|
||||||
|
await config.user(self.ctx.author).history_inline.set(not current_setting)
|
||||||
|
else:
|
||||||
|
await config.user(self.ctx.author).history_inline.set(True)
|
||||||
|
await self.ctx.message.edit(embed=await embed(self.ctx))
|
Loading…
Reference in a new issue