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