diff -ur eggdrop1.6.15/doc/html/tcl-commands.html eggdrop1.6.15.new/doc/html/tcl-commands.html
--- eggdrop1.6.15/doc/html/tcl-commands.html Sun May 4 18:05:32 2003
+++ eggdrop1.6.15.new/doc/html/tcl-commands.html Sun May 4 21:06:59 2003
@@ -4361,6 +4361,20 @@
Module: transfer
+
+
+ RBOT (stackable)
+
+ bind rbot <flags> <key> <proc>
+ proc-name <key> <text> <nick>
+
+ Description: triggered by raw text recieved on
+ the botnet. Key is thebotnet command (i.e. zb for putallbots, c
+ for chat text) and may contain wildcards. Text is the whole line
+ recieved.
+
+ Module: core
+
@@ -4475,6 +4489,13 @@
!nick! msg
+
+
+ RBOT
+
Return 1 to ask the bot not to process the raw text. This can
+ break a botnet causing it to be desynced if you're not careful.
+
+
diff -ur eggdrop1.6.15/doc/tcl-commands.doc eggdrop1.6.15.new/doc/tcl-commands.doc
--- eggdrop1.6.15/doc/tcl-commands.doc Sun May 4 18:05:32 2003
+++ eggdrop1.6.15.new/doc/tcl-commands.doc Sun May 4 21:08:09 2003
@@ -2093,6 +2093,16 @@
because the data transfer stalled for some reason.
Module: transfer
+| (45) RBOT (stackable)
+| bind rbot
+| proc-name
+|
+| Description: triggered by raw text recieved on the botnet. Key is the
+| botnet command (i.e. zb for putallbots, c for chat text) and may
+| contain wildcards. Text is the whole line recieved.
+| Module: core
+
+
(B) RETURN VALUES
@@ -2141,6 +2151,9 @@
(11) WALL Return 1 to make the command get logged like so:
!nick! msg
+| (12) RBOT Return 1 to ask the bot not to process the raw text. This can
+| break a botnet causing it to be desynced if you're not careful.
+
*** CONTROL PROCEDURES ***
Using the 'control' command, you can put a DCC connection (or outgoing
diff -ur eggdrop1.6.15/src/dcc.c eggdrop1.6.15.new/src/dcc.c
--- eggdrop1.6.15/src/dcc.c Sun May 4 18:05:32 2003
+++ eggdrop1.6.15.new/src/dcc.c Sun May 4 21:08:53 2003
@@ -406,6 +406,7 @@
int f;
strip_telnet(dcc[idx].sock, code, &i);
+ if (check_tcl_rbot(code, idx)) return;
if (raw_log) {
if (code[0] == 's')
putlog(LOG_BOTSHARE, "*", "{%s} %s", dcc[idx].nick, code + 2);
diff -ur eggdrop1.6.15/src/mod/module.h eggdrop1.6.15.new/src/mod/module.h
--- eggdrop1.6.15/src/mod/module.h Sun May 4 18:05:32 2003
+++ eggdrop1.6.15.new/src/mod/module.h Sun May 4 21:10:32 2003
@@ -231,7 +231,7 @@
#define max_dcc (*(int *)global[100])
#define require_p (*(int *)global[101])
#define ignore_time (*(int *)(global[102]))
-/* was use_console_r */
+#define H_rbot (*(p_tcl_bind_list *)(global[103]))
/* 104 - 107 */
#define reserved_port_min (*(int *)(global[104]))
#define reserved_port_max (*(int *)(global[105]))
diff -ur eggdrop1.6.15/src/modules.c eggdrop1.6.15.new/src/modules.c
--- eggdrop1.6.15/src/modules.c Sun May 4 18:05:33 2003
+++ eggdrop1.6.15.new/src/modules.c Sun May 4 21:12:21 2003
@@ -324,7 +324,7 @@
(Function) & max_dcc, /* int */
(Function) & require_p, /* int */
(Function) & ignore_time, /* int */
- (Function) 0, /* was use_console_r */
+ (Function) & H_rbot, /* p_tcl_bind_list */
/* 104 - 107 */
(Function) & reserved_port_min,
(Function) & reserved_port_max,
diff -ur eggdrop1.6.15/src/patch.h eggdrop1.6.15.new/src/patch.h
--- eggdrop1.6.15/src/patch.h Sun May 4 18:08:01 2003
+++ eggdrop1.6.15.new/src/patch.h Sun May 4 21:12:42 2003
@@ -36,7 +36,7 @@
*
*
*/
-/* PATCH GOES HERE */
+patch("rbot");
/*
*
*
diff -ur eggdrop1.6.15/src/tclhash.c eggdrop1.6.15.new/src/tclhash.c
--- eggdrop1.6.15/src/tclhash.c Sun May 4 18:05:33 2003
+++ eggdrop1.6.15.new/src/tclhash.c Sun May 4 21:17:34 2003
@@ -42,6 +42,7 @@
p_tcl_bind_list H_chat, H_act, H_bcst, H_chon, H_chof, H_load, H_unld, H_link,
H_disc, H_dcc, H_chjn, H_chpt, H_bot, H_time, H_nkch, H_away,
H_note, H_filt, H_event;
+p_tcl_bind_list H_rbot;
static int builtin_2char();
static int builtin_3char();
@@ -234,6 +235,7 @@
H_away = add_bind_table("away", HT_STACKABLE, builtin_chat);
H_act = add_bind_table("act", HT_STACKABLE, builtin_chat);
H_event = add_bind_table("evnt", HT_STACKABLE, builtin_char);
+ H_rbot = add_bind_table("rbot", HT_STACKABLE, builtin_3char);
add_builtins(H_dcc, C_dcc);
Context;
}
@@ -1169,3 +1171,21 @@
nfree(l);
}
}
+
+int check_tcl_rbot(char *text, int idx)
+{
+ char key[11];
+ unsigned char ctr=0;
+ for (; ctr < 11; ctr++)
+ if (text[ctr] == ' ')
+ {
+ key[ctr] = 0;
+ break;
+ }
+ else key[ctr] = text[ctr];
+ Tcl_SetVar(interp, "_rbot1", key, 0);
+ Tcl_SetVar(interp, "_rbot2", text, 0);
+ Tcl_SetVar(interp, "_rbot3", dcc[idx].nick, 0);
+ return (check_tcl_bind(H_rbot, key, 0, " $_rbot1 $_rbot2 $_rbot3",
+ MATCH_MASK | BIND_STACKABLE | BIND_WANTRET) == BIND_EXEC_LOG);
+}
diff -ur eggdrop1.6.15/src/tclhash.h eggdrop1.6.15.new/src/tclhash.h
--- eggdrop1.6.15/src/tclhash.h Sun May 4 18:05:33 2003
+++ eggdrop1.6.15.new/src/tclhash.h Sun May 4 21:18:02 2003
@@ -115,6 +115,7 @@
extern p_tcl_bind_list H_chat, H_act, H_bcst, H_chon, H_chof;
extern p_tcl_bind_list H_load, H_unld, H_dcc, H_bot, H_link;
extern p_tcl_bind_list H_away, H_nkch, H_filt, H_disc, H_event;
+extern p_tcl_bind_list H_rbot;
#endif