]> jfr.im git - irc/quakenet/newserv.git/blob - chanserv/chancmds/suspendchan.c
Merge.
[irc/quakenet/newserv.git] / chanserv / chancmds / suspendchan.c
1 /* Automatically generated by refactor.pl.
2 *
3 *
4 * CMDNAME: suspendchan
5 * CMDLEVEL: QCMD_OPER
6 * CMDARGS: 2
7 * CMDDESC: Suspends a channel from the bot.
8 * CMDFUNC: csc_dosuspendchan
9 * CMDPROTO: int csc_dosuspendchan(void *source, int cargc, char **cargv);
10 * CMDHELP: Usage: suspendchan <channel> [<reason>]
11 * CMDHELP: Suspends the specified channel, with an optional reason.
12 */
13
14 #include "../chanserv.h"
15 #include "../../nick/nick.h"
16 #include "../../lib/flags.h"
17 #include "../../lib/irc_string.h"
18 #include "../../channel/channel.h"
19 #include "../../parser/parser.h"
20 #include "../../irc/irc.h"
21 #include "../../localuser/localuserchannel.h"
22 #include <string.h>
23 #include <stdio.h>
24
25 int csc_dosuspendchan(void *source, int cargc, char **cargv) {
26 nick *sender=source;
27 reguser *rup=getreguserfromnick(sender);
28 chanindex *cip;
29 regchan *rcp;
30
31 if (!rup)
32 return CMD_ERROR;
33
34 if (cargc<2) {
35 chanservstdmessage(sender, QM_NOTENOUGHPARAMS, "suspendchan");
36 return CMD_ERROR;
37 }
38
39 if(!checkreason(sender, cargv[1]))
40 return CMD_ERROR;
41
42 if (!(cip=findchanindex(cargv[0])) || !(rcp=cip->exts[chanservext])) {
43 chanservstdmessage(sender, QM_UNKNOWNCHAN, cargv[0]);
44 return CMD_ERROR;
45 }
46
47 if (CIsSuspended(rcp)) {
48 chanservstdmessage(sender, QM_CHANNELALREADYSUSPENDED, cip->name->content);
49 return CMD_ERROR;
50 }
51
52 CSetSuspended(rcp);
53 rcp->suspendreason = getsstring(cargv[1], 250);
54 rcp->suspendby = rup->ID;
55 rcp->suspendtime = time(NULL);
56
57 chanservwallmessage("%s (%s) used SUSPENDCHAN on %s (reason: %s)", sender->nick, rup->username, cip->name->content, rcp->suspendreason->content);
58
59 cs_log(sender,"SUSPENDCHAN %s (%s)",cip->name->content,rcp->suspendreason->content);
60 if(cip->channel)
61 chanservjoinchan(cip->channel);
62
63 csdb_updatechannel(rcp);
64 chanservstdmessage(sender, QM_DONE);
65
66 return CMD_OK;
67 }