private static async Task <KaguyaEmbedBuilder> Reply(WarnedUser user, SocketGuildUser warnedUser) { List <WarnedUser> curWarns = await DatabaseQueries.GetAllForServerAndUserAsync <WarnedUser>(user.UserId, warnedUser.Guild.Id); int curCount = curWarns.Count; var embed = new KaguyaEmbedBuilder { Description = $"Successfully warned user `{warnedUser}`\nReason: `{user.Reason}`", Footer = new EmbedFooterBuilder { Text = $"{warnedUser.Username} now has {curCount} warnings." } }; return(embed); }
private static async Task <KaguyaEmbedBuilder> WarnEmbed(WarnedUser user, ICommandContext context) { List <WarnedUser> curWarns = await DatabaseQueries.GetAllForServerAndUserAsync <WarnedUser>(user.UserId, context.Guild.Id); int curCount = curWarns.Count; var embed = new KaguyaEmbedBuilder { Title = "⚠️ Warning Received", Description = $"Warned from `[Server: {context.Guild} | ID: {context.Guild.Id}]`\n" + $"Warned by: `[User: {context.User} | ID: {context.User.Id}]`\n" + $"Reason: `{user.Reason}`", Footer = new EmbedFooterBuilder { Text = $"You currently have {curCount} warnings." } }; embed.SetColor(EmbedColor.RED); return(embed); }
public async Task AddWarn(SocketGuildUser user, [Remainder] string reason = null) { Server server = await DatabaseQueries.GetOrCreateServerAsync(Context.Guild.Id); if (reason == null) { reason = "No reason specified."; } var wu = new WarnedUser { ServerId = Context.Guild.Id, UserId = user.Id, ModeratorName = Context.User.ToString(), Reason = reason, Date = DateTime.Now.ToOADate() }; await DatabaseQueries.InsertAsync(wu); KaguyaEvents.TriggerWarning(new ModeratorEventArgs(server, Context.Guild, user, (SocketGuildUser)Context.User, reason, null)); try { await user.SendMessageAsync(embed : (await WarnEmbed(wu, Context)).Build()); } catch (Exception) { await ConsoleLogger.LogAsync($"Failed to DM user {user.Id} that they have been " + $"warned in guild {server.ServerId}. " + $"Database updated regardless.", LogLvl.DEBUG); } await ReplyAsync(embed : (await Reply(wu, user)).Build()); await DatabaseQueries.UpdateAsync(server); }