+ enum SilenceFlags
+ {
+ // Does nothing; for internal use only.
+ SF_NONE = 0,
+
+ // Exclude users who match this flags ("x").
+ SF_EXEMPT = 1,
+
+ // 2, 4, 8, 16 are reserved for future use.
+
+ // Matches a NOTICE targeted at a channel ("n").
+ SF_NOTICE_CHANNEL = 32,
+
+ // Matches a NOTICE targeted at a user ("N").
+ SF_NOTICE_USER = 64,
+
+ // Matches a PRIVMSG targeted at a channel ("p").
+ SF_PRIVMSG_CHANNEL = 128,
+
+ // Matches a PRIVMSG targeted at a user ("P").
+ SF_PRIVMSG_USER = 256,
+
+ // Matches a TAGMSG targeted at a channel ("t").
+ SF_TAGMSG_CHANNEL = 512,
+
+ // Matches a TAGMSG targeted at a user ("T").
+ SF_TAGMSG_USER = 1024,
+
+ // Matches a CTCP targeted at a channel ("c").
+ SF_CTCP_CHANNEL = 2048,
+
+ // Matches a CTCP targeted at a user ("C").
+ SF_CTCP_USER = 4096,
+
+ // Matches an invite to a channel ("i").
+ SF_INVITE = 8192,
+
+ // The default if no flags have been specified.
+ SF_DEFAULT = SF_NOTICE_CHANNEL | SF_NOTICE_USER | SF_PRIVMSG_CHANNEL | SF_PRIVMSG_USER | SF_TAGMSG_CHANNEL |
+ SF_TAGMSG_USER | SF_CTCP_CHANNEL | SF_CTCP_USER | SF_INVITE
+ };
+
+ // The flags that this mask is silenced for.
+ uint32_t flags;
+
+ // The mask which is silenced (e.g. *!*@example.com).
+ std::string mask;
+
+ SilenceEntry(uint32_t Flags, const std::string& Mask)
+ : flags(Flags)
+ , mask(Mask)