Пример #1
0
        public static IReadOnlyDictionary <SlashCommandOptions, string> OptionsToDictionary(IReadOnlyCollection <SocketSlashCommandDataOption> options)
        {
            Dictionary <SlashCommandOptions, string> optionsDictionary = new();

            foreach (SocketSlashCommandDataOption option in options)
            {
                SlashCommandOptions optionEnum = (SlashCommandOptions)Enum.Parse(typeof(SlashCommandOptions), option.Name);

                if (option.Value is IUser)
                {
                    optionsDictionary[optionEnum] = $"{(option.Value as IUser).Username}#{(option.Value as IUser).Discriminator}";
                }
                else
                {
                    optionsDictionary[optionEnum] = option.Value.ToString();
                }
            }

            PostProcessOptions(optionsDictionary);

            return(optionsDictionary);
        }
Пример #2
0
        public static void AddCommonOptionProperties(SlashCommandOptionBuilder optionBuilder, SlashCommandOptions supportedOptions)
        {
            if (supportedOptions.HasFlag(SlashCommandOptions.team))
            {
                optionBuilder.AddOption(SlashCommandOptions.team.ToString(),
                                        ApplicationCommandOptionType.String,
                                        "Filter command option to a specific team name.");
            }

            if (supportedOptions.HasFlag(SlashCommandOptions.org))
            {
                optionBuilder.AddOption(
                    name: SlashCommandOptions.org.ToString(),
                    type: ApplicationCommandOptionType.String,
                    description: "Filter command option to a specific organization (company).");
            }

            if (supportedOptions.HasFlag(SlashCommandOptions.player))
            {
                optionBuilder.AddOption(
                    name: SlashCommandOptions.player.ToString(),
                    type: ApplicationCommandOptionType.String,
                    description: "Filter command option to a specific player.");
            }

            if (supportedOptions.HasFlag(SlashCommandOptions.week))
            {
                optionBuilder.AddOption(
                    name: SlashCommandOptions.week.ToString(),
                    type: ApplicationCommandOptionType.Integer,
                    description: "Display information for a specific week of the bracket.");
            }

            if (supportedOptions.HasFlag(SlashCommandOptions.post))
            {
                optionBuilder.AddOption(
                    name: SlashCommandOptions.post.ToString(),
                    type: ApplicationCommandOptionType.Boolean,
                    description: "Respond publicly instead of ephemerally.");
            }
        }