#include <stdio.h>
#include "tuvebot.h"
void *botCMD_Thread(void *threadid) {
int tid = 0x0;
unsigned int i = 0;
int tmpVal = 0;
short lC = 0x0;
char qryStr[256];
botChanList_t *tmpChan = 0x0;
MYSQL_RES *res = 0x0;
MYSQL_ROW row;
tid = (int)threadid;
writeLog(0,"Starting Bot's CMD Thread: [%d]\n", tid);
while (1) {
if (connected == 0) {
sleep(5);
if (joinChan == 1) {
joinChan = 0;
connected = 1;
botJoinChans();
}
}
else {
sleep(30);
res = dbQuery("SELECT channel,rating,classification,random,queue,exclusive,time,topic FROM channels WHERE updated = 1",1);
if (mysql_num_rows(res) > 0) {
for (i = 0;i < mysql_num_rows(res);i++) {
row = mysql_fetch_row(res);
tmpChan = botFindChan(row[0]);
if (tmpChan == 0x0) {
writeLog(3,"Adding Chan: %s\n",row[0]);
tmpChan = botAddChan(row[0]);
}
/* Set Access Level */
tmpVal = atoi(row[1]);
if (tmpChan->modes[CHAN_RATING] != tmpVal) {
if (tmpVal > 0)
sWriteSocket("MSG %s:.tv mode +A %i",row[0],tmpVal);
else
sWriteSocket("MSG %s:.tv mode -A",row[0]);
tmpChan->modes[CHAN_RATING] = tmpVal;
}
/* Set Classification */
tmpVal = atoi(row[2]);
if (tmpChan->modes[CHAN_CLASS] != tmpVal) {
if (tmpVal > 0)
sWriteSocket("MSG %s:.tv mode +C %i",row[0],tmpVal);
else
sWriteSocket("MSG %s:.tv mode -C",row[0]);
tmpChan->modes[CHAN_CLASS] = tmpVal;
}
/* Set Random */
tmpVal = atoi(row[3]);
if (tmpChan->modes[CHAN_RANDOM] != tmpVal) {
if (tmpVal == 1)
sWriteSocket("MSG %s:.tv mode +R",row[0]);
else
sWriteSocket("MSG %s:.tv mode -R",row[0]);
tmpChan->modes[CHAN_RANDOM] = tmpVal;
}
/* Set Queue */
tmpVal = atoi(row[4]);
if (tmpChan->modes[CHAN_QUEUE] != tmpVal) {
if (tmpVal == 1)
sWriteSocket("MSG %s:.tv mode +Q",row[0]);
else
sWriteSocket("MSG %s:.tv mode -Q",row[0]);
tmpChan->modes[CHAN_QUEUE] = tmpVal;
}
/* Set Exclusive */
tmpVal = atoi(row[5]);
if (tmpChan->modes[CHAN_EXCLUSIVE] != tmpVal) {
if (tmpVal == 1)
sWriteSocket("MSG %s:.tv mode +E",row[0]);
else
sWriteSocket("MSG %s:.tv mode -E",row[0]);
tmpChan->modes[CHAN_EXCLUSIVE] = tmpVal;
}
/* Set Time */
tmpVal = atoi(row[6]);
if (tmpChan->modes[CHAN_TIME] != tmpVal) {
if (tmpVal > 0)
sWriteSocket("MSG %s:.tv mode +T %i",row[0],tmpVal);
else
sWriteSocket("MSG %s:.tv mode -T",row[0]);
tmpChan->modes[CHAN_TIME] = tmpVal;
}
if (strcmp(tmpChan->topic,row[7])) {
sWriteSocket("TOPIC %s:%s",row[0],row[7]);
strcpy(tmpChan->topic,row[7]);
}
sprintf(qryStr,"UPDATE channels SET updated = 0 WHERE channel = '%s'",row[0]);
dbQuery(qryStr,0);
}
}
if (lC == 6) {
lC = 0;
sWriteSocket("STATUS");
}
lC++;
}
}
pthread_exit(NULL);
} /* End tuveCMD_Thread() */