public static DiscordEmbedBuilder AddField(this DiscordEmbedBuilder builder, Action <DiscordFieldBuilder> action) { DiscordFieldBuilder fieldBuilder = new DiscordFieldBuilder(); action(fieldBuilder); return(builder.AddField(fieldBuilder)); }
public static DiscordEmbedBuilder GetEmbedBuilder(this Lobby lobby) { DiscordEmbedBuilder builder = new DiscordEmbedBuilder(); builder.WithTitle($"Lobby #{lobby.LobbyNumber}"); DiscordFieldBuilder powerLevelFieldBuilder = new DiscordFieldBuilder { Name = "Power Level Range", Value = $"{lobby.LobbyPowerLevel - lobby.CurrentDelta} - {lobby.LobbyPowerLevel + lobby.CurrentDelta}", IsInline = true }; builder.AddField(powerLevelFieldBuilder); DiscordFieldBuilder classFieldBuilder = new DiscordFieldBuilder { Name = "Class", Value = $"{lobby.Class}", IsInline = true }; builder.AddField(classFieldBuilder); DiscordFieldBuilder playersFieldBuilder = new DiscordFieldBuilder { Name = "Players", Value = string.Join('\n', lobby.Players.Select(e => (Program.Client.GetUserAsync(e.DiscordId).Result).Mention)), IsInline = false }; builder.AddField(playersFieldBuilder); builder.Footer = new DiscordEmbedBuilder.EmbedFooter(); if (!lobby.IsFull) { builder.Footer.Text = $"Queue Time Remaining: {lobby.LastUpdate.Add(TimeSpan.FromMinutes(20)) - DateTime.Now:mm\\:ss}"; } return(builder); }
public static DiscordEmbedBuilder AddField(this DiscordEmbedBuilder builder, DiscordFieldBuilder fieldBuilder) { return(builder.AddField(fieldBuilder.Name, fieldBuilder.Value.ToString(), fieldBuilder.IsInline)); }
private static async Task Client_ReactionAdded(MessageReactionAddEventArgs messageReactionAddEventArgs) { DiscordChannel channel = messageReactionAddEventArgs.Channel; try { if (channel.Id == 595219144488648704) { DiscordMessage newUserMessage = await channel.GetMessageAsync(messageReactionAddEventArgs.Message.Id); DiscordChannel registeredChannel = await Client.GetChannelAsync(588806681303973931); if (!File.Exists(Path.Combine(Globals.AppPath, "Registrations", $"{newUserMessage.Id}"))) { return; } if (newUserMessage.Reactions.FirstOrDefault(e => e.Emoji.Name == "\u2705")?.Count > 1) { string[] allRegLines = await File.ReadAllLinesAsync(Path.Combine(Globals.AppPath, "Registrations", $"{newUserMessage.Id}")); ulong userId = Convert.ToUInt64(allRegLines[0]); const decimal powerLevel = 2000; await MySqlClient.RegisterPlayer(userId, 2000, allRegLines[1]); const int classNum = 2; DiscordGuild guild = await Client.GetGuildAsync(570743985530863649); DiscordMember registeredUser = await guild.GetMemberAsync(userId); await registeredUser.SendMessageAsync( $"You have been approved! You have been placed in class {classNum}. " + $"To jump into a set, head into #draft and use %join."); await registeredUser.GrantRoleAsync(guild.GetRole(572537013949956105)); DiscordRole classOneRole = guild.GetRole(600770643075661824); DiscordRole classTwoRole = guild.GetRole(600770814521901076); DiscordRole classThreeRole = guild.GetRole(600770862307606542); DiscordRole classFourRole = guild.GetRole(600770905282576406); try { switch (Matchmaker.GetClass(powerLevel)) { case SdlClass.Zero: break; case SdlClass.One: if (registeredUser.Roles.All(e => e.Id != classOneRole.Id)) { await registeredUser.GrantRoleAsync(classOneRole); } break; case SdlClass.Two: if (registeredUser.Roles.All(e => e.Id != classTwoRole.Id)) { await registeredUser.GrantRoleAsync(classTwoRole); } break; case SdlClass.Three: if (registeredUser.Roles.All(e => e.Id != classThreeRole.Id)) { await registeredUser.GrantRoleAsync(classThreeRole); } break; case SdlClass.Four: if (registeredUser.Roles.All(e => e.Id != classFourRole.Id)) { await registeredUser.GrantRoleAsync(classFourRole); } break; default: throw new ArgumentOutOfRangeException(); } } catch (Exception e) { Console.WriteLine(e); } File.Delete(Path.Combine(Globals.AppPath, "Registrations", $"{newUserMessage.Id}")); DiscordEmbed registrationEmbed = newUserMessage.Embeds.First(); DiscordEmbedBuilder builder = new DiscordEmbedBuilder { Description = $"**User {registeredUser.Mention} ({registeredUser.Username}#{registeredUser.Discriminator}) has been approved!**" }; builder.AddField(e => { e.Name = "Class"; e.Value = $"{classNum}"; e.IsInline = false; }); builder.WithFields(registrationEmbed.Fields.Select(e => { DiscordFieldBuilder builderSelect = new DiscordFieldBuilder { Name = e.Name, Value = e.Value, IsInline = e.Inline }; return(builderSelect); })); await registeredChannel.SendMessageAsync(embed : builder.Build()); await newUserMessage.DeleteAsync(); // await newUserMessage.ModifyAsync("Approved."); } else if (newUserMessage.Reactions.FirstOrDefault(e => e.Emoji.Name == "\u274E")?.Count > 1) { string[] allRegLines = await File.ReadAllLinesAsync(Path.Combine(Globals.AppPath, "Registrations", $"{newUserMessage.Id}")); ulong userId = Convert.ToUInt64(allRegLines[0]); DiscordGuild guild = await Client.GetGuildAsync(570743985530863649); DiscordMember registeredUser = await guild.GetMemberAsync(userId); DiscordEmbed registrationEmbed = newUserMessage.Embeds.First(); DiscordEmbedBuilder builder = new DiscordEmbedBuilder { Description = $"**User {registeredUser.Mention} ({registeredUser.Username}#{registeredUser.Discriminator}) has been denied.**" }; builder.WithFields(registrationEmbed.Fields.Select(e => { DiscordFieldBuilder builderSelect = new DiscordFieldBuilder { Name = e.Name, Value = e.Value, IsInline = e.Inline }; return(builderSelect); })); if (registrationEmbed.Image?.Url != null) { builder.ImageUrl = registrationEmbed.Image.Url.AbsolutePath; } await registeredChannel.SendMessageAsync(embed : builder.Build()); await newUserMessage.DeleteAsync(); File.Delete(Path.Combine(Globals.AppPath, "Registrations", $"{newUserMessage.Id}")); } } } catch (Exception e) { Console.WriteLine(e); throw; } }