diff --git a/src/fe-common/irc/fe-events-numeric.c b/src/fe-common/irc/fe-events-numeric.c index 3eb124fc..420b7f40 100644 --- a/src/fe-common/irc/fe-events-numeric.c +++ b/src/fe-common/irc/fe-events-numeric.c @@ -511,6 +511,11 @@ static void event_bad_channel_mask(IRC_SERVER_REC *server, const char *data) cannot_join(server, data, IRCTXT_JOINERROR_BAD_MASK); } +static void event_operators_only(IRC_SERVER_REC *server, const char *data) +{ + cannot_join(server, data, IRCTXT_JOINERROR_OPERSONLY); +} + static void event_477(IRC_SERVER_REC *server, const char *data, const char *nick) { @@ -688,6 +693,7 @@ void fe_events_numeric_init(void) signal_add("event 372", (SIGNAL_FUNC) event_motd); signal_add("event 422", (SIGNAL_FUNC) event_motd); signal_add("event 439", (SIGNAL_FUNC) event_target_too_fast); + signal_add("event 520", (SIGNAL_FUNC) event_operators_only); signal_add("event 707", (SIGNAL_FUNC) event_target_too_fast); signal_add("default event numeric", (SIGNAL_FUNC) event_numeric); @@ -781,6 +787,7 @@ void fe_events_numeric_deinit(void) signal_remove("event 372", (SIGNAL_FUNC) event_motd); signal_remove("event 422", (SIGNAL_FUNC) event_motd); signal_remove("event 439", (SIGNAL_FUNC) event_target_too_fast); + signal_remove("event 520", (SIGNAL_FUNC) event_operators_only); signal_remove("event 707", (SIGNAL_FUNC) event_target_too_fast); signal_remove("default event numeric", (SIGNAL_FUNC) event_numeric); diff --git a/src/fe-common/irc/module-formats.c b/src/fe-common/irc/module-formats.c index f7b074ec..009c7df6 100644 --- a/src/fe-common/irc/module-formats.c +++ b/src/fe-common/irc/module-formats.c @@ -57,6 +57,7 @@ FORMAT_REC fecommon_irc_formats[] = { { "joinerror_bad_key", "Cannot join to channel {channel $0} (Bad channel key)", 1, { 0 } }, { "joinerror_bad_mask", "Cannot join to channel {channel $0} (Bad channel mask)", 1, { 0 } }, { "joinerror_unavail", "Cannot join to channel {channel $0} (Channel is temporarily unavailable)", 1, { 0 } }, + { "joinerror_opersonly", "Cannot join to channel {channel $0} (You must be an operator)", 1, { 0 } }, { "joinerror_duplicate", "Channel {channel $0} already exists - cannot create it", 1, { 0 } }, { "channel_rejoin", "Channel {channel $0} is temporarily unavailable, this is normally because of netsplits. Irssi will now automatically try to rejoin back to this channel until the join is successful. Use /RMREJOINS command if you wish to abort this.", 1, { 0 } }, { "inviting", "Inviting {nick $0} to {channel $1}", 2, { 0, 0 } }, diff --git a/src/fe-common/irc/module-formats.h b/src/fe-common/irc/module-formats.h index c45f4562..add2032f 100644 --- a/src/fe-common/irc/module-formats.h +++ b/src/fe-common/irc/module-formats.h @@ -34,6 +34,7 @@ enum { IRCTXT_JOINERROR_BAD_KEY, IRCTXT_JOINERROR_BAD_MASK, IRCTXT_JOINERROR_UNAVAIL, + IRCTXT_JOINERROR_OPERSONLY, IRCTXT_JOINERROR_DUPLICATE, IRCTXT_CHANNEL_REJOIN, IRCTXT_INVITING,