diff options
Diffstat (limited to 'irc_commands.c')
| -rw-r--r-- | irc_commands.c | 25 | 
1 files changed, 25 insertions, 0 deletions
| diff --git a/irc_commands.c b/irc_commands.c index 6be756ff..f438193c 100644 --- a/irc_commands.c +++ b/irc_commands.c @@ -499,6 +499,30 @@ static void irc_cmd_invite( irc_t *irc, char **cmd )  		irc_send_num( irc, 341, "%s %s", iu->nick, ic->name );  } +static void irc_cmd_kick( irc_t *irc, char **cmd ) +{ +	irc_channel_t *ic; +	irc_user_t *iu; +	 +	if( ( iu = irc_user_by_name( irc, cmd[2] ) ) == NULL ) +	{ +		irc_send_num( irc, 401, "%s :No such nick", cmd[2] ); +		return; +	} +	else if( ( ic = irc_channel_by_name( irc, cmd[1] ) ) == NULL ) +	{ +		irc_send_num( irc, 403, "%s :No such channel", cmd[1] ); +		return; +	} +	else if( !ic->f->kick ) +	{ +		irc_send_num( irc, 482, "%s :Can't kick people here", cmd[1] ); +		return; +	} +	 +	ic->f->kick( ic, iu, cmd[3] ? cmd[3] : NULL ); +} +  static void irc_cmd_userhost( irc_t *irc, char **cmd )  {  	int i; @@ -745,6 +769,7 @@ static const command_t irc_commands[] = {  	{ "ison",        1, irc_cmd_ison,        IRC_CMD_LOGGED_IN },  	{ "watch",       1, irc_cmd_watch,       IRC_CMD_LOGGED_IN },  	{ "invite",      2, irc_cmd_invite,      IRC_CMD_LOGGED_IN }, +	{ "kick",        2, irc_cmd_kick,        IRC_CMD_LOGGED_IN },  	{ "topic",       1, irc_cmd_topic,       IRC_CMD_LOGGED_IN },  	{ "oper",        2, irc_cmd_oper,        IRC_CMD_LOGGED_IN },  	{ "list",        0, irc_cmd_list,        IRC_CMD_LOGGED_IN }, | 
