]> jfr.im git - irc/quakenet/newserv.git/blame - chanserv/chancmds/suspendchan.c
Merge pull request #1 from meeb/meeb
[irc/quakenet/newserv.git] / chanserv / chancmds / suspendchan.c
CommitLineData
1dd6d55d 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);
94e4d2f4
CP
10 * CMDHELP: Usage: suspendchan <channel> [<reason>]
11 * CMDHELP: Suspends the specified channel, with an optional reason.
1dd6d55d 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
25int 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
dae08100
CP
39 if(!checkreason(sender, cargv[1]))
40 return CMD_ERROR;
41
1dd6d55d 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;
c1e6c982 55 rcp->suspendtime = time(NULL);
dae08100
CP
56
57 chanservwallmessage("%s (%s) used SUSPENDCHAN on %s (reason: %s)", sender->nick, rup->username, cip->name->content, rcp->suspendreason->content);
58
1dd6d55d 59 cs_log(sender,"SUSPENDCHAN %s (%s)",cip->name->content,rcp->suspendreason->content);
41938c9d 60 if(cip->channel) {
61 char reasonbuf[512];
62
63 snprintf(reasonbuf,511,"Channel suspended: %s",rcp->suspendreason->content);
64 reasonbuf[511]=0;
1dd6d55d 65
41938c9d 66 chanservpartchan(cip->channel, reasonbuf);
67 }
68
1dd6d55d 69 csdb_updatechannel(rcp);
70 chanservstdmessage(sender, QM_DONE);
71
72 return CMD_OK;
73}