diff --git a/src/plugins/irc/irc-command.c b/src/plugins/irc/irc-command.c index 653f879..3e3b749 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 */