示例#1
0
        private static Embed CreatePunishmentEmbed(Punishment punishment, SocketGuildUser discordUser, string colour, LogEvent logEvent)
        {
            var instigator = discordUser.Guild.GetUser(punishment.InstigatorID);

            return(new EmbedBuilder()
                   .WithTitle(logEvent.ToString().ToSentenceCase())
                   .AddField("User", discordUser.Mention, inline: true)
                   .AddField("Reason", punishment.Reason, inline: true)
                   .AddField("By", instigator.Mention ?? "N/A", inline: true)
                   .WithColor(StringToColor(colour))
                   .Build());
        }
示例#2
0
        public static async Task LogWarn(GuildUser user, Punishment warn)
        {
            try
            {
                var socketGuild = Global.Client.GetGuild(user.GuildID);
                var discordUser = socketGuild.GetUser(user.ID);
                var guild       = await Guilds.GetAsync(discordUser.Guild);

                var log   = ValidateLog(guild, socketGuild, LogEvent.Warn);
                var embed = CreatePunishmentEmbed(warn, discordUser, log.Colour, LogEvent.Warn);

                await log.Channel.SendMessageAsync(embed : embed);
            }
            catch (Exception) {}
        }
示例#3
0
        public static async Task LogUnmute(GuildUser user, Punishment mute = null)
        {
            try
            {
                var socketGuild = Global.Client.GetGuild(user.GuildID);
                var discordUser = socketGuild.GetUser(user.ID);
                var guild       = await Guilds.GetAsync(discordUser.Guild);

                mute ??= user.Status.Mutes.LastOrDefault();

                var log        = ValidateLog(guild, socketGuild, LogEvent.Unmute);
                var instigator = discordUser.Guild.GetUser(mute?.InstigatorID ?? 0);
                var embed      = CreatePunishmentEmbed(mute, discordUser, log.Colour, LogEvent.Unmute);

                await log.Channel.SendMessageAsync(embed : embed);
            }
            catch (Exception) {}
        }
示例#4
0
        public static async Task LogKick(SocketGuildUser discordUser, Punishment kick = null)
        {
            try
            {
                var user = await GuildUsers.GetAsync(discordUser as SocketGuildUser);

                kick ??= user?.Status.Kicks.LastOrDefault();
                if (kick is null)
                {
                    return;
                }

                var socketGuild = discordUser.Guild;
                var guild       = await Guilds.GetAsync(discordUser.Guild);

                var log   = ValidateLog(guild, socketGuild, LogEvent.Kick);
                var embed = CreatePunishmentEmbed(kick, discordUser, log.Colour, LogEvent.Kick);

                await log.Channel.SendMessageAsync(embed : embed);
            }
            catch (Exception) {}
        }
示例#5
0
        public static async Task LogBan(SocketUser socketUser, SocketGuild socketGuild, Punishment ban = null)
        {
            try
            {
                if (socketUser is null)
                {
                    return;
                }

                var user = await GuildUsers.GetAsync(socketUser as SocketGuildUser);

                var guild = await Guilds.GetAsync(socketGuild);

                var log = ValidateLog(guild, socketGuild, LogEvent.Ban);

                ban ??= user.Status.Bans.LastOrDefault();
                var embed = CreateTimestampPunishmentEmbed(socketUser, ban, log);

                await log.Channel.SendMessageAsync(embed : embed.Build());
            }
            catch (Exception) {}
        }
示例#6
0
        private static EmbedBuilder CreateTimestampPunishmentEmbed(SocketUser socketUser, Punishment punishment, StaffLog log)
        {
            var instigator = log.Channel.Guild.GetUser(punishment.InstigatorID);

            return(new EmbedBuilder()
                   .WithTitle(punishment.Type.ToString().ToSentenceCase())
                   .AddField("User", socketUser.Mention, inline: true)
                   .AddField("Reason", punishment.Reason, inline: true)
                   .AddField("By", instigator.Mention, inline: true)
                   .AddField("Start", punishment.Start.ToTimestamp())
                   .AddField("End", punishment.End.ToTimestamp(), inline: true)
                   .WithColor(StringToColor(log.Colour)));
        }