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
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"
# Set here all the requestable bots (making sure they are online!)
variable botlist "[list bot1 bot2 bot3 etc]"
# 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 bot [lindex [split $arguments] 0]
set chan [lindex [split $arguments] 1]
if {$bot == ""} {
putserv "NOTICE $nickname :Syntax for request is as follows: $::lastbind <botnick> <#channel>."
return
}
if {[lsearch -exact $request::botlist $bot] == -1} {
putserv "NOTICE $nickname :User '$bot' is not in my botlist for request."
putserv "NOTICE $nickname :These bot's are requestable: [join $request::botlist ", "]"
return
}
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 $bot"
} 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]
set bot [lindex [split $::info] 2]
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. $bot will join $channel."
putquick "PRIVMSG $request::home :Request from $nickname for $channel was accepted. The channel has [llength [chanlist $channel]] users."
putquick "PRIVMSG $bot :rjoin $channel $nickname *![getchanhost $nickname]"
}
}
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
Code: Select all
bind msg H| rjoin request:dojoin
proc request:dojoin {nickname hostname handle text} {
set channel [lindex [split $text] 0]
set nick [lindex [split $text] 1]
set host [lindex [split $text] 2]
if {![validuser [nick2hand $nick]]} {
adduser $nick $host
chattr $nick |+n $channel
} else {
chattr [nick2hand $nick] |+n $channel
}
putserv "NOTICE $nick :Hello $nick. Im your new bot. Your added to my userlist as '[nick2hand $nick]' with the hostname '$host'. Enjoy!"
}