示例#1
0
        // extension methods for DiscordMember to allow easier accessibility

        /// <summary>
        /// Adds a new modlog entry to the file
        /// </summary>
        /// <param name="modlogEntry">The ModlogEntry instance to add to file</param>
        public static void AddModlogEntry(this DiscordMember member, ModlogEntry modlogEntry)
        {
            UserModlog user = Deserialize(member.Username, member.Id);

            user.Modlog.Add(modlogEntry);
            user.ModlogEntryCount++;
            Serialize(user, member.Id);
        }
示例#2
0
        public async Task Unwarn(CommandContext ctx,

                                 [Description("Member to unwarn")]
                                 DiscordMember member,

                                 [Description("1-based warn index")]
                                 UInt16 WarnID)
        {
            if (ctx.Member == member)
            {
                DiscordEmbedBuilder failure = new DiscordEmbedBuilder
                {
                    Description = $"<:insanitybotFailure:737297932595888189> You can't remove your own modlog entries!",
                    Color       = DiscordColor.DarkRed,
                    Footer      = new DiscordEmbedBuilder.EmbedFooter
                    {
                        Text = "InsanityBot - Exa 2020"
                    }
                };

                await ctx.RespondAsync(embed : failure.Build());

                return;
            }


            User        user        = Serializer.Deserialize(member.Id);
            ModlogEntry modlogEntry = user.Modlog[WarnID - 1];

            user.Modlog.RemoveAt(WarnID - 1);
            Serializer.Serialize(user, member.Id);

            DiscordEmbedBuilder embedBuilder = new DiscordEmbedBuilder
            {
                Color       = DiscordColor.SpringGreen,
                Description = $"<:insanitybotSuccess:737297353316499566> {member.DisplayName}'s warning #{WarnID} was removed successfully.",
                Footer      = new DiscordEmbedBuilder.EmbedFooter
                {
                    Text = "InsanityBot - Exa 2020"
                }
            };
            await ctx.RespondAsync(embed : embedBuilder.Build());

            embedBuilder.Title       = "UNWARN";
            embedBuilder.Description = null;
            embedBuilder.AddField("User", member.DisplayName, true)
            .AddField("Moderator", ctx.Member.DisplayName, true)
            .AddField("Warning", $"{modlogEntry.Type.ToString().ToUpper()}: {modlogEntry.Time} - {modlogEntry.Reason}");

            await ctx.Guild.GetChannel(693567857107402762).SendMessageAsync(embed: embedBuilder.Build());
        }
        /// <summary>
        /// Attempts to add a modlog entry to a specific user. Returns true if successful.
        /// </summary>
        public static Task <Boolean> TryAddModlogEntry(this DiscordUser user, ModlogEntry modlogEntry)
        {
            if (user == null)
            {
                throw new ArgumentException("Could not add modlog entry to nonexistent user", nameof(user));
            }

            try
            {
                (user as DiscordMember).AddModlogEntry(modlogEntry);
                return(Task.FromResult(true));
            }
            catch (Exception e)
            {
                Console.WriteLine($"{e}: {e.Message}\n{e.StackTrace}");
                return(Task.FromResult(false));
            }
        }
示例#4
0
 public void AddModlogEntry(ModlogType type, String reason)
 {
     ModlogCount++;
     Modlog.Add(ModlogEntry.CreateNew(type, reason));
 }