SetOpLevel(member, OpLevel(state->member) + 1);
}
- ulong64 old_status = member->status;
+ int user_visible = (member->status & CHFL_VOICED_OR_OPPED);
/* actually effect the change */
if (state->flags & MODE_PARSE_SET) {
if((member->channel->mode.mode & MODE_AUDITORIUM)) {
//join or part the user
- if((member->status & CHFL_VOICED_OR_OPPED) & !(old_status & CHFL_VOICED_OR_OPPED)) {
+ if((member->status & CHFL_VOICED_OR_OPPED) && !user_visible) {
sendcmdto_channel_butserv_butone(member->user, CMD_JOIN, member->channel, member->user, SKIP_OPS, ":%H", member->channel);
- } else if(!(member->status & CHFL_VOICED_OR_OPPED) & (old_status & CHFL_VOICED_OR_OPPED)) {
+ } else if(!(member->status & CHFL_VOICED_OR_OPPED) && user_visible) {
sendcmdto_channel_butserv_butone(member->user, CMD_PART, member->channel, member->user, SKIP_OPS, "%H :%s", member->channel, "user deoped/devoiced on a +u channel.");
}
if(MyUser(member->user) && (state->cli_change[i].flag & MODE_CHANOP)) {