int chanserv_init_status;
sstring **chantypes;
+sstring *cs_quitreason;
const flag rcflags[] = {
{ 'a', QCFLAG_AUTOOP },
chanservcommandinit();
chanservaddcommand("showcommands", 0, 1, cs_doshowcommands, "Lists available commands.","Usage: SHOWCOMMANDS [<mask>]\nPrints a list of commands currently available to you, where:\nmask - Mask of commands to list (* or ? are wildcards). If no mask is specified,\n all available commands are displayed.");
chanservaddcommand("quit", QCMD_DEV, 1, cs_doquit, "Makes the bot QUIT and \"reconnect\".","");
+ chanservaddcommand("setquitreason", QCMD_DEV, 1, cs_doquit, "Sets the reason to be sent when quitting due to an unload.","");
chanservaddcommand("rename", QCMD_DEV, 1, cs_dorename, "Changes the bot's name.","");
chanservaddcommand("rehash", QCMD_DEV, 0, cs_dorehash, "Reloads all text from database.","");
/* Make "HELP" take 2 arguments so things like "HELP chanflags #channel" work. Any junk after the command will go into arg 2 and be ignored. */
}
if (chanservnick)
- deregisterlocaluser(chanservnick, "Leaving");
+ deregisterlocaluser(chanservnick, cs_quitreason?cs_quitreason->content:"Leaving");
+
+ freesstring(cs_quitreason);
deregisterhook(HOOK_NICK_NEWNICK, cs_handlenick);
deregisterhook(HOOK_NICK_ACCOUNT, cs_handlenick);
extern maillock *maillocks;
+extern sstring *cs_quitreason;
+
/* Function prototypes */
/* chanserv.c */
int cs_doshowcommands(void *source, int cargc, char **cargv);
int cs_dohelp(void *source, int cargc, char **cargv);
int cs_doquit(void *source, int cargc, char **cargv);
+int cs_dosetquitreason(void *source, int cargc, char **cargv);
int cs_dorename(void *source, int cargc, char **cargv);
int cs_dorehash(void *source, int cargc, char **cargv);
int cs_doversion(void *source, int cargc, char **cargv);
return CMD_OK;
}
+int cs_dosetquitreason(void *source, int cargc, char **cargv) {
+ nick *sender=(nick *)source;
+
+ if (cargc<0) {
+ chanservstdmessage(sender, QM_NOTENOUGHPARAMS, "setquitreason");
+ return CMD_ERROR;
+ }
+
+ if (cs_quitreason)
+ freesstring(cs_quitreason);
+
+ cs_quitreason=getsstring(cargv[0]);
+
+ chanservstdmessage(sender, QM_DONE);
+
+ return CMD_OK;
+}
+
int cs_dorename(void *source, int cargc, char **cargv) {
char newnick[NICKLEN+1];
nick *sender=source;