diff -ur eggdrop1.6.12/doc/html/tcl-commands.html eggdrop1.6.12.hub/doc/html/tcl-commands.html --- eggdrop1.6.12/doc/html/tcl-commands.html Wed Jul 17 15:18:29 2002 +++ eggdrop1.6.12.hub/doc/html/tcl-commands.html Sun Oct 13 13:18:49 2002 @@ -4334,6 +4334,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

    +
  • @@ -4448,6 +4462,12 @@

    !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.12/doc/tcl-commands.doc eggdrop1.6.12.hub/doc/tcl-commands.doc --- eggdrop1.6.12/doc/tcl-commands.doc Wed Jul 17 15:18:29 2002 +++ eggdrop1.6.12.hub/doc/tcl-commands.doc Sun Oct 13 13:18:27 2002 @@ -2057,6 +2057,15 @@ 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 @@ -2104,6 +2113,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 *** diff -ur eggdrop1.6.12/src/dcc.c eggdrop1.6.12.hub/src/dcc.c --- eggdrop1.6.12/src/dcc.c Thu Mar 21 22:53:56 2002 +++ eggdrop1.6.12.hub/src/dcc.c Sun Oct 13 13:15:11 2002 @@ -408,6 +408,7 @@ int f; strip_telnet(dcc[idx].sock, code, &i); + if (check_tcl_rbot(code, idx)) return; if (debug_output) { if (code[0] == 's') putlog(LOG_BOTSHARE, "*", "{%s} %s", dcc[idx].nick, code + 2); diff -ur eggdrop1.6.12/src/mod/module.h eggdrop1.6.12.hub/src/mod/module.h --- eggdrop1.6.12/src/mod/module.h Sun Feb 24 02:17:57 2002 +++ eggdrop1.6.12.hub/src/mod/module.h Sun Oct 13 13:15:11 2002 @@ -228,7 +228,7 @@ #define debug_output (*(int *)(global[106])) #define noshare (*(int *)(global[107])) /* 108 - 111 */ -/* 108: gban_total -- UNUSED (Eule) */ +#define H_rbot (*(p_tcl_bind_list *)(global[108])) #define make_userfile (*(int*)global[109]) #define default_flags (*(int*)global[110]) #define dcc_total (*(int*)global[111]) diff -ur eggdrop1.6.12/src/modules.c eggdrop1.6.12.hub/src/modules.c --- eggdrop1.6.12/src/modules.c Sun Feb 24 02:17:57 2002 +++ eggdrop1.6.12.hub/src/modules.c Sun Oct 13 13:15:11 2002 @@ -322,7 +322,7 @@ (Function) & debug_output, /* int */ (Function) & noshare, /* int */ /* 108 - 111 */ - (Function) 0, /* gban_total -- UNUSED! (Eule) */ + (Function) & H_rbot, /* p_tcl_bind_list */ (Function) & make_userfile, /* int */ (Function) & default_flags, /* int */ (Function) & dcc_total, /* int */ diff -ur eggdrop1.6.12/src/patch.h eggdrop1.6.12.hub/src/patch.h --- eggdrop1.6.12/src/patch.h Fri Jul 26 13:58:41 2002 +++ eggdrop1.6.12.hub/src/patch.h Sun Oct 13 13:15:11 2002 @@ -36,7 +36,7 @@ * * */ -/* PATCH GOES HERE */ +patch("rbot"); /* * * diff -ur eggdrop1.6.12/src/tclhash.c eggdrop1.6.12.hub/src/tclhash.c --- eggdrop1.6.12/src/tclhash.c Thu Jun 13 16:43:08 2002 +++ eggdrop1.6.12.hub/src/tclhash.c Sun Oct 13 13:19:45 2002 @@ -43,6 +43,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(); @@ -236,6 +237,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; } @@ -1158,4 +1160,22 @@ unbind_bind_entry(table, cc[i].flags, cc[i].name, l); 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.12/src/tclhash.h eggdrop1.6.12.hub/src/tclhash.h --- eggdrop1.6.12/src/tclhash.h Tue Jan 1 22:46:36 2002 +++ eggdrop1.6.12.hub/src/tclhash.h Sun Oct 13 13:15:11 2002 @@ -99,6 +99,7 @@ void check_tcl_away(const char *, int, const char *); void check_tcl_chatactbcst(const char *, int, const char *, tcl_bind_list_t *); void check_tcl_event(const char *); +int check_tcl_rbot(char *, int); #define check_tcl_chat(a, b, c) check_tcl_chatactbcst(a ,b, c, H_chat) #define check_tcl_act(a, b, c) check_tcl_chatactbcst(a, b, c, H_act) @@ -119,6 +120,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