]>
jfr.im git - irc/quakenet/newserv.git/blob - qabot/qabot.h
8 char *strdup(const char *);
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"
21 #define QABOT_HOMECHAN "#qnet.pr"
23 #define QAUFLAG_STAFF 0x01
24 #define QAUFLAG_ADMIN 0x02
25 #define QAUFLAG_DEVELOPER 0x04
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)
31 #define QUESTIONINTERVAL 30
32 #define SPAMINTERVAL 10
34 #define QUEUEDQUESTIONINTERVAL 2
35 #define QUESTIONHASHSIZE 1000
37 #define QABOT_SAVEWAIT 3600
39 #define QABOT_MICTIMEOUT 180
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
51 #define QABBLOCK_ACCOUNT 0
52 #define QABBLOCK_HOST 1
53 #define QABBLOCK_TEXT 2
56 #define QAQ_ANSWERED 0x01
57 #define QAQ_OFFTOPIC 0x02
59 #define QAQ_QSTATE 0x07
61 #define QAC_QUESTIONCHAN 0x01
62 #define QAC_STAFFCHAN 0x02
64 #define DEFAULTBOTFLAGS QAB_CONTROLCHAR|QAB_COLOUR|QAB_LINEBREAK|QAB_FLOODSTOP
66 typedef struct qab_user
{
67 char authname
[ACCOUNTLEN
+ 1];
71 struct qab_user
* next
;
72 struct qab_user
* prev
;
75 typedef struct qab_spam
{
78 struct qab_spam
* next
;
81 typedef struct qab_question
{
85 char nick
[NICKLEN
+ 1];
86 unsigned long numeric
;
90 struct qab_question
* next
;
93 typedef struct qab_answer
{
94 qab_question
* question
;
95 char nick
[NICKLEN
+ 1];
97 struct qab_answer
* next
;
100 typedef struct qab_block
{
102 char creator
[ACCOUNTLEN
+ 1];
106 struct qab_block
* next
;
107 struct qab_block
* prev
;
110 typedef struct qab_bot
{
111 char nick
[NICKLEN
+ 1];
112 char user
[USERLEN
+ 1];
117 chanindex
* public_chan
;
118 chanindex
* question_chan
;
119 chanindex
* staff_chan
;
123 /*int question_interval;*/
126 int queued_question_interval
;
134 qab_question
* questions
[QUESTIONHASHSIZE
];
146 unsigned long micnumeric
;
147 unsigned long recnumeric
;
151 struct qab_bot
* next
;
152 struct qab_bot
* prev
;
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
;
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
);
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
);
180 void qabot_playback(qab_bot
*bot
);
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
);
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
);
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
);
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
);
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
);
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
);
239 int qabot_showhelp(nick
* np
, char* arg
);