+ else
+ {
+ /* m_nokicks.so was loaded and +Q was set, block! */
+ user->WriteServ( "484 %s %s :Can't remove user %s from channel (+Q set)", user->nick, channel->name, target->nick);
+ return CMD_FAILURE;
+ }
+
+ return CMD_SUCCESS;
+ }
+};
+
+/** Handle /REMOVE
+ */
+class cmd_remove : public command_t, public RemoveBase
+{
+ public:
+ cmd_remove(InspIRCd* Instance, bool& snk) : command_t(Instance, "REMOVE", 0, 2), RemoveBase(Instance, snk)
+ {
+ this->source = "m_remove.so";
+ syntax = "<nick> <channel> [<reason>]";
+ }
+
+ CmdResult Handle (const char** parameters, int pcnt, userrec *user)
+ {
+ return RemoveBase::Handle(parameters, pcnt, user, false);
+ }
+};
+
+/** Handle /FPART
+ */
+class cmd_fpart : public command_t, public RemoveBase
+{
+ public:
+ cmd_fpart(InspIRCd* Instance, bool& snk) : command_t(Instance, "FPART", 0, 2), RemoveBase(Instance, snk)
+ {
+ this->source = "m_remove.so";
+ syntax = "<channel> <nick> [<reason>]";
+ }
+
+ CmdResult Handle (const char** parameters, int pcnt, userrec *user)
+ {
+ return RemoveBase::Handle(parameters, pcnt, user, true);