コード例 #1
0
        private async Task BumperButtonExecutedAsync(SocketMessageComponent component)
        {
            switch (component.Data.CustomId)
            {
            case "BumpNotificationsSubscribe":
            {
                await _bumper.SubscribeUserAsync(component.User.Id);

                var builder = new EmbedBuilder()
                              .WithColor(new Color(0x48BA59))
                              .WithDescription($"{component.User.Mention} тепер отримуватиме сповіщення про **bump**");

                await component.RespondAsync(embed : builder.Build(), ephemeral : true);
            }
            break;

            case "BumpNotificationsUnsubscribe":
            {
                await _bumper.UnSubscribeUserAsync(component.User.Id);

                var builder = new EmbedBuilder()
                              .WithColor(new Color(0xEE1B24))
                              .WithDescription($"{component.User.Mention} більше не отримуватиме сповіщення про **bump**");

                await component.RespondAsync(embed : builder.Build(), ephemeral : true);
            }
            break;

            default: break;
            }
        }
コード例 #2
0
 private static async Task OnButtonUsed(SocketMessageComponent smc)
 {
     if (smc.Data.CustomId == "EMOJI!")
     {
         await smc.RespondAsync($"you used the [{smc.Data.CustomId}] button!");
     }
 }
コード例 #3
0
    private async Task OnButtonClickedAsync(SocketMessageComponent component)
    {
        if (component.Message.Author.Id != _client.CurrentUser.Id)
        {
            return;
        }
        if (component.User is not SocketGuildUser user)
        {
            return;
        }
        if (!component.Data.CustomId.StartsWith("RA-"))
        {
            return;
        }

        string[] tokens = component.Data.CustomId.Split('-');
        var      role   = user.Guild.GetRole(Convert.ToUInt64(tokens[2]));

        if (role is null)
        {
            return;
        }

        var embed = new EmbedBuilder()
                    .WithAuthor(user)
                    .WithDescription(role.Mention)
                    .WithColor(_config.Value.EmbedColor);

        if (user.Roles.Any(r => r.Id == role.Id))
        {
            await user.RemoveRoleAsync(role);

            embed.WithTitle("Removed role");
            _logger.LogTrace($"{role.Mention} is removed from {user.Mention}");
        }
        else
        {
            await user.AddRoleAsync(role);

            embed.WithTitle("Granted role");
            _logger.LogTrace($"{role.Mention} is granted to {user.Mention}");
        }

        await component.RespondAsync(embed : embed.Build(), ephemeral : true);
    }
コード例 #4
0
        private async Task ActivitySelectMenuExecutedAsync(SocketMessageComponent component)
        {
            switch (component.Data.CustomId)
            {
            case "QuickActivitySelector":
            {
                var builder = new EmbedBuilder()
                              .WithColor(new Color(0xFFFFFF))
                              .WithDescription("Оберіть зручний час");

                var menuBuilder = new SelectMenuBuilder()
                                  .WithPlaceholder("Оберіть час")
                                  .WithCustomId(string.Join(',', component.Data.Values))
                                  .WithMinValues(1).WithMaxValues(1);

                var startDate = DateTime.Now;
                var endDate   = startDate.AddHours(12);
                var tmpDate   = startDate.AddMinutes(30);

                while (tmpDate < endDate)
                {
                    menuBuilder = menuBuilder.AddOption(tmpDate.ToString("dd.MM HH:mm"), tmpDate.ToString("dd.MM_HH:mm"));
                    tmpDate     = tmpDate.AddMinutes(30);
                }

                var componentBuilder = new ComponentBuilder()
                                       .WithSelectMenu(menuBuilder);

                await component.RespondAsync(embed : builder.Build(), components : componentBuilder.Build(), ephemeral : true);
            }
            break;

            case string c
                when c.StartsWith("QuickActivity_"):
            {
                var raid = new ActivityContainer()
                {
                    ChannelID    = component.Channel.Id,
                    ActivityType = Enum.Parse <BungieSharper.Entities.Destiny.HistoricalStats.Definitions.DestinyActivityModeType>(c.Split('_')[1]),
                    PlannedDate  = DateTime.ParseExact(string.Join(',', component.Data.Values), "dd.MM_HH:mm", CultureInfo.CurrentCulture),
                    ActivityName = null,
                    Description  = null,
                    Users        = new ulong[] { component.User.Id }
                };

                await component.DeferAsync();

                await InitActivityAsync(raid);
            }
            break;

            case string c
                when c.StartsWith("QuickRaid_"):
            {
                var raid = new ActivityContainer()
                {
                    ChannelID    = component.Channel.Id,
                    ActivityType = BungieSharper.Entities.Destiny.HistoricalStats.Definitions.DestinyActivityModeType.Raid,
                    PlannedDate  = DateTime.ParseExact(string.Join(',', component.Data.Values), "dd.MM_HH:mm", CultureInfo.CurrentCulture),
                    ActivityName = c.Split('_')[1],
                    Description  = null,
                    Users        = new ulong[] { component.User.Id }
                };

                await component.DeferAsync();

                await InitActivityAsync(raid);
            }
            break;

            default: break;
            }
        }