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 

-commands.tcl- [to send reports on channel]

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


Joined: 27 Jan 2008
Posts: 43

PostPosted: Wed Mar 12, 2008 4:14 pm    Post subject: -commands.tcl- [to send reports on channel] Reply with quote

Hello friends..

I have this TCL script called Commands.TCL
perhaps you might know this..
OK

The thing is...
this dude reports with NOTICE, or PRIVATE MESAGGE
and I want to reports on channel..
i switched this code
Code:
puthelp "NOTICE $nick

for this code
Code:
puthelp "MSG $chan

but it doesn't work

When I switch this
Code:
puthelp "NOTICE $nick

for this
Code:
puthelp "PRIVMSG $nick


Works perfect

The entired code below:
Code:

##
#
# commands.tcl v1.2 - by strikelight ([sL] @ EFNet) (09/21/03)
#
# For eggdrop1.1.5-eggdrop1.6.x
#
# Contact:
# - E-Mail: strikelight@tclscript.com
# - WWW   : http://www.TCLScript.com
# - IRC   : #Scripting @ EFNet
#
##
#
# Description:
#
# This script will allow channel administrators to maintain a list of
# available triggers for the channel, and allow users to view the list
# of available triggers.
#
##
#
# History:
#
# (09/21/03)/v1.2 - Cosmetic fixes
#
# (10/20/02)/v1.1 - Fixed bug with error on startup:
#                   "can't read 'eggversion': no such variable"
#                   (Why didn't anyone else report this a long time ago?)
#                 - Added option to change the trigger command
#
# (5/27/02)/v1.0  - Initial Release
#
##
#
# Usage:
#
# Edit the configuration below, and
# type "!commands help" in a channel
#
# (Modify '!commands help' with the trigger you choose below in the config)
#
##

## CONFIGURATION ##

# Trigger to use?
set commands_trigger "!commands"

# Flag required to add/remove triggers
set commands_adminflag "m"

## END OF CONFIG ##

set commands_version "1.2"
set eggversion [string trimleft [lindex $version 1] 0]

bind pub - $commands_trigger commands:pub

proc handisop {hand chan} {
  return [expr {[validchan $chan] && [isop [hand2nick $hand $chan] $chan]}]
}

if {($eggversion >= 1030000)} {
  proc matchchanattr {handle flags channel} { return [matchattr $handle |$flags $channel] }
}

proc isoporvoice {nick chan} {
  return [expr {[validchan $chan] && ([isop $nick $chan] || [isvoice $nick $chan])}]
}

proc handisoporvoice {hand chan} {
  return [expr {[validchan $chan] && [isoporvoice [hand2nick $hand $chan] $chan]}]
}

