Ver Fonte

Don't kick a user if already devoiced and -m (#48)

Bryan Drewery há 14 anos atrás
pai
commit
9e5133e29c
1 ficheiros alterados com 17 adições e 9 exclusões
  1. 17 9
      src/mod/irc.mod/irc.c

+ 17 - 9
src/mod/irc.mod/irc.c

@@ -207,15 +207,23 @@ void set_devoice(struct chanset_t *chan, memberlist* m) {
 }
 
 const char* punish_flooder(struct chanset_t* chan, memberlist* m, const char *reason) {
-  if (channel_voice(chan) && chan->voice_moderate && !chan_sentdevoice(m)) {
-    add_mode(chan, '-', 'v', m->nick);
-    m->flags |= SENTDEVOICE;
-    set_devoice(chan, m);
-    return "devoicing";
-  } else if (!chan_sentkick(m)) {
-    dprintf(DP_SERVER, "KICK %s %s :%s%s\n", chan->name, m->nick, kickprefix, reason ? reason : response(RES_FLOOD));
-    m->flags |= SENTKICK;
-    return "kicking";
+  if (channel_voice(chan) && chan->voice_moderate) {
+    if (!chan_sentdevoice(m)) {
+      add_mode(chan, '-', 'v', m->nick);
+      m->flags |= SENTDEVOICE;
+      set_devoice(chan, m);
+      return "devoicing";
+    } else {
+      return "devoiced";
+    }
+  } else {
+    if (!chan_sentkick(m)) {
+      dprintf(DP_SERVER, "KICK %s %s :%s%s\n", chan->name, m->nick, kickprefix, reason ? reason : response(RES_FLOOD));
+      m->flags |= SENTKICK;
+      return "kicking";
+    } else {
+      return "kicked";
+    }
   }
   return "ignoring";
 }