]>
Commit | Line | Data |
---|---|---|
f011b15a CP |
1 | /* qabot.h */ |
2 | #ifndef _QABOT_H | |
3 | #define _QABOT_H | |
4 | ||
5 | #include <string.h> | |
6 | ||
7 | #if !defined(strdup) | |
8 | char *strdup(const char *); | |
9 | #endif | |
10 | ||
11 | #define QABOT_NICK "QABot" | |
12 | #define QABOT_USER "qabot" | |
13 | #define QABOT_HOST "quakenet.org" | |
14 | #define QABOT_NAME "Question & Answer Bot v1.0" | |
15 | #define QABOT_ACCT "QABot" | |
16 | #define QABOT_UMDE UMODE_SERVICE|UMODE_OPER|UMODE_INV|UMODE_ACCOUNT | |
17 | #define QABOT_CHILD_UMODE UMODE_INV | |
18 | #define TUTOR_NAME "#tutorial bot" | |
19 | #define TUTOR_ACCOUNT "Tutor" | |
20 | ||
21 | #define QABOT_HOMECHAN "#qnet.pr" | |
22 | ||
23 | #define QAUFLAG_STAFF 0x01 | |
24 | #define QAUFLAG_ADMIN 0x02 | |
25 | #define QAUFLAG_DEVELOPER 0x04 | |
26 | ||
27 | #define QAIsStaff(x) ((x)->flags & (QAUFLAG_STAFF|QAUFLAG_ADMIN|QAUFLAG_DEVELOPER)) | |
28 | #define QAIsAdmin(x) ((x)->flags & (QAUFLAG_ADMIN|QAUFLAG_DEVELOPER)) | |
29 | #define QAIsDeveloper(x) ((x)->flags & QAUFLAG_DEVELOPER) | |
30 | ||
31 | #define QUESTIONINTERVAL 30 | |
32 | #define SPAMINTERVAL 10 | |
33 | #define ASKWAIT 30 | |
34 | #define QUEUEDQUESTIONINTERVAL 2 | |
35 | #define QUESTIONHASHSIZE 1000 | |
36 | ||
37 | #define QABOT_SAVEWAIT 3600 | |
38 | ||
39 | #define QABOT_MICTIMEOUT 180 | |
40 | ||
41 | #define QAB_CONTROLCHAR 0x01 | |
42 | #define QAB_COLOUR 0x02 | |
43 | #define QAB_AUTHEDONLY 0x04 | |
44 | #define QAB_LINEBREAK 0x08 | |
45 | #define QAB_FLOODDETECT 0x10 | |
46 | #define QAB_FLOODSTOP 0x20 | |
47 | #define QAB_BLOCKMARK 0x40 | |
48 | /*#define QAB_ | |
49 | #define QAB_*/ | |
50 | ||
51 | #define QABBLOCK_ACCOUNT 0 | |
52 | #define QABBLOCK_HOST 1 | |
53 | #define QABBLOCK_TEXT 2 | |
54 | ||
55 | #define QAQ_NEW 0x00 | |
56 | #define QAQ_ANSWERED 0x01 | |
57 | #define QAQ_OFFTOPIC 0x02 | |
58 | #define QAQ_SPAM 0x03 | |
59 | #define QAQ_QSTATE 0x07 | |
60 | ||
61 | #define QAC_QUESTIONCHAN 0x01 | |
62 | #define QAC_STAFFCHAN 0x02 | |
63 | ||
64 | #define DEFAULTBOTFLAGS QAB_CONTROLCHAR|QAB_COLOUR|QAB_LINEBREAK|QAB_FLOODSTOP | |
65 | ||
66 | typedef struct qab_user { | |
67 | char authname[ACCOUNTLEN + 1]; | |
68 | flag_t flags; | |
69 | time_t created; | |
70 | ||
71 | struct qab_user* next; | |
72 | struct qab_user* prev; | |
73 | } qab_user; | |
74 | ||
75 | typedef struct qab_spam { | |
76 | char* message; | |
77 | ||
78 | struct qab_spam* next; | |
79 | } qab_spam; | |
80 | ||
81 | typedef struct qab_question { | |
82 | int id; | |
83 | char* question; | |
84 | flag_t flags; | |
85 | char nick[NICKLEN + 1]; | |
86 | unsigned long numeric; | |
87 | unsigned long crc; | |
88 | char* answer; | |
89 | ||
90 | struct qab_question* next; | |
91 | } qab_question; | |
92 | ||
93 | typedef struct qab_answer { | |
94 | qab_question* question; | |
95 | char nick[NICKLEN + 1]; | |
96 | ||
97 | struct qab_answer* next; | |
98 | } qab_answer; | |
99 | ||
100 | typedef struct qab_block { | |
101 | char type; | |
102 | char creator[ACCOUNTLEN + 1]; | |
103 | time_t created; | |
104 | char* blockstr; | |
105 | ||
106 | struct qab_block* next; | |
107 | struct qab_block* prev; | |
108 | } qab_block; | |
109 | ||
110 | typedef struct qab_bot { | |
111 | char nick[NICKLEN + 1]; | |
112 | char user[USERLEN + 1]; | |
113 | char* host; | |
114 | ||
115 | nick* np; | |
116 | ||
117 | chanindex* public_chan; | |
118 | chanindex* question_chan; | |
119 | chanindex* staff_chan; | |
120 | ||
121 | flag_t flags; | |
122 | ||
123 | /*int question_interval;*/ | |
124 | int spam_interval; | |
125 | int ask_wait; | |
126 | int queued_question_interval; | |
127 | ||
128 | time_t lastmic; | |
129 | int mic_timeout; | |
130 | ||
131 | qab_block* blocks; | |
132 | int block_count; | |
133 | ||
134 | qab_question* questions[QUESTIONHASHSIZE]; | |
135 | int lastquestionID; | |
136 | int answered; | |
137 | ||
138 | int spammed; | |
139 | ||
140 | qab_spam* nextspam; | |
141 | qab_spam* lastspam; | |
142 | time_t spamtime; | |
143 | ||
144 | qab_answer* answers; | |
145 | ||
146 | unsigned long micnumeric; | |
79590bee P |
147 | unsigned long recnumeric; |
148 | FILE *recfile; | |
149 | FILE *playfile; | |
f011b15a CP |
150 | |
151 | struct qab_bot* next; | |
152 | struct qab_bot* prev; | |
153 | } qab_bot; | |
154 | ||
155 | extern time_t qab_startime; | |
156 | extern int qabot_nickext; | |
157 | extern int qabot_spam_nickext; | |
158 | extern int qabot_chanext; | |
159 | extern nick* qabot_nick; | |
160 | extern CommandTree* qabot_commands; | |
161 | extern qab_user* qabot_users; | |
162 | extern qab_bot* qab_bots; | |
163 | extern unsigned long qab_lastq_crc; | |
164 | extern int qab_lastq_count; | |
165 | ||
166 | /* qabot.c */ | |
167 | void qabot_lostnick(int hooknum, void* arg); | |
168 | void qabot_channel_part(int hooknum, void* arg); | |
169 | void qabot_createfakeuser(void* arg); | |
170 | void qabot_handler(nick* me, int type, void** args); | |
171 | void qabot_child_handler(nick* me, int type, void** args); | |
172 | char* qabot_getvictim(nick* np, char* target); | |
173 | const char* qabot_uflagtostr(flag_t flags); | |
174 | const char* qabot_formattime(time_t tme); | |
175 | ||
176 | /* qabot_bot.c */ | |
177 | qab_bot* qabot_getbot(); | |
178 | int qabot_addbot(char* nickname, char* user, char* host, char* pub_chan, char* qu_chan, char* stff_chan, flag_t flags, int spam_interval, int ask_wait, int queued_question_interval, nick* sender); | |
179 | void qabot_delbot(qab_bot* bot); | |
79590bee | 180 | void qabot_playback(qab_bot *bot); |
f011b15a CP |
181 | channel* qabot_getchannel(char* channel_name); |
182 | void qabot_spam(void* arg); | |
183 | void qabot_spamstored(void* arg); | |
184 | void qabot_createbotfakeuser(void* arg); | |
185 | qab_bot* qabot_getcurrentbot(); | |
186 | channel* qabot_getcurrentchannel(); | |
187 | void qabot_timer(void* arg); | |
188 | ||
189 | /* qabot_chancommands.c */ | |
190 | int qabot_dochananswer(void* np, int cargc, char** cargv); | |
191 | int qabot_dochanblock(void* np, int cargc, char** cargv); | |
192 | int qabot_dochanclear(void* np, int cargc, char** cargv); | |
193 | int qabot_dochanclosechan(void* np, int cargc, char** cargv); | |
194 | int qabot_dochanconfig(void* np, int cargc, char** cargv); | |
195 | int qabot_dochanhelp(void* np, int cargc, char** cargv); | |
196 | int qabot_dochanlistblocks(void* np, int cargc, char** cargv); | |
197 | int qabot_dochanmic(void* np, int cargc, char** cargv); | |
79590bee P |
198 | int qabot_dochanrecord(void *np, int cargc, char** cargv); |
199 | int qabot_dochanplay(void *np, int cargc, char** cargv); | |
200 | int qabot_dochancontinue(void *np, int cargc, char** cargv); | |
201 | int qabot_dochanstop(void *np, int cargc, char** cargv); | |
202 | int qabot_dochanlist(void *np, int cargc, char** cargv); | |
203 | int qabot_dochandelete(void *np, int cargc, char** cargv); | |
f011b15a CP |
204 | int qabot_dochanmoo(void* np, int cargc, char** cargv); |
205 | int qabot_dochanofftopic(void* np, int cargc, char** cargv); | |
206 | int qabot_dochanopenchan(void* np, int cargc, char** cargv); | |
207 | int qabot_dochanping(void* np, int cargc, char** cargv); | |
208 | int qabot_dochanreset(void* np, int cargc, char** cargv); | |
209 | int qabot_dochanspam(void* np, int cargc, char** cargv); | |
210 | int qabot_dochanstatus(void* np, int cargc, char** cargv); | |
211 | int qabot_dochanunblock(void* np, int cargc, char** cargv); | |
212 | ||
213 | /* qabot_commands.c */ | |
214 | int qabot_doshowcommands(void* sender, int cargc, char** cargv); | |
215 | int qabot_dohelp(void* sender, int cargc, char** cargv); | |
216 | int qabot_dohello(void* sender, int cargc, char** cargv); | |
217 | int qabot_dosave(void* sender, int cargc, char** cargv); | |
218 | int qabot_dolistbots(void* sender, int cargc, char** cargv); | |
219 | int qabot_dolistusers(void* sender, int cargc, char** cargv); | |
220 | int qabot_doshowbot(void* sender, int cargc, char** cargv); | |
221 | int qabot_doaddbot(void* sender, int cargc, char** cargv); | |
222 | int qabot_dodelbot(void* sender, int cargc, char** cargv); | |
223 | int qabot_doadduser(void* sender, int cargc, char** cargv); | |
224 | int qabot_dodeluser(void* sender, int cargc, char** cargv); | |
225 | int qabot_dochangelev(void* sender, int cargc, char** cargv); | |
226 | int qabot_dowhois(void* sender, int cargc, char** cargv); | |
227 | int qabot_dostatus(void* sender, int cargc, char** cargv); | |
228 | ||
229 | /* qabot_dbase.c */ | |
230 | void qabot_loaddb(); | |
231 | void qabot_savedb(); | |
232 | void qabot_savetimer(void* arg); | |
233 | void qabot_adduser(const char* authname, flag_t flags, time_t created); | |
234 | void qabot_deluser(const char* authname); | |
235 | void qabot_squelchuser(qab_user* user); | |
236 | qab_user* qabot_getuser(const char* authname); | |
237 | ||
238 | /* qabot_help.c */ | |
239 | int qabot_showhelp(nick* np, char* arg); | |
240 | ||
241 | #endif |