diff options
author | Sebastien Helleu <flashcode@flashtux.org> | 2010-03-20 23:42:21 +0100 |
---|---|---|
committer | Sebastien Helleu <flashcode@flashtux.org> | 2010-03-20 23:42:21 +0100 |
commit | 5755bd50ac805ccbea47839097ee9e8f605f4020 (patch) | |
tree | 433f4e4ab93bf304b0905f4586c90a1b2208931a /src/plugins/irc | |
parent | 7925b2d242513844cb42e4b146994f7b00643f7a (diff) | |
download | weechat-5755bd50ac805ccbea47839097ee9e8f605f4020.zip |
Add IRC commands /omode and /forcejoin (patch #7126)
Diffstat (limited to 'src/plugins/irc')
-rw-r--r-- | src/plugins/irc/irc-command.c | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/plugins/irc/irc-command.c b/src/plugins/irc/irc-command.c index 40594f014..d9b4e0489 100644 --- a/src/plugins/irc/irc-command.c +++ b/src/plugins/irc/irc-command.c @@ -1367,6 +1367,34 @@ irc_command_disconnect (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_BUFFER_GET_SERVER_CHANNEL(buffer); + IRC_COMMAND_CHECK_SERVER("forcejoin", 1); + + /* make C compiler happy */ + (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, "forcejoin"); + } + + return WEECHAT_RC_OK; +} + +/* * irc_command_halfop: give half operator privileges to nickname(s) */ @@ -2553,6 +2581,34 @@ irc_command_notice (void *data, struct t_gui_buffer *buffer, int argc, } /* + * irc_command_omode: change mode on channel, without having operator status + * (this is the equivalent to /sajoin on some IRCd's) + */ + +int +irc_command_omode (void *data, struct t_gui_buffer *buffer, int argc, + char **argv, char **argv_eol) +{ + IRC_BUFFER_GET_SERVER_CHANNEL(buffer); + IRC_COMMAND_CHECK_SERVER("omode", 1); + + /* make C compiler happy */ + (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_op: give operator privileges to nickname(s) */ @@ -4276,6 +4332,12 @@ irc_command_init () "-all" " || %(irc_servers)|%*", &irc_command_disconnect, 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 ("halfop", N_("give half channel operator status to " "nickname(s)"), @@ -4456,6 +4518,15 @@ irc_command_init () "nickname: user to send notice to\n" " text: text to send"), "%(nicks) %-", &irc_command_notice, 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 ("op", N_("give channel operator status to nickname(s)"), N_("nickname [nickname]"), |