+/** Handles channel mode +g
+ */
+class ChanFilter : public ListModeBase
+{
+ public:
+ ChanFilter(InspIRCd* Instance) : ListModeBase(Instance, 'g', "End of channel spamfilter list", "941", "940", false, "chanfilter") { }
+
+ virtual bool ValidateParam(User* user, Channel* chan, std::string &word)
+ {
+ if ((word.length() > 35) || (word.empty()))
+ {
+ user->WriteNumeric(935, "%s %s %s :word is too %s for censor list",user->nick, chan->name,word.c_str(), (word.empty() ? "short" : "long"));
+ return false;
+ }
+
+ return true;
+ }
+
+ virtual bool TellListTooLong(User* user, Channel* chan, std::string &word)
+ {
+ user->WriteNumeric(939, "%s %s %s :Channel spamfilter list is full",user->nick, chan->name, word.c_str());
+ return true;
+ }
+
+ virtual void TellAlreadyOnList(User* user, Channel* chan, std::string &word)
+ {
+ user->WriteNumeric(937, "%s %s :The word %s is already on the spamfilter list",user->nick, chan->name,word.c_str());
+ }
+
+ virtual void TellNotSet(User* user, Channel* chan, std::string &word)
+ {
+ user->WriteNumeric(938, "%s %s :No such spamfilter word is set",user->nick, chan->name);
+ }
+};