Code: Select all
# Basic Request script
# GNU License
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# /* This is a basic request script, It will join the channel, check some settings and stay/part if accepted.
# * This does NOT add other bots to that channel.
# * If you want it to do that, You will have to make it do that yourself :)
# * If you have any questions about this script, feel free to ask me in #v1per on irc.quakenet.org
# * Also, if you find any bugs, the same channel, my nickname is metroid
# * Also, leave my copyright in, If you want to put your own copyright in MY script, Make your own script completely from scratch.
# */
# /* Installing the request script
# * First, put the script into your /home/user/*eggdrop name*/scripts folder.
# * Then at the end of your eggdrop.conf, Put:
# * source scripts/request.tcl
# * Just rehash the bot after you've done this and it should work.
# */
# /* This is a VERY basic idea of what you can use for a request system with eggdrops.
# * It's very flexible as it's really easy to just add whatever you want to it :)
# * Good luck with making your own request script and if you need some help, you can contact me.
# */
namespace eval request {
variable version "1.0"
variable author "metroid"
# Configuration!
# Our homechannel, they can only request here.
variable homechan "#v1per"
# Ammount of people we require.
variable needed "30"
# Do we want a Q or L?
variable service "1"
# Do we send a message to the homechannel when a request fails?
variable tell "1"
# End of Config!
# Do NOT edit anything below these lines
variable busy "0"
bind PUB -|- !request [namespace current]::request
}
proc request::request {nickname hostname handle channel arguments} {
if {[string equal -nocase $channel $request::homechan]} {
if {!$request::busy} {
set chan [lindex [split $arguments] 0]
if {$chan != "" && ![validchan $chan]} {
if {[string index $chan 0] == "#"} {
set request::busy 1
bind RAW -|- 315 [namespace current]::who
utimer 30 [list [namespace current]::timeout $chan]
channel add $chan
set ::info "$nickname $chan"
} else {
putquick "NOTICE $nickname :A channel name starts with an #."
}
} else {
putquick "NOTICE $nickname :You seem to have given an improper syntax for the channel."
}
} else {
putquick "NOTICE $nickname :Sorry, there is already a request in progress."
}
}
}
proc request::who {server raw arguments} {
unbind RAW -|- 315 [namespace current]::who
if {$request::busy} {
if {![info exists ::info]} { return 0 }
set nickname [lindex [split $::info] 0]
set channel [lindex [split $::info] 1]
unset ::info
set request::busy 0
if {![onchan $nickname $channel] || ![isop $nickname $channel]} {
putquick "NOTICE $nickname :You are not on $channel or you aren't opped."
if {$request::tell} {
putquick "PRIVMSG $request::homechan :Request for $channel failed. $nickname is not on $channel or is not opped."
}
channel remove $channel
return 0
}
if {$request::service} {
if {![onchan L $channel] && ![onchan Q $channel]} {
set busy 0
putquick "NOTICE $nickname :Q or L was not found on $channel."
if {$request::tell} {
putserv "PRIVMSG $request::homechan :Request for $channel failed. There is no Q or L on $channel."
}
channel remove $channel
return 0
}
}
if {[llength [chanlist $channel]] < $request::needed} {
putquick "NOTICE $nickname :$channel has less than $request::needed users."
if {$request::tell} {
putserv "PRIVMSG $request::homechan :Request for $channel failed. There are not enough users on $channel (There are [llength [chanlist $channel]] users)."
}
channel remove $channel
return 0
}
# Request is accepted
putquick "NOTICE $nickname :Your request is accepted. I will stay on $channel."
putquick "PRIVMSG $request::home :Request from $nickname for $channel was accepted. The channel has [llength [chanlist $channel]] users."
if {![validuser [nick2hand $nickname]]} {
adduser $nickname *![getchanhost $nickname]
chattr $nickname |+n $channel
} else {
chattr [nick2hand $nickname] |+n $channel
}
}
}
proc request::timeout {chan} {
if {[validchan $chan] && ![botonchan $chan]} {
channel remove $chan
putquick "PRIVMSG $request::homechan :Request for $chan failed. Bot cannot join $chan."
if {[info exists ::info]} { unset ::info }
}
}
proc request::version {} {
putlog "Basic Request script version: $request::version by $request::author was loaded successfully."
}
request::version
Hi it possible to change the request cmd !request #chan By !request <nickbot> #chan
expl:
set botnicks "botnick1 botnick2 botnick3 etc etc etc"
!request botnick1 #chan
!request botnick2 #chan
Thx and copyright respected just modif.