private async Task <bool> OnConfirm(MessageInteractionContext context) { if (context.User.Id == NewMember.Id) { if (MinecraftGuildModel.TryGetGuildOfUser(NewMember.Id, out MinecraftGuild existingGuild, true)) { EmbedBuilder failure = new EmbedBuilder() { Title = "Failed", Color = BotCore.ErrorColor, Description = $"Already in guild \"{(existingGuild.NameAndColorFound ? existingGuild.Name : existingGuild.ChannelId.ToString())}\"" }; await context.Message.ModifyAsync(MessageProperties => { MessageProperties.Embed = failure.Build(); }); } else if (Guild != null) { await MinecraftGuildModel.MemberJoinGuildAsync(Guild, NewMember); EmbedBuilder success = new EmbedBuilder() { Title = "Success", Color = Guild.DiscordColor, Description = $"{NewMember.Mention} joined \"{Guild.Name}\"" }; await context.Message.ModifyAsync(MessageProperties => { MessageProperties.Embed = success.Build(); }); } return(true); }
protected override async Task ExecuteGuild(IGuildCommandContext context, object argObj) { SocketGuildUser User = argObj as SocketGuildUser; EmbedBuilder embed = new EmbedBuilder() { Color = BotCore.EmbedColor, Title = "UserInfo" }; if (MinecraftGuildModel.TryGetGuildOfUser(User.Id, out MinecraftGuild minecraftGuild)) { embed.AddField("Minecraft Guild Membership", $"\"{minecraftGuild.Name}\", Rank `{minecraftGuild.GetMemberRank(User.Id)}`"); } embed.AddField("Discriminator", string.Format("{0}#{1}", User.Username, User.Discriminator), true); embed.AddField("Mention", '\\' + User.Mention, true); embed.AddField("Discord Snowflake Id", User.Id, true); SocketGuildUser guildUser = User as SocketGuildUser; if (guildUser != null) { if (!string.IsNullOrEmpty(guildUser.Nickname)) { embed.AddField("Nickname", guildUser.Nickname, true); embed.Author = new EmbedAuthorBuilder() { Name = guildUser.Nickname, IconUrl = User.GetAvatarUrl() }; } if (guildUser.JoinedAt != null) { embed.AddField("Joined " + guildUser.Guild.Name, guildUser.JoinedAt?.ToString("r"), true); } } if (embed.Author == null) { embed.Author = new EmbedAuthorBuilder() { Name = User.Username, IconUrl = User.GetAvatarUrl() }; } embed.AddField("Joined Discord", User.CreatedAt.ToString("r"), true); embed.ImageUrl = User.GetAvatarUrl(); await context.Channel.SendEmbedAsync(embed); }
private static async Task Client_UserLeft(SocketGuildUser user) { if (MinecraftGuildModel.TryGetGuildOfUser(user.Id, out MinecraftGuild userGuild)) { GuildRank rank = userGuild.GetMemberRank(user.Id); if (rank == GuildRank.Captain) { await AdminTaskInteractiveMessage.CreateAdminTaskMessage($"Guild Captain left Server", $"Guild: `{userGuild.Name}`\nCaptain: `{user}`, Id: `{user.Id}`{(string.IsNullOrEmpty(user.Nickname) ? "" : $", Nickname: `{user.Nickname}`")}"); } else { userGuild.MemberIds.Remove(user.Id); userGuild.MateIds.Remove(user.Id); await MinecraftGuildModel.SaveAll(); } } BotVarCollection guildBotVars = BotVarManager.GetGuildBotVarCollection(user.Guild.Id); if (guildBotVars.TryGetBotVar(Var.MinecraftBranchRoleBotVarId, out ulong minecraftBranchRole)) { if (user.Roles.Any(role => { return(role.Id == minecraftBranchRole); })) { await AdminTaskInteractiveMessage.CreateAdminTaskMessage($"Minecraft Branch Member left Server", $"Name: `{user}`, Id: `{user.Id}`{(string.IsNullOrEmpty(user.Nickname) ? "" : $", Nickname: `{user.Nickname}`")}"); } } if (TryGetLogChannel(user.Guild, DiscordEventType.UserLeft, out SocketTextChannel channel, out EmbedBuilder embed)) { embed.Title = $"{user} left"; StringBuilder description = new StringBuilder(); if (!string.IsNullOrEmpty(user.Nickname)) { description.AppendLine($"**Nickname**: \"{user.Nickname}\""); } if (user.Roles.Count > 1) { description.AppendLine($"**Roles**: `{string.Join(", ", user.Roles)}`"); } embed.ThumbnailUrl = user.GetDefaultAvatarUrl(); embed.Description = description.ToString(); await channel.SendEmbedAsync(embed); } }
private async Task <bool> UpdateMessage(IUserMessage message, SocketGuild guild) { bool allConfirmed = AdminConfirmed; foreach (bool value in ConfirmedMembers) { if (!value) { allConfirmed = false; } } EmbedBuilder embed; if (allConfirmed) { SocketGuildUser Captain = guild.GetUser(Guild.CaptainId); List <SocketGuildUser> Members = new List <SocketGuildUser>(); foreach (ulong memberId in Guild.MemberIds) { SocketGuildUser Member = guild.GetUser(memberId); if (Member != null) { Members.Add(Member); } } if (Captain != null && Members.Count >= MinecraftGuildModel.MIN_GUILDFOUNDINGMEMBERS) { if (await MinecraftGuildModel.CreateGuildAsync(guild, Guild.Name, Guild.Color, Captain, Members)) { embed = new EmbedBuilder() { Title = "Success", Color = Guild.DiscordColor, Description = $"Guild `{Guild.Name}` has been founded!" }; } else { embed = new EmbedBuilder() { Title = "Failure", Color = BotCore.ErrorColor, Description = $"Internal Error!" }; } } else { embed = new EmbedBuilder() { Title = "Failure", Color = BotCore.ErrorColor, Description = $"Internal Error or members of the guild left the server!" }; } } else { embed = UnconfirmedEmbed(AdminConfirmed, Guild, GuildId, ConfirmedMembers); } await message.ModifyAsync(MessageProperties => { MessageProperties.Embed = embed.Build(); }); return(allConfirmed); }