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.

adding whois feature in this code

Requests for complete scripts or modifications/fixes for scripts you didn't write. Response not guaranteed, and no thread bumping!
Post Reply
User avatar
iamdeath
Master
Posts: 323
Joined: Fri Feb 11, 2005 2:32 pm
Location: *HeLL*
Contact:

adding whois feature in this code

Post by iamdeath »

Code: Select all

#------------------------------------------------------------------------
# relay.tcl v1.0.0 - Send channel text from one network to another       
#   By: cl00bie <cl00bie@sorcery.net>
#
# This script takes text, joins, parts, etc.  From a channel on one network, 
# sends it to the other network on the same channel and visa versa.  This 
# script requires two bots which are botnetted (Instructions on how to link
# bots is beyond the scope of this document.  See BOTNET in the $eggdrop/doc
# directory.)
#
# Once your bots are netted, simply add the channels you'd like to relay
# to the channelList variable, fill in the server?List variables (as per
# (the instructions) and load this script on both bots.
#
# Proposed Enhancements:
#  o xkick - kick someone off the remote bot channel
#  o xwhois - do a /whois on the remote bot channel
#  o xmsg - send a private message to someone on the remote bot channel
#  o Synchronize topics
#------------------------------------------------------------------------  

# List of channels to relay between (lower case only!)
set channelList "#ouwet"

# This identifies the server information of the two networks you wish to
#  relay to each other.  There are three entries in each and they are as
#  follows:
#  0 - A unique pattern in each of the servers you use on a particular 
#      network.  (ex. all SorceryNet servers contain the word "sorcery"
#      in them, but none of the DALnet servers use this.)
#  1 - The name of the network as you'd like it to appear on the *other*
#      network (ex. <Dal-Bot> [SorceryNet] <Nickname> hi there everyone on
#      DALnet :))
#  2 - The name of the bot which sits on the *other* network.  (The bot you
#      want the informaiton sent *to*)
set server1List "dal \00303DALnet\003 Beirut"
set server2List "Beirut \00304Beirut\003 Dalnet"

# Procedure: send_across - sends the information from one network to 
#   the other.
proc send_across {cmd chan nick text} {
  global server channelList server1List server2List
  if {[lsearch $channelList [string tolower $chan]] != -1} {
    if  {[string first [lindex $server1List 0] $server] != -1} {
      set fromServer "[lindex $server1List 1]"
      set toBot "[lindex $server1List 2]" 
    } else {
      set fromServer "[lindex $server2List 1]"
      set toBot "[lindex $server2List 2]" 
    }
    set botMsg [concat $cmd $chan $fromServer $nick $text]
    putbot $toBot $botMsg
  }
}

# Find out who's on the other network channel
proc send_xnames {nick uhost hand arg} {
global botnick
  if {$arg == "" || [string first "#" $arg] != 0} {
    putserv "NOTICE $nick :Usage\: /msg $botnick xnames #channel"
  } else {
    if {[onchan $nick $arg]} {
      send_across "names" $arg $nick "dummy"
    } else {
      putserv "NOTICE $nick :I'm sorry, you must be in channel $arg to do a remote names (xnames) command"
    }
  }
}
bind msg - xnames send_xnames

proc relay_xnames {frm_bot command arg} {
  set startingChanlist "[chanlist [lindex $arg 0]]" 
  foreach mem $startingChanlist {
    if {[isop $mem [lindex $arg 0]]} {
      lappend finalChanlist \@$mem
    } elseif {[isvoice $mem [lindex $arg 0]]} {
      lappend finalChanlist \+$mem
    } else {
      lappend finalChanlist $mem
    }
  }
  send_across "rnames" [lindex $arg 0] [lindex $arg 2] $finalChanlist
}
bind bot - names relay_xnames

proc recv_xnames {frm_bot command arg} {
  putserv "NOTICE [lindex $arg 2] :The following people are on channel [lindex $arg 0] on net [lindex $arg 1] : [lrange $arg 3 end]"
}
bind bot - rnames recv_xnames

proc send_nick {nick uhost hand chan newnick} {
  send_across "nick" $chan $nick $newnick
}
bind nick - * send_nick

proc recv_nick {frm_bot command arg} {
  putserv "PRIVMSG [lindex $arg 0] :\[[lindex $arg 1]\] \00306*** [lindex $arg 2] is now known as [lrange $arg 3 end]\003"
}
bind bot - nick recv_nick

proc send_mode {nick uhost hand chan mchg victim} {
  if {[string first "b" [lindex $mchg 0]] != -1} {
    send_across "ban" $chan $nick $mchg 
  }
}
bind mode - * send_mode

# Multiple recv's from one send
proc recv_ban {frm_bot command arg} {
  putserv "MODE [lindex $arg 0] [lrange $arg 3 end]"
}
bind bot - ban recv_ban

proc send_sign {nick uhost hand chan reason} {
  send_across "sign" $chan $nick $reason
}
bind sign - * send_sign

proc recv_sign {frm_bot command arg} {
  putserv "PRIVMSG [lindex $arg 0] :\[[lindex $arg 1]\] \00302*** [lindex $arg 2] Quit \([lrange $arg 3 end]\)\003"
}
bind bot - sign recv_sign

proc send_pubm {nick uhost hand chan text} {
  set cmd "pubm"
  send_across $cmd $chan $nick $text
}
bind pubm - * send_pubm

proc recv_pubm {frm_bot command arg} {
  putserv "PRIVMSG [lindex $arg 0] :\[[lindex $arg 1]\] \<[lindex $arg 2]\> [lrange $arg 3 end]"
}
bind bot - pubm recv_pubm

proc send_action {nick uhost hand chan keyw text} {
  send_across "act" $chan $nick $text
}
bind ctcp - "ACTION" send_action

proc recv_action {frm_bot command arg} {
  putserv "PRIVMSG [lindex $arg 0] :\[[lindex $arg 1]\] \00306\* [lindex $arg 2] [lrange $arg 3 end]\003"
}
bind bot - act recv_action

proc send_join {nick uhost hand chan} {
  send_across "join" $chan $nick\($uhost\) "dummy"
  send_across "names" $chan $nick "dummy"
}
bind join - * send_join

proc recv_join {frm_bot command arg} {
  putserv "PRIVMSG [lindex $arg 0] :\[[lindex $arg 1]\] \00307\*** Joins [lindex $arg 2]\003"
# putserv "PRIVMSG [lindex $arg 0] :\[[lindex $arg 1]\] \00307\*** [lindex $arg 2] has joined channel [lindex $arg 0]\003"
}
bind bot - join recv_join

proc send_part {nick uhost hand chan arg} {
  send_across "part" $chan $nick ""
}
bind part - * send_part

proc recv_part {frm_bot command arg} {
  putserv "PRIVMSG [lindex $arg 0] :\[[lindex $arg 1]\] \00310\*** [lindex $arg 2] has left channel [lindex $arg 0]\003"
}
bind bot - part recv_part

putlog "relay 1.0.0 by: cl00bie <cl00bie@sorcery.net>"
I am currently using this code for relaying 2 channels on 2 networks, all I want to ask for favor is if it's possible to add .whois command so that users can whois other users on different network and the results should be shown in their private query not channel. Here i have whois script but i dont know how to adjust it in this code. Your help will be really appreciated Thanks alot.

Code: Select all

set mychannel "#Channel" 
bind pub -|- !whois script:whois 

proc script:whois { nick host handle chan text } { 
global user 
set text [split $text] 
set user [lindex $text 0] 
if {$user == ""} {puthelp "NOTICE $nick :You need to supply a nickname."; return} 
putquick "WHOIS $user" 
} 

bind raw - "311" script:whois1 
bind raw - "312" script:whois1 
bind raw - "318" script:whois1 
bind raw - "319" script:whois1 
bind raw - "401" script:whois1 
bind raw - "301" script:whois1 
bind raw - "313" script:whois1 
bind raw - "330" script:whois1 
bind raw - "317" script:whois1 

proc script:whois1 {from key text} { 
global mychannel user 
set text [split $text " "] 
set topaste [join [lrange $text 1 end] " "] 
set nickname [lindex $text 1] 
if {![info exists user] || [string compare -nocase $nickname $user]} {return 0} 
putserv "PRIVMSG $mychannel :$topaste" 
} 


putlog "!whois script loaded by iamdeath."
|AmDeAtH @ Undernet
Death is only the *Beginning*...
User avatar
awyeah
Revered One
Posts: 1580
Joined: Mon Apr 26, 2004 2:37 am
Location: Switzerland
Contact:

Post by awyeah »

For whois you just need to bind to the raw keywords and display the output, should be nothing difficult.. and you will execute it through a public trigger.
301 nick :away
310 nick :looks very helpful
311 nick username address * :info
312 nick server :info
313 nick :is an IRC Operator
317 nick seconds signon :info
318 request :End of /WHOIS list.
319 nick :channels
431 :No nickname given
*** Taken from: http://www.mirc.net/raws/
·­awyeah·

==================================
Facebook: jawad@idsia.ch (Jay Dee)
PS: Guys, I don't accept script helps or requests personally anymore.
==================================
User avatar
awyeah
Revered One
Posts: 1580
Joined: Mon Apr 26, 2004 2:37 am
Location: Switzerland
Contact:

Post by awyeah »

Well what don't you understand over here from my reply?? ask.
·­awyeah·

==================================
Facebook: jawad@idsia.ch (Jay Dee)
PS: Guys, I don't accept script helps or requests personally anymore.
==================================
User avatar
iamdeath
Master
Posts: 323
Joined: Fri Feb 11, 2005 2:32 pm
Location: *HeLL*
Contact:

Post by iamdeath »

Thanks for your reply, actually the problem is not creating publci trigger or using any raw the problem is how will I send $text to the other bot on the different network and that bot will perfom whois on the given text. This is a relay script so I want users could check whois info of other users who are on differnet network.

Thanks
|AmDeAtH @ Undernet
Death is only the *Beginning*...
User avatar
awyeah
Revered One
Posts: 1580
Joined: Mon Apr 26, 2004 2:37 am
Location: Switzerland
Contact:

Post by awyeah »

For this both of your bots should be linked, else you cannot accomplish this. You can do something like this. Msg the other bot on the botnet with $text say "WHOIS $nick" and when the other bot receives it:

ON THE BOTNET from the receiving bot:
(1) Check for the sending botnick (use string equal or string match)
(2) Split $text into a list
(3) Check if [llength $text] == 2
(3) Then check string equal [lindex $text 1] with WHOIS
(4) Then go ahead and putserv "WHOIS [lindex $text 2]"
(5) Get the raw WHOIS data and store it in an array
(6) Then use the botnet to send the data back to the first bot
(7) Use a trigger while sending back so the receiving bot can identify it and display it into the channel or to the user who requested the WHOIS

There are many ways in which you can relay it to the other bot and this is one of the simplest methods.
·­awyeah·

==================================
Facebook: jawad@idsia.ch (Jay Dee)
PS: Guys, I don't accept script helps or requests personally anymore.
==================================
User avatar
Alchera
Revered One
Posts: 3344
Joined: Mon Aug 11, 2003 12:42 pm
Location: Ballarat Victoria, Australia
Contact:

Post by Alchera »

Code: Select all

#------------------------------------------------------------------------
# relay.tcl v1.0.0 - Send channel text from one network to another       
#   By: cl00bie <cl00bie@sorcery.net> 
Contacting the author first about modifications would be the proper thing to do (if they are available).
Add [SOLVED] to the thread title if your issue has been.
Search | FAQ | RTM
User avatar
iamdeath
Master
Posts: 323
Joined: Fri Feb 11, 2005 2:32 pm
Location: *HeLL*
Contact:

Post by iamdeath »

Alchera wrote:

Code: Select all

#------------------------------------------------------------------------
# relay.tcl v1.0.0 - Send channel text from one network to another       
#   By: cl00bie <cl00bie@sorcery.net> 
Contacting the author first about modifications would be the proper thing to do (if they are available).
I have already emailed him and went to the network he comes but he is missing since february. That was my first priority anyway, I think we can now modify since the author is missing. Yes credits will and should not be changed at all.

Thanks
iamdeath
|AmDeAtH @ Undernet
Death is only the *Beginning*...
User avatar
slennox
Owner
Posts: 593
Joined: Sat Sep 22, 2001 8:00 pm
Contact:

Post by slennox »

Moved to Script Requests.
Post Reply