#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
-#include <string.h>
#include <time.h>
#include "../nick/nick.h"
#include "../lib/base64.h"
#include "../lib/irc_string.h"
#include "../lib/splitline.h"
+#include "../lib/version.h"
#include "qabot.h"
+MODULE_VERSION("");
+
time_t qab_startime;
int qabot_nickext;
int qabot_spam_nickext;
addcommandtotree(qabot_chancommands, "spam", QAC_QUESTIONCHAN|QAC_STAFFCHAN, 30, qabot_dochanspam);
addcommandtotree(qabot_chancommands, "status", QAC_QUESTIONCHAN|QAC_STAFFCHAN, 0, qabot_dochanstatus);
addcommandtotree(qabot_chancommands, "unblock", QAC_QUESTIONCHAN|QAC_STAFFCHAN, 2, qabot_dochanunblock);
- addcommandtotree(qabot_chancommands, "listtexts", QAC_QUESTIONCHAN|QAC_STAFFCHAN, 0, qabot_dochanlisttexts);
- addcommandtotree(qabot_chancommands, "showsection", QAC_QUESTIONCHAN|QAC_STAFFCHAN, 2, qabot_dochanshowsection);
- addcommandtotree(qabot_chancommands, "addtext", QAC_QUESTIONCHAN|QAC_STAFFCHAN, 2, qabot_dochanaddtext);
- addcommandtotree(qabot_chancommands, "deltext", QAC_QUESTIONCHAN|QAC_STAFFCHAN, 1, qabot_dochandeltext);
- addcommandtotree(qabot_chancommands, "addsection", QAC_QUESTIONCHAN|QAC_STAFFCHAN, 2, qabot_dochanaddsection);
- addcommandtotree(qabot_chancommands, "delsection", QAC_QUESTIONCHAN|QAC_STAFFCHAN, 2, qabot_dochandelsection);
- addcommandtotree(qabot_chancommands, "record", QAC_STAFFCHAN, 2, qabot_dochanrecord);
+ addcommandtotree(qabot_chancommands, "record", QAC_STAFFCHAN, 1, qabot_dochanrecord);
+ addcommandtotree(qabot_chancommands, "play", QAC_STAFFCHAN, 1, qabot_dochanplay);
+ addcommandtotree(qabot_chancommands, "continue", QAC_STAFFCHAN, 0, qabot_dochancontinue);
+ addcommandtotree(qabot_chancommands, "stop", QAC_STAFFCHAN, 0, qabot_dochanstop);
+ addcommandtotree(qabot_chancommands, "delete", QAC_STAFFCHAN, 1, qabot_dochandelete);
+ addcommandtotree(qabot_chancommands, "list", QAC_STAFFCHAN, 0, qabot_dochanlist);
if ((qabot_nickext = registernickext("QABOT")) == -1) {
return;
deletecommandfromtree(qabot_chancommands, "spam", qabot_dochanspam);
deletecommandfromtree(qabot_chancommands, "status", qabot_dochanstatus);
deletecommandfromtree(qabot_chancommands, "unblock", qabot_dochanunblock);
- deletecommandfromtree(qabot_chancommands, "listtexts", qabot_dochanlisttexts);
- deletecommandfromtree(qabot_chancommands, "showsection", qabot_dochanshowsection);
- deletecommandfromtree(qabot_chancommands, "addtext", qabot_dochanaddtext);
- deletecommandfromtree(qabot_chancommands, "deltext", qabot_dochandeltext);
- deletecommandfromtree(qabot_chancommands, "addsection", qabot_dochanaddsection);
- deletecommandfromtree(qabot_chancommands, "delsection", qabot_dochandelsection);
deletecommandfromtree(qabot_chancommands, "record", qabot_dochanrecord);
+ deletecommandfromtree(qabot_chancommands, "play", qabot_dochanplay);
+ deletecommandfromtree(qabot_chancommands, "continue", qabot_dochancontinue);
+ deletecommandfromtree(qabot_chancommands, "stop", qabot_dochanstop);
+ deletecommandfromtree(qabot_chancommands, "delete", qabot_dochandelete);
+ deletecommandfromtree(qabot_chancommands, "list", qabot_dochanlist);
destroycommandtree(qabot_chancommands);
}
for (b = qab_bots; b; b = b->next) {
if (b->micnumeric == np->numeric) {
b->micnumeric = 0;
- sendmessagetochannel(b->np, b->staff_chan->channel, "%s deactivated.",
- bot->recording_section ? "Recorder" : "Mic");
- if (!b->lastspam && !b->recording_section)
+ sendmessagetochannel(b->np, b->staff_chan->channel, "Mic deactivated.");
+ if (!b->lastspam)
qabot_spamstored((void*)b);
- b->recording_section = 0;
+ }
+
+ if (b->recnumeric == np->numeric) {
+ b->recnumeric = 0;
+
+ if (b->recfile) {
+ fclose(b->recfile);
+ b->recfile = NULL;
+ }
+
+ sendmessagetochannel(b->np, b->staff_chan->channel, "Recorder deactivated.");
}
}
}
for (b = qab_bots; b; b = b->next) {
if ((b->micnumeric == np->numeric) && (b->staff_chan->channel == cp)) {
b->micnumeric = 0;
- sendmessagetochannel(b->np, b->staff_chan->channel, "%s deactivated.",
- b->recording_section ? "Recorder" : "Mic");
- if (!b->lastspam && !b->recording_section)
+ sendmessagetochannel(b->np, b->staff_chan->channel, "Mic deactivated.");
+ if (!b->lastspam)
qabot_spamstored((void*)b);
- b->recording_section = 0;
+ }
+
+ if (b->recnumeric == np->numeric) {
+ b->recnumeric = 0;
+
+ if (b->recfile) {
+ fclose(b->recfile);
+ b->recfile = NULL;
+ }
+
+ sendmessagetochannel(b->np, b->staff_chan->channel, "Recorder deactivated.");
}
}
}
text = (char*)args[2];
if (*text == '!') {
- cargc = splitline((char*)(++text), cargv, 50, 0);
- cmd = findcommandintree(qabot_chancommands, cargv[0], 1);
- if (!cmd) {
- sendnoticetouser(me, sender, "Unknown command.");
- return;
+ if (*(++text) == '\0') {
+ sendnoticetouser(me, sender, "No command specified.");
+ return;
}
-
+ cargc = splitline((char*)text, cargv, 50, 0);
+ cmd = findcommandintree(qabot_chancommands, cargv[0], 1);
+ if (!cmd) {
+ sendnoticetouser(me, sender, "Unknown command.");
+ return;
+ }
+
if ((cp->index == bot->staff_chan) && !(cmd->level & QAC_STAFFCHAN)) {
sendnoticetouser(me, sender, "This command cannot be used in the staff channel.");
return;
}
}
}
+ else if ((*text != '!') && (bot->recnumeric == sender->numeric) && (cp->index == bot->staff_chan)) {
+ if (bot->recfile) {
+ fprintf(bot->recfile, "%s\n", text);
+ }
+ }
break;
case LU_PRIVMSG:
char hostbuf[NICKLEN + USERLEN + HOSTLEN + 3];
qab_block* b;
qab_question* q;
- unsigned long crc;
+ unsigned long crc = 0;
int len;
sendnoticetouser(me, sender, "Your question has been relayed to the %s staff.", bot->public_chan->name->content);