Move all files into dakiny_bot package.
This commit is contained in:
@@ -0,0 +1,379 @@
|
||||
"""Contains commands and views for settings commands."""
|
||||
|
||||
import nextcord
|
||||
from nextcord.ext import commands
|
||||
|
||||
from DakinySettings import settings
|
||||
from utils import GUILDS
|
||||
|
||||
|
||||
class SettingsCog(commands.Cog, name="Settings Commands"):
|
||||
"""Class holds settings commands."""
|
||||
|
||||
def __init__(self) -> None:
|
||||
"""Default constructor for SettingsCog class. Does nothing."""
|
||||
|
||||
@nextcord.slash_command(guild_ids=GUILDS, default_member_permissions=nextcord.Permissions(administrator=True))
|
||||
async def settings(self, interaction: nextcord.Interaction) -> None:
|
||||
"""Parent slash command for settings. Never called."""
|
||||
|
||||
@settings.subcommand()
|
||||
async def channel_ids(self, interaction: nextcord.Interaction) -> None:
|
||||
"""Subcommand parent. Never called."""
|
||||
|
||||
@channel_ids.subcommand(description="Sets channel that bot sends verification requests to admins.")
|
||||
async def admin(
|
||||
self,
|
||||
interaction: nextcord.Interaction,
|
||||
channel: nextcord.TextChannel = nextcord.SlashOption(
|
||||
required=False, description="Channel to set to. If left blank, uses current channel."
|
||||
),
|
||||
) -> None:
|
||||
"""
|
||||
Sets DakinySettings channel_ids.admin value to given channel id or current channel id.
|
||||
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Discord interaction of command.
|
||||
channel (nextcord.TextChannel, optional): Channel to set in settings.
|
||||
"""
|
||||
channel_id = interaction.channel_id if channel is None else channel.id
|
||||
settings.channel_ids.admin = channel_id
|
||||
settings.save()
|
||||
await interaction.response.send_message(f"Admin verification channel set to <#{channel_id}>.", ephemeral=True)
|
||||
|
||||
@channel_ids.subcommand(description="Sets announcement channel.")
|
||||
async def announcement(
|
||||
self,
|
||||
interaction: nextcord.Interaction,
|
||||
channel: nextcord.TextChannel = nextcord.SlashOption(
|
||||
required=False, description="Channel to set to. If left blank, uses current channel."
|
||||
),
|
||||
) -> None:
|
||||
"""
|
||||
Sets DakinySettings channel_ids.announcement value to given channel id or current channel id.
|
||||
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Discord interaction of command.
|
||||
channel (nextcord.TextChannel, optional): Channel to set in settings.
|
||||
"""
|
||||
channel_id = interaction.channel_id if channel is None else channel.id
|
||||
settings.channel_ids.announcement = channel_id
|
||||
settings.save()
|
||||
await interaction.response.send_message(f"Announcement channel set to <#{channel_id}>.", ephemeral=True)
|
||||
|
||||
@channel_ids.subcommand(description="Sets clan info channel. Channel used for tracking current council.")
|
||||
async def clan_info(
|
||||
self,
|
||||
interaction: nextcord.Interaction,
|
||||
channel: nextcord.TextChannel = nextcord.SlashOption(
|
||||
required=False, description="Channel to set to. If left blank, uses current channel."
|
||||
),
|
||||
) -> None:
|
||||
"""
|
||||
Sets DakinySettings channel_ids.clan_info value to given channel id or current channel id.
|
||||
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Discord interaction of command.
|
||||
channel (nextcord.TextChannel, optional): Channel to set in settings.
|
||||
"""
|
||||
channel_id = interaction.channel_id if channel is None else channel.id
|
||||
settings.channel_ids.clan_info = channel_id
|
||||
settings.save()
|
||||
await interaction.response.send_message(f"Clan information channel set to <#{channel_id}>.", ephemeral=True)
|
||||
|
||||
@channel_ids.subcommand(
|
||||
description="Sets event post channel. Channel is where event tracking information is posted."
|
||||
)
|
||||
async def event_post(
|
||||
self,
|
||||
interaction: nextcord.Interaction,
|
||||
channel: nextcord.TextChannel = nextcord.SlashOption(
|
||||
required=False, description="Channel to set to. If left blank, uses current channel."
|
||||
),
|
||||
) -> None:
|
||||
"""
|
||||
Sets DakinySettings channel_ids.event_post value to given channel id or current channel id.
|
||||
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Discord interaction of command.
|
||||
channel (nextcord.TextChannel, optional): Channel to set in settings.
|
||||
"""
|
||||
channel_id = interaction.channel_id if channel is None else channel.id
|
||||
settings.channel_ids.event_post = channel_id
|
||||
settings.save()
|
||||
await interaction.response.send_message(f"Event posting channel set to <#{channel_id}>.", ephemeral=True)
|
||||
|
||||
@channel_ids.subcommand(description="Sets general channel.")
|
||||
async def general(
|
||||
self,
|
||||
interaction: nextcord.Interaction,
|
||||
channel: nextcord.TextChannel = nextcord.SlashOption(
|
||||
required=False, description="Channel to set to. If left blank, uses current channel."
|
||||
),
|
||||
) -> None:
|
||||
"""
|
||||
Sets DakinySettings channel_ids.general value to given channel id or current channel id.
|
||||
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Discord interaction of command.
|
||||
channel (nextcord.TextChannel, optional): Channel to set in settings.
|
||||
"""
|
||||
channel_id = interaction.channel_id if channel is None else channel.id
|
||||
settings.channel_ids.general = channel_id
|
||||
settings.save()
|
||||
await interaction.response.send_message(f"General channel set to <#{channel_id}>.", ephemeral=True)
|
||||
|
||||
@channel_ids.subcommand(description="Sets voting channel. Channel used as parent for voting threads.")
|
||||
async def voting(
|
||||
self,
|
||||
interaction: nextcord.Interaction,
|
||||
channel: nextcord.TextChannel = nextcord.SlashOption(
|
||||
required=False, description="Channel to set to. If left blank, uses current channel."
|
||||
),
|
||||
) -> None:
|
||||
"""
|
||||
Sets DakinySettings channel_ids.voting value to given channel id or current channel id.
|
||||
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Discord interaction of command.
|
||||
channel (nextcord.TextChannel, optional): Channel to set in settings.
|
||||
"""
|
||||
channel_id = interaction.channel_id if channel is None else channel.id
|
||||
settings.channel_ids.voting = channel_id
|
||||
settings.save()
|
||||
await interaction.response.send_message(f"Voting channel set to <#{channel_id}>.", ephemeral=True)
|
||||
|
||||
@settings.subcommand()
|
||||
async def point_settings(self, interaction: nextcord.Interaction) -> None:
|
||||
"""Subcommand parent. Never called."""
|
||||
|
||||
@point_settings.subcommand(description="Sets Points value.")
|
||||
async def clan_points(
|
||||
self,
|
||||
interaction: nextcord.Interaction,
|
||||
points: int = nextcord.SlashOption(
|
||||
required=True, description="Number of Clan Points the recipient earns.", min_value=0
|
||||
),
|
||||
) -> None:
|
||||
"""
|
||||
Sets DakinySettings point_settings.clan_points to the given number of points.
|
||||
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Discord interaction of command.
|
||||
points (int): Number of points to assign to PointSettings.points.
|
||||
"""
|
||||
settings.point_settings.clan_points = points
|
||||
settings.save()
|
||||
await interaction.response.send_message(f"Points set to {points}.", ephemeral=True)
|
||||
|
||||
@point_settings.subcommand(description="Sets Event Weekly Limit value for Clan Points.")
|
||||
async def clan_points_weekly_limit(
|
||||
self,
|
||||
interaction: nextcord.Interaction,
|
||||
points: int = nextcord.SlashOption(
|
||||
required=True, description="Number of Clan Points a clan member can earn in a week.", min_value=0
|
||||
),
|
||||
) -> None:
|
||||
"""
|
||||
Sets DakinySettings point_settings.clan_points_weekly_limit to the given number of points.
|
||||
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Discord interaction of command.
|
||||
points (int): Number of points to set.
|
||||
"""
|
||||
settings.point_settings.clan_points_weekly_limit = points
|
||||
settings.save()
|
||||
await interaction.response.send_message(f"Clan Points Weekly Limit set to {points}.", ephemeral=True)
|
||||
|
||||
@point_settings.subcommand(description="Sets Event Weekly Limit value.")
|
||||
async def events_weekly_limit(
|
||||
self,
|
||||
interaction: nextcord.Interaction,
|
||||
points: int = nextcord.SlashOption(
|
||||
required=True, description="Number of Event Points a clan member can earn in a week.", min_value=0
|
||||
),
|
||||
) -> None:
|
||||
"""
|
||||
Sets DakinySettings point_settings.events_weekly_limit to the given number of points.
|
||||
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Discord interaction of command.
|
||||
points (int): Number of points to set.
|
||||
"""
|
||||
settings.point_settings.events_weekly_limit = points
|
||||
settings.save()
|
||||
await interaction.response.send_message(f"Event Weekly Limit set to {points}.", ephemeral=True)
|
||||
|
||||
@point_settings.subcommand(description="Sets Event Host Points value.")
|
||||
async def host_points(
|
||||
self,
|
||||
interaction: nextcord.Interaction,
|
||||
points: int = nextcord.SlashOption(
|
||||
required=True, description="Number of Event Points a host earns when hosting event.", min_value=0
|
||||
),
|
||||
) -> None:
|
||||
"""
|
||||
Sets DakinySettings point_settings.host_points to the given number of points.
|
||||
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Discord interaction of command.
|
||||
points (int): Number of points to set.
|
||||
"""
|
||||
settings.point_settings.host_points = points
|
||||
settings.save()
|
||||
await interaction.response.send_message(f"Event Host Points set to {points}.", ephemeral=True)
|
||||
|
||||
@point_settings.subcommand(description="Sets Event Participation Points value.")
|
||||
async def participate_points(
|
||||
self,
|
||||
interaction: nextcord.Interaction,
|
||||
points: int = nextcord.SlashOption(
|
||||
required=True,
|
||||
description="Number of Event Points a participant earns when attending an event.",
|
||||
min_value=0,
|
||||
),
|
||||
) -> None:
|
||||
"""
|
||||
Sets DakinySettings point_settings.participate_points to the given number of points.
|
||||
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Discord interaction of command.
|
||||
points (int): Number of points to set.
|
||||
"""
|
||||
settings.point_settings.participate_points = points
|
||||
settings.save()
|
||||
await interaction.response.send_message(f"Event Participation Points set to {points}.", ephemeral=True)
|
||||
|
||||
@point_settings.subcommand(description="Sets whether to verify a clan point entry.")
|
||||
async def verify_clan_points(
|
||||
self,
|
||||
interaction: nextcord.Interaction,
|
||||
do_verification: bool = nextcord.SlashOption( # noqa: FBT001
|
||||
required=True,
|
||||
description="Whether an event should be verified or not.",
|
||||
),
|
||||
) -> None:
|
||||
"""
|
||||
Sets DakinySettings point_settings.verify_clan_points to the given number of points.
|
||||
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Discord interaction of command.
|
||||
do_verification (bool): If the bot should verify events.
|
||||
"""
|
||||
settings.point_settings.verify_clan_points = do_verification
|
||||
settings.save()
|
||||
await interaction.response.send_message(f"Event verification set to {do_verification}.", ephemeral=True)
|
||||
|
||||
@point_settings.subcommand(description="Sets whether an event.")
|
||||
async def verify_events(
|
||||
self,
|
||||
interaction: nextcord.Interaction,
|
||||
do_verification: bool = nextcord.SlashOption( # noqa: FBT001
|
||||
required=True,
|
||||
description="Whether an event should be verified or not.",
|
||||
),
|
||||
) -> None:
|
||||
"""
|
||||
Sets DakinySettings point_settings.verify_events to the given number of points.
|
||||
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Discord interaction of command.
|
||||
do_verification (bool): If the bot should verify events.
|
||||
"""
|
||||
settings.point_settings.verify_events = do_verification
|
||||
settings.save()
|
||||
await interaction.response.send_message(f"Event verification set to {do_verification}.", ephemeral=True)
|
||||
|
||||
@settings.subcommand()
|
||||
async def role_ids(self, interaction: nextcord.Interaction) -> None:
|
||||
"""Subcommand parent. Never called."""
|
||||
|
||||
@role_ids.subcommand(description="Sets Clan Council role id.")
|
||||
async def clan_council(
|
||||
self,
|
||||
interaction: nextcord.Interaction,
|
||||
role: nextcord.Role = nextcord.SlashOption(required=True, description="Role to set."),
|
||||
) -> None:
|
||||
"""
|
||||
Sets DakinySettings role_ids.clan_council to the given role id.
|
||||
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Discord interaction of command.
|
||||
role (nextcord.TextChannel): Role to set in settings.
|
||||
"""
|
||||
role_id = role.id
|
||||
settings.role_ids.clan_council = role_id
|
||||
settings.save()
|
||||
await interaction.response.send_message(f"Clan Council role set to <@&{role_id}>.", ephemeral=True)
|
||||
|
||||
@role_ids.subcommand(description="Sets Clan Council Elect role id.")
|
||||
async def clan_council_elect(
|
||||
self,
|
||||
interaction: nextcord.Interaction,
|
||||
role: nextcord.Role = nextcord.SlashOption(required=True, description="Role to set."),
|
||||
) -> None:
|
||||
"""
|
||||
Sets DakinySettings role_ids.clan_council_elect to the given role id.
|
||||
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Discord interaction of command.
|
||||
role (nextcord.TextChannel): Role to set in settings.
|
||||
"""
|
||||
role_id = role.id
|
||||
settings.role_ids.clan_council_elect = role_id
|
||||
settings.save()
|
||||
await interaction.response.send_message(f"Clan Council Elect role set to <@&{role_id}>.", ephemeral=True)
|
||||
|
||||
@role_ids.subcommand(description="Sets Clan Member role id.")
|
||||
async def clan_member(
|
||||
self,
|
||||
interaction: nextcord.Interaction,
|
||||
role: nextcord.Role = nextcord.SlashOption(required=True, description="Role to set."),
|
||||
) -> None:
|
||||
"""
|
||||
Sets DakinySettings role_ids.clan_member to the given role id.
|
||||
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Discord interaction of command.
|
||||
role (nextcord.TextChannel): Role to set in settings.
|
||||
"""
|
||||
role_id = role.id
|
||||
settings.role_ids.clan_member = role_id
|
||||
settings.save()
|
||||
await interaction.response.send_message(f"Clan Member role set to <@&{role_id}>.", ephemeral=True)
|
||||
|
||||
@role_ids.subcommand(description="Sets Event Host role id.")
|
||||
async def event_host(
|
||||
self,
|
||||
interaction: nextcord.Interaction,
|
||||
role: nextcord.Role = nextcord.SlashOption(required=True, description="Role to set."),
|
||||
) -> None:
|
||||
"""
|
||||
Sets DakinySettings role_ids.event_host to the given role id.
|
||||
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Discord interaction of command.
|
||||
role (nextcord.TextChannel): Role to set in settings.
|
||||
"""
|
||||
role_id = role.id
|
||||
settings.role_ids.event_host = role_id
|
||||
settings.save()
|
||||
await interaction.response.send_message(f"Event Host role set to <@&{role_id}>.", ephemeral=True)
|
||||
|
||||
@role_ids.subcommand(description="Sets High Council role id.")
|
||||
async def high_council(
|
||||
self,
|
||||
interaction: nextcord.Interaction,
|
||||
role: nextcord.Role = nextcord.SlashOption(required=True, description="Role to set."),
|
||||
) -> None:
|
||||
"""
|
||||
Sets DakinySettings role_ids.high_council to the given role id.
|
||||
|
||||
Args:
|
||||
interaction (nextcord.Interaction): Discord interaction of command.
|
||||
role (nextcord.TextChannel): Role to set in settings.
|
||||
"""
|
||||
role_id = role.id
|
||||
settings.role_ids.high_council = role_id
|
||||
settings.save()
|
||||
await interaction.response.send_message(f"High Council role set to <@&{role_id}>.", ephemeral=True)
|
||||
Reference in New Issue
Block a user