This is the new home of the egghelp.org community forum.
All data has been migrated (including user logins/passwords) to a new phpBB version.


For more information, see this announcement post. Click the X in the top right-corner of this box to dismiss this message.

[SOLVED] can't read "lastseen": no such variable

Help for those learning Tcl or writing their own scripts.
Post Reply
User avatar
iamdeath
Master
Posts: 323
Joined: Fri Feb 11, 2005 2:32 pm
Location: *HeLL*
Contact:

[SOLVED] can't read "lastseen": no such variable

Post by iamdeath »

Hi, this is my another script I am having the similiar problem I had eariler with bonus script. What I am trying to do is, if a user's LAST SEEN matches 2 or more thescript stop/return. But I've tried all the possible ways, I am failure. Can you help me out fixing it.
Thanks.

Code: Select all

set ac(owner_username) "owner"
set ac(bot_username) "Bot-Username"
set notifyusers "owner"

set counter ""
bind notc - "USER: * ACCESS: *" ac:get_user
bind notc - "*SUSPENDED*" ac:block_user
bind notc - "LAST SEEN: *" ac:last_seen
bind notc - "LAST MODIFIED: * ago*" ac:modify_check
bind time - "* * * * *" ac:check

proc ac:list { handle idx text } {
global ac botnick user_names
putdcc $idx "Current users: $user_names"
}

proc ac:check { min hour day month year } {
global ac user_names counter
ac:get_list
if {$counter == ""} { set counter "-1" }
if {[lindex $user_names $counter] == ""} { set counter "-1" }
incr counter
if {[lindex $user_names $counter] == ""} { return }
puthelp "PRIVMSG X :ACCESS $ac(chan) [lindex $user_names $counter] -modif"
}

proc ac:get_user {nick uhost hand text dest } {
global botnick ac xaccess xusername
if {$nick != "X"} { puthelp "PRIVMSG $ac(chan) :Nickanme: $nick"; return }
set text [split $text]
set xusername [lindex $text 1]
set xaccess [lindex $text 3]
}

proc ac:block_user {nick uhost hand text dest} {
set xaccess "399"
}

proc ac:last_seen {nick uhost hand text dest} {
set text [split $text]
set lastseen [lindex $text 2]
}

proc ac:modify_check {nick uhost hand text dest } {
global botnick ac xaccess xusername who_main day_main lastseen
set text [split $text]
set who_mod [lindex $text 2]
set day_mod [lindex $text 4]
set prim_1 $who_mod$day_mod
set prim_1 [split $prim_1 ")("]
set prim_1_1 [lindex $prim_1 0]
set day_main [lindex $prim_1 3]
set who_main [lindex $prim_1 1]
ac:recap $xaccess $xusername $who_main $day_main $lastseen
}

proc ac:recap { xaccess xusername who_main day_main lastseen } {
global ac user_names notifyusers
if {[string tolower $who_main] != [string tolower $ac(bot_username)] && [string tolower $who_main] != [string tolower $ac(owner_username)]} { return }
if {$lastseen >= "2"} {return}
if {$xaccess == "399"} { return }
if {$day_main == "0"} { return }
puthelp "PRIVMSG X :MODINFO $ac(chan) ACCESS $xusername [expr $xaccess + 1]"
if {$notifyusers != "" && $notifyusers != " "} {
foreach notfuser $notifyusers {
sendnote IDA_SYSTEM $notfuser "Modified +1 Access Level to $text in $ac(chan)."
}
}
}
The error I get in DCC is:

Code: Select all

Tcl error [ac:modify_check]: can't read "lastseen": no such variable
First I fixed "Suspended", if a username is suspended by anyone the bot will return, so I mentioned it as == 399, that's solved. but LASTSEEN is giving me errors. I want the bot to check LAST SEEN, if a person is not shown within 2 days bot shouldnt modify him. Thanks.
G
GeeX
Voice
Posts: 29
Joined: Mon Sep 19, 2005 4:29 am

Post by GeeX »

try it with a string

Code: Select all

setudef str lastseen
User avatar
iamdeath
Master
Posts: 323
Joined: Fri Feb 11, 2005 2:32 pm
Location: *HeLL*
Contact:

Post by iamdeath »

no luck ;/
User avatar
iamdeath
Master
Posts: 323
Joined: Fri Feb 11, 2005 2:32 pm
Location: *HeLL*
Contact:

Post by iamdeath »

I made 2 changes and it's working fine.

1:

Code: Select all

proc ac:last_seen {nick uhost hand text dest} {
global lastseen
set text [split $text]
set lastseen [lindex $text 2]
}
2nd:

Code: Select all

if {$lastseen >= 2} {return}
Thanks to chris and you all :-)
Post Reply