X-Git-Url: https://jfr.im/git/irc/evilnet/x3.git/blobdiff_plain/d3abe0dfb98fa209ed69c344d28b0135d15aec0f..cbfd323c3191336a3c07c24725019cdaf87f0dd6:/src/chanserv.c diff --git a/src/chanserv.c b/src/chanserv.c index b385d11..ced5b2c 100644 --- a/src/chanserv.c +++ b/src/chanserv.c @@ -2711,6 +2711,7 @@ static CHANSERV_FUNC(cmd_merge) struct userData *target_user; struct chanNode *target; char reason[MAXLEN]; + int nodelete = 0; REQUIRE_PARAMS(2); @@ -2722,6 +2723,11 @@ static CHANSERV_FUNC(cmd_merge) return 0; } + if (argc > 2) { + if (!irccasecmp("nodelete", argv[2])) + nodelete = 1; + } + if(!target->channel_info) { reply("CSMSG_NOT_REGISTERED", target->name); @@ -2757,7 +2763,8 @@ static CHANSERV_FUNC(cmd_merge) merge_channel(channel->channel_info, target->channel_info); spamserv_cs_move_merge(user, channel, target, 0); sprintf(reason, "merged into %s by %s.", target->name, user->handle_info->handle); - unregister_channel(channel->channel_info, reason); + if (!nodelete) + unregister_channel(channel->channel_info, reason); reply("CSMSG_MERGE_SUCCESS", target->name); return 1; } @@ -9382,7 +9389,7 @@ init_chanserv(const char *nick) reg_svccmd_unbind_func(handle_svccmd_unbind); chanserv_module = module_register("ChanServ", CS_LOG, "chanserv.help", chanserv_expand_variable); - DEFINE_COMMAND(register, 1, MODCMD_REQUIRE_AUTHED, "flags", "+acceptchan,+helping", NULL); + DEFINE_COMMAND(register, 1, MODCMD_REQUIRE_AUTHED, "flags", "+acceptchan,+channel", NULL); DEFINE_COMMAND(noregister, 1, MODCMD_REQUIRE_AUTHED, "flags", "+helping", NULL); DEFINE_COMMAND(allowregister, 2, 0, "template", "noregister", NULL); DEFINE_COMMAND(move, 1, MODCMD_REQUIRE_AUTHED|MODCMD_REQUIRE_REGCHAN, "template", "register", NULL);