diff --git a/src/plugins/irc/irc-command.c b/src/plugins/irc/irc-command.c index 653f879..98a88d3 100644 --- a/src/plugins/irc/irc-command.c +++ b/src/plugins/irc/irc-command.c @@ -3040,6 +3040,33 @@ irc_command_sajoin (void *data, struct t_gui_buffer *buffer, int argc, } /* + * irc_command_forcejoin: forces a user to join channel(s) + * This is the equivalent to SAJOIN on some IRCd's. + */ + +int +irc_command_forcejoin (void *data, struct t_gui_buffer *buffer, int argc, + char **argv, char **argv_eol) +{ + IRC_GET_SERVER_CHANNEL(buffer); + IRC_COMMAND_CHECK_SERVER("forcejoin", 1); + + (void) data; + + if (argc > 2) + { + irc_server_sendf (ptr_server, IRC_SERVER_OUTQUEUE_PRIO_HIGH, + "FORCEJOIN %s %s", argv[1], argv_eol[2]); + } + else + { + IRC_COMMAND_TOO_FEW_ARGUMENTS(ptr_server->buffer, "sajoin"); + } + + return WEECHAT_RC_OK; +} + +/* * irc_command_samode: change mode on channel, without having operator status */ @@ -3066,6 +3093,33 @@ irc_command_samode (void *data, struct t_gui_buffer *buffer, int argc, return WEECHAT_RC_OK; } +/* + * irc_command_omode: change mode on channel, without having operator status + * This is the equivalent to SAMODE on some IRCd's + */ + +int +irc_command_omode (void *data, struct t_gui_buffer *buffer, int argc, + char **argv, char **argv_eol) +{ + IRC_GET_SERVER_CHANNEL(buffer); + IRC_COMMAND_CHECK_SERVER("omode", 1); + + (void) data; + + if (argc > 2) + { + irc_server_sendf (ptr_server, IRC_SERVER_OUTQUEUE_PRIO_HIGH, + "OMODE %s %s", argv[1], argv_eol[2]); + } + else + { + IRC_COMMAND_TOO_FEW_ARGUMENTS(ptr_server->buffer, "omode"); + } + + return WEECHAT_RC_OK; +} + /* * irc_command_sanick: forces a user to use another nick */ @@ -4502,6 +4556,12 @@ irc_command_init () N_("nickname: nickname\n" " channel: channel name"), "%(nicks) %(irc_server_channels)", &irc_command_sajoin, NULL); + weechat_hook_command ("forcejoin", + N_("forces a user to join channel(s)"), + N_("nickname channel[,channel]"), + N_("nickname: nickname\n" + " channel: channel name"), + "%(nicks) %(irc_server_channels)", &irc_command_forcejoin, NULL); weechat_hook_command ("samode", N_("change mode on channel, without having operator " "status"), @@ -4511,6 +4571,15 @@ irc_command_init () N_("channel: channel name\n" " mode: mode for channel"), "%(irc_server_channels)", &irc_command_samode, NULL); + weechat_hook_command ("omode", + N_("change mode on channel, without having operator " + "status"), + /* TRANSLATORS: "channel" and "mode" are arguments + for command, translate them separately */ + N_("channel mode"), + N_("channel: channel name\n" + " mode: mode for channel"), + "%(irc_server_channels)", &irc_command_omode, NULL); weechat_hook_command ("sanick", N_("forces a user to use another nick"), N_("nickname new_nickname"),