aboutsummaryrefslogtreecommitdiffstats
path: root/irc_channel.c
diff options
context:
space:
mode:
Diffstat (limited to 'irc_channel.c')
-rw-r--r--irc_channel.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/irc_channel.c b/irc_channel.c
index b8763ce3..4fe0fad4 100644
--- a/irc_channel.c
+++ b/irc_channel.c
@@ -625,6 +625,24 @@ static gboolean control_channel_invite( irc_channel_t *ic, irc_user_t *iu )
return TRUE;
}
+static void control_channel_kick( irc_channel_t *ic, irc_user_t *iu, const char *msg )
+{
+ struct irc_control_channel *icc = ic->data;
+ bee_user_t *bu = iu->bu;
+
+ if( bu == NULL )
+ return;
+
+ if( icc->type != IRC_CC_TYPE_GROUP )
+ {
+ irc_send_num( ic->irc, 482, "%s :Kicks are only possible to fill_by=group channels", ic->name );
+ return;
+ }
+
+ bu->ic->acc->prpl->remove_buddy( bu->ic, bu->handle,
+ icc->group ? icc->group->name : NULL );
+}
+
static char *set_eval_by_account( set_t *set, char *value );
static char *set_eval_fill_by( set_t *set, char *value );
static char *set_eval_by_group( set_t *set, char *value );
@@ -843,6 +861,7 @@ static const struct irc_channel_funcs control_channel_funcs = {
NULL,
NULL,
control_channel_invite,
+ control_channel_kick,
control_channel_init,
control_channel_free,