egghelp.org community Forum Index
[ egghelp.org home | forum home ]
egghelp.org community
Discussion of eggdrop bots, shell accounts and tcl scripts.
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

insult.tcl , slap

 
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Support & Releases
View previous topic :: View next topic  
Author Message
JazzMatazz
Voice


Joined: 08 Dec 2005
Posts: 2

PostPosted: Fri Dec 09, 2005 12:04 am    Post subject: insult.tcl , slap Reply with quote

Hi,

i installed a bot and managed to get it up and running.
Ive trid to install a few TCLs, with mixed results.
One problem i have is with the insult.tcl (obtainable at ftp://ftp.chaotix.net/pub/RCS/TCL/insult102.tcl.gz )

It says something about
Code:

if {[string tolower $rest] == [string tolower $botnick]} {putserv "KICK $channel $nick :Insult this beotch! LOL"; return 0}
if {$rest == ""} {
                  if {$insult(who) == 0} {set rest $nick}
                  if {$insult(who) == 1} {set rest [getrnduser $channel]}
                 }

(whole code below)

unfortunately the Bot does not kick when insulted. Insteads nothing follows when the command is entered. (He is not insulted either)
With normal users this works fine.
Could you tell me what the problem is?

My second question would be how i can make a simple "!slap command".
All it should do is the standard "$nick slaps $nick2 with a large trout"

Kind regards,
Jazz

insult.tcl
Code:

#######################################################################
#                                                                     #
# rssnews.tcl - RSS news announcer for eggdrop by demond@demond.net   #
#                                                                     #
#               this will announce the updated news from RSS feed(s), #
#               periodically polling the feed(s); supports multiple   #
#               channels, one feed per channel; you only need to set  #
#               the feeds array, see below                            #
#                                                                     #
#        Usage: !rss <news#|*> (read news# or * for headlines list)   #
#                                                                     #
#######################################################################

package require Tcl 8.3
package require eggdrop 1.6
package require http 2.0

namespace eval rssnews {

# set your feed(s) sources here: channel, poll frequency in mins, feed URL
#
set feeds(#shu) {17 http://www.shortnews.com/rss/HighTech.xml}
set feeds(#shu) {11 http://enews.ebaumsworld.com/enews.rss}
set feeds(#shu) {30 http://www.davesdaily.com/rss/davesdaily.rss}
set feeds(#shu) {20 http://slashdot.org/slashdot.rss}

# maximum number of announced new headlines
#
variable maxnew 5

# feed fetch timeout in seconds
#
variable timeout 20

# public trigger flood settings
#
variable pubflud 5:15

# support SSL feeds (requires TLS package)
#
variable usessl 0

# if usessl is 1, request/require valid certificate from server
#
variable reqcert yes:no

#######################################################################
# nothing to edit below

variable version "rssnews-1.5"

if {$usessl} {
   package require tls 1.5
   scan $reqcert {%[^:]:%s} r1 r2
   if {$r1 == "yes"} {set r1 1} {set r1 0}
   if {$r2 == "yes"} {set r2 1} {set r2 0}
   set ssl [list ::tls::socket -request $r1 -require $r2]
   ::http::register https 443 $ssl
}

bind pub  - !rss [namespace current]::news
bind time - *    [namespace current]::timer

putlog "$version by demond loaded"

proc timer {min hour day month year} {
   variable feeds
   if {[info exists feeds]} {
   if {$min} {set min [string trimleft $min 0]}
   foreach {chan feed} [array get feeds] {
      if {$min && $min % [lindex $feed 0] == 0} {
         fetch [lindex $feed 1] $chan
      }
   }}
}

proc fetch {url chan} {
   variable timeout
   variable version; variable token
   set to [expr {$timeout * 1000}]
   set cmd [namespace current]::callback
   ::http::config -useragent "$version by demond"
   if {[catch {set t [::http::geturl $url -command $cmd -timeout $to]} err]} {
      putlog "$version: ERROR($chan): $err"
   } {
      set token($t) $chan
   }
}

proc callback {t} {
   variable version; variable token
   set chan $token($t)
   switch -exact [::http::status $t] {
   "timeout" {
      putlog "$version: ERROR($chan): timeout"
   }
   "error" {
      putlog "$version: ERROR($chan): [::http::error $t]"
   }
   "ok" {
      if {[::http::ncode $t] != 200} {
         putlog "$version: ERROR($chan): [::http::code $t]"
      } {
         process [::http::data $t] $chan
      }
   }
   default {
      putlog "$version: ERROR($chan): got EOF from socket"
   }}
   ::http::cleanup $t
}

proc process {data chan} {
   variable news; variable hash
   variable maxnew; variable source
   set idx 1; set count 0
   set news($chan) {}; set source($chan) ""
   if {[regexp {(?i)<title>(.*?)</title>} $data -> foo]} {
      append source($chan) $foo
   }
   if {[regexp {(?i)<description>(.*?)</description>} $data -> foo]} {
      append source($chan) " | $foo"
   }
   regsub -all {(?i)<items.*?>.*?</items>} $data {} data
   foreach {foo item} [regexp -all -inline {(?i)<item.*?>(.*?)</item>} $data] {
      regexp {(?i)<title.*?>(.*?)</title>}  $item -> title
      regexp {(?i)<link.*?>(.*?)</link}     $item -> link
      regexp {(?i)<desc.*?>(.*?)</desc.*?>} $item -> descr
      if {![info exists title]} {set title "(none)"}
      if {![info exists link]}  {set link  "(none)"}
      if {![info exists descr]} {set descr "(none)"}
      strip title link descr
      if {[info exists hash($chan)]} {
      if {[lsearch -exact $hash($chan) [md5 $title]] == -1 && [botonchan $chan]} {
         if {$count < $maxnew} {
            puthelp "privmsg $chan :($idx) $title"
            incr count
         } {
            lappend indices $idx
         }
      }}
      lappend news($chan) [list $title $link $descr]
      lappend hashes [md5 $title]
      incr idx
   }
   if {[info exists indices] && [botonchan $chan]} {
      set count [llength $indices]
      set indices "(indices: [join $indices {, }])"
      puthelp "privmsg $chan :...and $count more $indices"
   }
   set hash($chan) $hashes
}

proc strip {args} {
   variable html
   foreach a $args {
      upvar $a x
      set amp {&amp; &}
      set x [string map $amp $x]
      set x [string map $html $x]
      while {[regexp -indices {(&#[0-9]{1,3};)} $x -> idxs]} {
         set b [lindex $idxs 0]; set e [lindex $idxs 1]
         set num [string range $x [expr {$b+2}] [expr {$e-1}]]
         if {$num < 256} {
            set x [string replace $x $b $e [format %c $num]]
         }
      }
      regexp {(?i)<!\[CDATA\[(.*?)\]\]>}   $x ->    x
      regsub -all {(?i)</t[dr]><t[dr].*?>} $x { | } x
      regsub -all {(?i)(<p>|<br>|\n)}      $x { }   x
      regsub -all {<[^<]+?>}               $x {}    x
   }
}

proc news {nick uhost hand chan text} {
   variable source
   variable news; variable feeds
   variable pcount; variable pubflud
   if {[info exists pcount]} {
      set n [lindex $pcount 1]; incr n
      set ts [lindex $pcount 0]
      set pcount [list $ts $n]
      scan $pubflud {%[^:]:%s} maxr maxt
      if {$n >= $maxr} {
         if {[unixtime] - $ts <= $maxt} {return}
         set n 1; set ts [unixtime]
      }
   } {
      set n 1; set ts [unixtime]
   }
   set pcount [list $ts $n]
   set num [lindex [split $text] 0]
   if {$num == ""} {
      puthelp "notice $nick :Usage: $::lastbind <news#|*>"
      return
   }
   if {$num != "*" && ![string is integer $num]} {
      puthelp "notice $nick :argument must be number or *"
      return
   }
   if {![info exists news($chan)]} {
      puthelp "notice $nick :no news for this channel"
      return
   }
   if {$num == "*"} {
      set idx 1
      if {$source($chan) != ""} {
         set title $source($chan)
      } {
         set title [lindex $feeds($chan) 1]
      }
      puthelp "notice $nick :News source: \002$title\002"
      foreach item $news($chan) {
         puthelp "notice $nick :($idx) [lindex $item 0]"
         incr idx
      }
      return 1
   } {
   if {$num < 1 || $num > [llength $news($chan)]} {
      puthelp "notice $nick :no such news index, try $::lastbind *"
   } {
      set idx [expr {$num-1}]
      puthelp "notice $nick :......title($num): [lindex [lindex $news($chan) $idx] 0]"
      puthelp "notice $nick :description($num): [lindex [lindex $news($chan) $idx] 2]"
      puthelp "notice $nick :.......link($num): [lindex [lindex $news($chan) $idx] 1]"
      return 1
   }}
}

variable html {
   &quot;     \x22  &apos;     \x27  &amp;      \x26  &lt;       \x3C
   &gt;       \x3E  &nbsp;     \x20  &iexcl;    \xA1  &curren;   \xA4
   &cent;     \xA2  &pound;    \xA3  &yen;      \xA5  &brvbar;   \xA6
   &sect;     \xA7  &uml;      \xA8  &copy;     \xA9  &ordf;     \xAA
   &laquo;    \xAB  &not;      \xAC  &shy;      \xAD  &reg;      \xAE
   &macr;     \xAF  &deg;      \xB0  &plusmn;   \xB1  &sup2;     \xB2
   &sup3;     \xB3  &acute;    \xB4  &micro;    \xB5  &para;     \xB6
   &middot;   \xB7  &cedil;    \xB8  &sup1;     \xB9  &ordm;     \xBA
   &raquo;    \xBB  &frac14;   \xBC  &frac12;   \xBD  &frac34;   \xBE
   &iquest;   \xBF  &times;    \xD7  &divide;   \xF7  &Agrave;   \xC0
   &Aacute;   \xC1  &Acirc;    \xC2  &Atilde;   \xC3  &Auml;     \xC4
   &Aring;    \xC5  &AElig;    \xC6  &Ccedil;   \xC7  &Egrave;   \xC8
   &Eacute;   \xC9  &Ecirc;    \xCA  &Euml;     \xCB  &Igrave;   \xCC
   &Iacute;   \xCD  &Icirc;    \xCE  &Iuml;     \xCF  &ETH;      \xD0
   &Ntilde;   \xD1  &Ograve;   \xD2  &Oacute;   \xD3  &Ocirc;    \xD4
   &Otilde;   \xD5  &Ouml;     \xD6  &Oslash;   \xD8  &Ugrave;   \xD9
   &Uacute;   \xDA  &Ucirc;    \xDB  &Uuml;     \xDC  &Yacute;   \xDD
   &THORN;    \xDE  &szlig;    \xDF  &agrave;   \xE0  &aacute;   \xE1
   &acirc;    \xE2  &atilde;   \xE3  &auml;     \xE4  &aring;    \xE5
   &aelig;    \xE6  &ccedil;   \xE7  &egrave;   \xE8  &eacute;   \xE9
   &ecirc;    \xEA  &euml;     \xEB  &igrave;   \xEC  &iacute;   \xED
   &icirc;    \xEE  &iuml;     \xEF  &eth;      \xF0  &ntilde;   \xF1
   &ograve;   \xF2  &oacute;   \xF3  &ocirc;    \xF4  &otilde;   \xF5
   &ouml;     \xF6  &oslash;   \xF8  &ugrave;   \xF9  &uacute;   \xFA
   &ucirc;    \xFB  &uuml;     \xFC  &yacute;   \xFD  &thorn;    \xFE
   &yuml;     \xFF
}

}
[/code]
Back to top
View user's profile Send private message
demond
Revered One


Joined: 12 Jun 2004
Posts: 3073
Location: San Francisco, CA

PostPosted: Fri Dec 09, 2005 2:07 am    Post subject: Reply with quote

using my script together with a lowly script named insult.tcl? now that's an insult dude!!

Wink
_________________
connection, sharing, dcc problems? click <here>
before asking for scripting help, read <this>
use [code] tag when posting logs, code
Back to top
View user's profile Send private message Visit poster's website
JazzMatazz
Voice


Joined: 08 Dec 2005
Posts: 2

PostPosted: Fri Dec 09, 2005 9:24 am    Post subject: Reply with quote

damn i pasted the wrong script!
it was 5 a.m...

oh and besides: your script aint working either. it always says "no news spcified for the channel"... channel is "#shu"
Back to top
View user's profile Send private message
Alchera
Revered One


Joined: 11 Aug 2003
Posts: 3344
Location: Ballarat Victoria, Australia

PostPosted: Fri Dec 09, 2005 8:14 pm    Post subject: Reply with quote

insult.tcl is a very old script written for eggdrop v1.6.2. The author, [DrN], referred to this script as "lame".

Quote:
Insult is another lame TCL. It will hurl bad insults at yourself or others when triggered.

_________________
Add [SOLVED] to the thread title if your issue has been.
Search | FAQ | RTM
Back to top
View user's profile Send private message Visit poster's website
demond
Revered One


Joined: 12 Jun 2004
Posts: 3073
Location: San Francisco, CA

PostPosted: Sat Dec 10, 2005 1:36 am    Post subject: Reply with quote

JazzMatazz wrote:
damn i pasted the wrong script!
it was 5 a.m...

oh and besides: your script aint working either. it always says "no news spcified for the channel"... channel is "#shu"


that means the bot was unable (or still hasn't tried; it works on timer) to fetch RSS data from the feed(s) you specified; check the log

and post any further comments, should you have any, in the script's support thread
_________________
connection, sharing, dcc problems? click <here>
before asking for scripting help, read <this>
use [code] tag when posting logs, code
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Support & Releases All times are GMT - 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Forum hosting provided by Reverse.net

Powered by phpBB © 2001, 2005 phpBB Group
subGreen style by ktauber