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; } }
private static async Task OnButtonUsed(SocketMessageComponent smc) { if (smc.Data.CustomId == "EMOJI!") { await smc.RespondAsync($"you used the [{smc.Data.CustomId}] button!"); } }
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); }
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; } }