proc mymatchattr {hand flags {chan ""}} {
  if {[regsub -all {[^&|().a-zA-Z0-9@+#-]} $flags {} f]} {
    putloglev o * "error: (matchattr): illegal character in flags: $flags"
    return 0
  }
  regsub -all -- {[|&]} $f {&&} f
  regsub -all -- {#-} $f {-#} f
  regsub -all -- {-} $f {!} f
  regsub -all -- {#?[a-zA-Z0-9]} $f {(&)} f
  regsub -all -- {\(#([a-zA-Z0-9])\)} $f {[matchchanattr $hand \1 $chan]} f
  regsub -all -- {\(([a-zA-Z0-9])\)} $f {[matchattr $hand \1]} f
  regsub -all -- {\.} $f {1} f
  regsub -all -- {@} $f {[handisop $hand $chan]} f
  regsub -all -- {\+} $f {[handisoporvoice $hand $chan]} f
  return [expr $f]
}

proc commands:load {} {
  global commands
  catch {unset commands}
  if {![file exists "commands.dat"]} {
    set outfile [open "commands.dat" w]
    close $outfile
  }
  set infile [open "commands.dat" r]
  set buffer [read $infile]
  close $infile
  set buffer [split $buffer "\n"]
  foreach line $buffer {
    if {$line != ""} {
      set dline [split $line "|"]
      set dchan [string tolower [lindex $dline 0]]
      set dcmd [lindex $dline 1]
      set ddesc [lindex $dline 2]
      set commands($dchan,$dcmd) $ddesc
    }
  }
  return 1
}

proc commands:save {} {
  global commands
  set outfile [open "commands.dat" w]
  foreach item [array names commands *,*] {
    set dchan [lindex [split $item ","] 0]
    set dcmd [lindex [split $item ","] 1]
    set ddesc $commands($item)
    if {($dchan != "") && ($dcmd != "") && ($ddesc != "")} {
      puts $outfile "$dchan|$dcmd|$ddesc"
    }
  }
  close $outfile
  return 1
}

proc commands:longestcmd {chan} {
  global commands
  set i 0
  foreach item [array names commands [string tolower $chan],*] {
    set ditem [join [lindex [split $item ","] 1]]
    if {[string length $ditem] > $i} { set i [string length $ditem] }
  }
  return $i
}

proc commands:iscommand {command chan} {
  global commands
  return [info exists commands([string tolower $chan],$command)]
}

proc commands:add {command desc chan} {
  global commands
  if {[commands:iscommand $command $chan]} { return 0 }
  set commands([string tolower $chan],$command) "$desc"
  return 1
}

proc commands:del {command chan} {
  global commands
  if {![commands:iscommand $command $chan]} { return 0 }
  catch {unset commands([string tolower $chan],$command)}
  return 1
}

proc commands:pub {nick uhost hand chan rest} {
  global commands commands_adminflag commands_trigger
  set cmd [string tolower [lindex [split $rest] 0]]
  set chan [string tolower $chan]
  switch $cmd {
    help {
      set tt $commands_adminflag
      puthelp "NOTICE $nick :+- \002commands.tcl\002 help"
      puthelp "NOTICE $nick :: [format %-39s "$commands_trigger"] - list of commands available in channel"
      if {[mymatchattr $hand $tt|#$tt $chan]} {
        puthelp "MSG $nick :: [format %-39s "$commands_trigger add {<command>} <description>"] - add a command to channel"
        puthelp "NOTICE $nick :: [format %-39s "$commands_trigger del {<command>}"] - remove a command for channel"
      }
      puthelp "NOTICE $nick :+- end of help."
      return
    }
    add {
      set tt $commands_adminflag
      if {![mymatchattr $hand $tt|#$tt $chan]} { return }
      set command [lindex $rest 1]
      set desc [join [lrange $rest 2 end]]
      if {($command == "") || ($desc == "")} {
        puthelp "NOTICE $nick :Usage: $commands_trigger add {<command>} <description>"
        puthelp "NOTICE $nick :Eg.  : $commands_trigger add {/ctcp lamer test} does something"
        return
      }
      set res [commands:add $command "$desc" $chan]
      if {!$res} {
        puthelp "NOTICE $nick :\002$command\002 is already marked as a command for $chan."
        return
      } else {
        puthelp "NOTICE $nick :Added \002$command\002 as a command for $chan."
        commands:save
        return
      }
    }
    del {
      set tt $commands_adminflag
      if {![mymatchattr $hand $tt|#$tt $chan]} { return }
      set command [lindex $rest 1]
      if {$command == ""} {
        puthelp "NOTICE $nick :Usage: $commands_trigger del <command>"
        return
      }
      set res [commands:del $command $chan]
      if {!$res} {
        puthelp "NOTICE $nick :\002$command\002 is not a command for $chan."
        return
      } else {
        puthelp "NOTICE $nick :Deleted \002$command\002 as a command for $chan."
        commands:save
        return
      }
    }
    default {
      set lngth [commands:longestcmd $chan]
      if {!$lngth} { return }
      if {$lngth < 8} { set lngth 8 }
      puthelp "NOTICE $nick :+- commands for \002$chan\002:"
      puthelp "NOTICE $nick :: \037[format %-${lngth}s "command\037"]  - \037description\037"
      foreach item [lsort [array names commands $chan,*]] {
        puthelp "NOTICE $nick :: \002[format %-${lngth}s "[lindex [split $item ","] 1]"]\002 - $commands($item)"
      }
      puthelp "NOTICE $nick :+- end of commands."
      return
    }
  }
}

commands:load
putlog "commands.tcl v$commands_version by strikelight now loaded."



Thank you for your helps
Back to top
View user's profile Send private message
YooHoo
Owner


Joined: 13 Feb 2003
Posts: 939
Location: Redwood Coast

PostPosted: Wed Mar 12, 2008 5:13 pm    Post subject: Re: -commands.tcl- [to send reports on channel] Reply with quote

Exedore wrote:
Hello friends..

I have this TCL script called Commands.TCL
perhaps you might know this..
OK

The thing is...
this dude reports with NOTICE, or PRIVATE MESAGGE
and I want to reports on channel..
i switched this code
Code:
puthelp "NOTICE $nick

for this code
Code:
puthelp "MSG $chan

but it doesn't work

You really should contact the author before muckin around with his code, but I can tell you this much, 'MSG' isn't a normal tcl command, PRIVMSG is. To make a bot 'speak' in a channel, the way to do it is
Code:
puthelp "PRIVMSG $chan :message goes here"

_________________
Mr. Green
Johoho's TCL for beginners
Mr. Green
Back to top
View user's profile Send private message Send e-mail
strikelight
Owner


Joined: 07 Oct 2002
Posts: 708

PostPosted: Wed Mar 12, 2008 6:52 pm    Post subject: Reply with quote

Timeless classics Wink
Back to top
View user's profile Send private message Visit poster's website
Exedore
Halfop


Joined: 27 Jan 2008
Posts: 43

PostPosted: Thu Mar 13, 2008 2:55 pm    Post subject: Reply with quote

Thank you very very much YooHoo!
IT WORKS
Very Happy
Back to top
View user's profile Send private message
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