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.

add command to dreamer invite script?

Help for those learning Tcl or writing their own scripts.
Post Reply
b
brood
Voice
Posts: 30
Joined: Thu Sep 01, 2005 4:12 am

add command to dreamer invite script?

Post by brood »

Hi, im using invite script by dreamer

Code: Select all

###########################################
#							
# Channel invite 0.1 BETA			
# Scripted by Dreamer				
# 							
###########################################
#	
# Type /msg <botnick> @add <nick> <pass> 
# to add someone to the database
# Type /msg <botnick> @invite <nick> <pass>
# to get invited in to channel
#
# History:
# 0.1: First version
#
###########################################
# EDIT FROM HERE

# Channel where the bot wil invite
set chan_1 "#TCG"

# Name of the database
set db scripts/chan.invite

# STOP EDITING FROM HERE

set ver "0.1"

bind msg n add add_1
bind msg - invite inv_1

putlog "Channel invite $ver by Dreamer loaded"

# Script starts now

proc add_1 { nick uhost hand args } {
	global chan_1 db
	set args [split $args " "]
	set user [lindex $args 0]
	set user [string range $user 1 end]
	set pass [lindex $args 1]
	set pass [string range $pass 0 end-1]
	if { $user == "" || $pass == "" } { 
			putserv "PRIVMSG $nick :Please instert a Nickname and a password" 
			return 0
	}
	set up $user|$pass
	set wfile [open $db a+]
	puts $wfile $up
	close $wfile
	putserv "PRIVMSG $chan_1 :\002\[\0039DB-UPDATE\003\]\002 + \002$user\002 is added to INVITE-Database by \002$nick\002"
}

proc inv_1 { nick uhost hand arg } {
	global chan_1 db
	set found 0
	set arg [split $arg " "]
	set user1 [lindex $arg 0]
	set user1 [string range $user1 0 end]
	set pass1 [lindex $arg 1]
	set pass1 [string range $pass1 0 end]
	set up1 $user1|$pass1
	set found 0 
	set fs [open $db r] 
	while {![eof $fs]} { 
	gets $fs line 
	if {$line == $up1} { set found 1 } 
	} 
	close $fs 
	if {$found} { 
	putserv "PRIVMSG $chan_1 :\002\[\0039INVITE\003\]\002 - \002$user1\002 invited himself as \002$nick\002"
 	putserv "invite $nick $chan_1"
	} else {
	putserv "PRIVMSG $nick :Wrong pass or username !!!!"
	putserv "PRIVMSG $chan_1 : \002\[\0034INTRUDER\003\]\002 - $nick tried to get in the channel with wrongpass or username"
	} 
}

Can a command be added to delete nicks I dont want to be in the invite-db annymore? Something like:

/msg <botnick> @del <nick>

thanks
I
IRCNick
Halfop
Posts: 64
Joined: Wed Oct 12, 2005 9:43 pm
Location: Germany
Contact:

Post by IRCNick »

I'm newbie in tcl but I want to learn, thats why I'm trying. This code is untested and could be wrong (I'm fast sure that it is wrong), use it on your own risk !

Ok add after

Code: Select all

bind msg n add add_1
this line

Code: Select all

bind msg n del del_1
and add this proc after the first proc

Code: Select all

proc del_1 [nick uhost hand args } {
   global chan_1db
   set args [split $args " "]
   set user [lindex $args 0]
   set user [string range $user 1 end]
   set pass [lindex $args 1]
   set pass [string range $pass 0 end-1]
   set deluser $user|$pass
   set found 0
   set wfile [open $db a+]
   while {![eof $wfile]} {
   gets $wfile line
   if {$line == $deluser} { 
    delete $deluser
	set found 1
    }
   }
   close $wfile
   if {$found} {
   puthelp "NOTICE $nick : \002\[\0039DB-UPDATE\003\]\002 + \002$user\002 is deleted successful from INVITE-Database"
   } else {
   puthelp "NOTICE $nick :The username was not found in the Database"
   }
}
And the command to delete nicks should be:

Code: Select all

/msg <botnick> @del <nick> <pass>
Good luck
b
brood
Voice
Posts: 30
Joined: Thu Sep 01, 2005 4:12 am

Post by brood »

sorry, it doesnt seem to work :(

but thanks for the response[/code]
User avatar
Sir_Fz
Revered One
Posts: 3794
Joined: Sun Apr 27, 2003 3:10 pm
Location: Lebanon
Contact:

Post by Sir_Fz »

"Doesn't work" doesn't help you, you probably got an error and didn't bother to post it here.

Code: Select all

proc del_1 [nick uhost hand args } {
should be

Code: Select all

proc del_1 {nick uhost hand args } {
for starters.
User avatar
Alchera
Revered One
Posts: 3344
Joined: Mon Aug 11, 2003 12:42 pm
Location: Ballarat Victoria, Australia
Contact:

Post by Alchera »

brood wrote:sorry, it doesnt seem to work :(

but thanks for the response[/code]

Code: Select all

.set errorInfo
... then paste result into your post. :)
Add [SOLVED] to the thread title if your issue has been.
Search | FAQ | RTM
I
IRCNick
Halfop
Posts: 64
Joined: Wed Oct 12, 2005 9:43 pm
Location: Germany
Contact:

Post by IRCNick »

Sir_Fz wrote:"Doesn't work" doesn't help you, you probably got an error and didn't bother to post it here.

Code: Select all

proc del_1 [nick uhost hand args } {
should be

Code: Select all

proc del_1 {nick uhost hand args } {
for starters.
Thank you, this was actually a type error...
But I think this isn't the problem. I wasn't very sure, what I have to do if I want to erase a line in some text file. I tried to search tcl.tk but I found nothing and I just writed:

Code: Select all

delete $deluser
but I think, that this insn't the right syntax, it could be better if I add just -. instead of erasing the whole line. Hmm how I said I'm not very sure for the syntax.
User avatar
Sir_Fz
Revered One
Posts: 3794
Joined: Sun Apr 27, 2003 3:10 pm
Location: Lebanon
Contact:

Post by Sir_Fz »

You can read the file into a list, delete the line from the list and write the new list to the file.
b
brood
Voice
Posts: 30
Joined: Thu Sep 01, 2005 4:12 am

Post by brood »

Sir_Fz wrote:
"Doesn't work" doesn't help you, you probably got an error and didn't bother to post it here.
Code:
proc del_1 [nick uhost hand args } {

should be
Code:
proc del_1 {nick uhost hand args } {

for starters.
I notice that type error when I tried it.

the error i get is:
Tcl error [del-1] : cant read "db": no such variable
I found the mistake:

Code: Select all

   global chan_1db 
should be

Code: Select all

   global chan_1 db
Now it response to: /msg <botnick> @del <nick> <pass>

But if try a nick and pass thats in the db it will only say:
*botnick* The username was not found in the Database
So it is not finding the nicks that are in the db.

I checked the db and the nicks are still there.
Post Reply