Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }