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 

adding whois feature in this code

 
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Requests
View previous topic :: View next topic  
Author Message
iamdeath
Master


Joined: 11 Feb 2005
Posts: 323
Location: *HeLL*

PostPosted: Tue Sep 18, 2007 12:29 pm    Post subject: adding whois feature in this code Reply with quote

Code:
#------------------------------------------------------------------------
# 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:
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*...
Back to top
View user's profile Send private message Visit poster's website
awyeah
Revered One


Joined: 26 Apr 2004
Posts: 1580
Location: Switzerland

PostPosted: Tue Sep 18, 2007 8:58 pm    Post subject: Reply with quote

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.

Quote:

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.
==================================
Back to top
View user's profile Send private message Send e-mail Visit poster's website Yahoo Messenger MSN Messenger
awyeah
Revered One


Joined: 26 Apr 2004
Posts: 1580
Location: Switzerland

PostPosted: Thu Sep 20, 2007 5:04 am    Post subject: Reply with quote

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.
==================================
Back to top
View user's profile Send private message Send e-mail Visit poster's website Yahoo Messenger MSN Messenger
iamdeath
Master


Joined: 11 Feb 2005
Posts: 323
Location: *HeLL*

PostPosted: Thu Sep 20, 2007 6:10 am    Post subject: Reply with quote

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*...
Back to top
View user's profile Send private message Visit poster's website
awyeah
Revered One


Joined: 26 Apr 2004
Posts: 1580
Location: Switzerland

PostPosted: Thu Sep 20, 2007 12:58 pm    Post subject: Reply with quote

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.
==================================
Back to top
View user's profile Send private message Send e-mail Visit poster's website Yahoo Messenger MSN Messenger
Alchera
Revered One


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

PostPosted: Thu Sep 20, 2007 7:46 pm    Post subject: Reply with quote

Code:
#------------------------------------------------------------------------
# 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
Back to top
View user's profile Send private message Visit poster's website
iamdeath
Master


Joined: 11 Feb 2005
Posts: 323
Location: *HeLL*

PostPosted: Thu Sep 20, 2007 11:52 pm    Post subject: Reply with quote

Alchera wrote:
Code:
#------------------------------------------------------------------------
# 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*...
Back to top
View user's profile Send private message Visit poster's website
slennox
Owner


Joined: 22 Sep 2001
Posts: 593

PostPosted: Sat Sep 22, 2007 6:34 pm    Post subject: Reply with quote

Moved to Script Requests.
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 Requests 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