using Octobot.Data.Options;
using Octobot.Responders;
using Remora.Discord.API.Abstractions.Objects;
namespace Octobot.Data;
///
/// Contains all per-guild settings that can be set by a member
/// with using the /settings command
///
public static class GuildSettings
{
public static readonly LanguageOption Language = new("Language", "en");
public static readonly Option WarnPunishment = new("WarnPunishment", "disabled");
///
/// Controls what message should be sent in when a new member joins the guild.
///
///
///
/// - No message will be sent if set to "off", "disable" or "disabled".
/// - will be sent if set to "default" or "reset".
///
///
///
public static readonly Option WelcomeMessage = new("WelcomeMessage", "default");
///
/// Controls what message should be sent in when a member leaves the guild.
///
///
///
/// - No message will be sent if set to "off", "disable" or "disabled".
/// - will be sent if set to "default" or "reset".
///
///
///
public static readonly Option LeaveMessage = new("LeaveMessage", "default");
///
/// Controls whether or not the message should be sent
/// in on startup.
///
///
public static readonly BoolOption ReceiveStartupMessages = new("ReceiveStartupMessages", false);
public static readonly BoolOption RemoveRolesOnMute = new("RemoveRolesOnMute", false);
///
/// Controls whether or not a guild member's roles are returned if he/she leaves and then joins back.
///
/// Roles will not be returned if the member left the guild because of /ban or /kick.
public static readonly BoolOption ReturnRolesOnRejoin = new("ReturnRolesOnRejoin", false);
public static readonly BoolOption AutoStartEvents = new("AutoStartEvents", false);
///
/// Controls whether or not users who try to hoist themselves should be renamed.
///
public static readonly BoolOption RenameHoistedUsers = new("RenameHoistedUsers", false);
public static readonly IntOption WarnsThreshold = new("WarnsThreshold", 0);
///
/// Controls what channel should all public messages be sent to.
///
public static readonly SnowflakeOption PublicFeedbackChannel = new("PublicFeedbackChannel");
///
/// Controls what channel should all private, moderator-only messages be sent to.
///
public static readonly SnowflakeOption PrivateFeedbackChannel = new("PrivateFeedbackChannel");
///
/// Controls what channel should welcome messages be sent to.
///
public static readonly SnowflakeOption WelcomeMessagesChannel = new("WelcomeMessagesChannel");
public static readonly SnowflakeOption EventNotificationChannel = new("EventNotificationChannel");
public static readonly SnowflakeOption DefaultRole = new("DefaultRole");
public static readonly SnowflakeOption MuteRole = new("MuteRole");
public static readonly SnowflakeOption ModeratorRole = new("ModeratorRole");
public static readonly SnowflakeOption EventNotificationRole = new("EventNotificationRole");
///
/// Controls the amount of time before a scheduled event to send a reminder in .
///
public static readonly TimeSpanOption EventEarlyNotificationOffset = new(
"EventEarlyNotificationOffset", TimeSpan.Zero);
public static readonly TimeSpanOption WarnPunishmentDuration = new(
"WarnPunishmentDuration", TimeSpan.Zero);
}