<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-gb">
	<link rel="self" type="application/atom+xml" href="https://forum.eggheads.org/app.php/feed/topic/5108" />

	<title>egghelp/eggheads community</title>
	<subtitle>Discussion of eggdrop bots, shell accounts and tcl scripts.</subtitle>
	<link href="https://forum.eggheads.org/index.php" />
	<updated>2003-07-29T05:42:32-04:00</updated>

	<author><name><![CDATA[egghelp/eggheads community]]></name></author>
	<id>https://forum.eggheads.org/app.php/feed/topic/5108</id>

		<entry>
		<author><name><![CDATA[Sir_Fz]]></name></author>
		<updated>2003-07-29T05:42:32-04:00</updated>

		<published>2003-07-29T05:42:32-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=24154#p24154</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=24154#p24154"/>
		<title type="html"><![CDATA[eddie-0.8.6a]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=24154#p24154"><![CDATA[
at the begining of your code:<div class="codebox"><p>Code: </p><pre><code>if {$chan_limits == ""} {set eddie_lim 0} if {$greeting &gt; 2} {source $greeter}</code></pre></div>change it to:<div class="codebox"><p>Code: </p><pre><code>if {$::chan_limits == ""} {set eddie_lim 0} if {$::greeting &gt; 2} {source $::greeter}</code></pre></div>I think u should have eggdrop1.6.13 or greater for this.<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=3085">Sir_Fz</a> — Tue Jul 29, 2003 5:42 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[LtPhil]]></name></author>
		<updated>2003-07-29T05:20:07-04:00</updated>

		<published>2003-07-29T05:20:07-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=24151#p24151</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=24151#p24151"/>
		<title type="html"><![CDATA[eddie-0.8.6a]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=24151#p24151"><![CDATA[
you're lacking globals.<br><br>find the proc that the error occurred in, and at the top, put <strong class="text-strong">global chan_limits</strong>.<br><br>you'll most likely get similar errors once that proc is fixed.  repeat for each variable that it dies at, in the procs that it pukes in.<br><br>that should at least be a good start <img class="smilies" src="https://forum.eggheads.org/images/smilies/icon_razz.gif" width="15" height="15" alt=":P" title="Razz"><p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=3577">LtPhil</a> — Tue Jul 29, 2003 5:20 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[Anonymous]]></name></author>
		<updated>2003-07-28T19:39:21-04:00</updated>

		<published>2003-07-28T19:39:21-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=24139#p24139</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=24139#p24139"/>
		<title type="html"><![CDATA[eddie-0.8.6a]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=24139#p24139"><![CDATA[
this is the conf file<blockquote class="uncited"><div># Eddie's Extensions - eddie.conf<br>#   <a href="http://sourceforge.net/projects/eddie42" class="postlink">http://sourceforge.net/projects/eddie42</a><br><br># This is the configuration file - please edit it!<br><br><br># channels where Eddie's Extensions are active. Use {*} for all channels<br>set eddie(chans) {#flatlinersclan}<br><br># channels where this bot will control the limit of the channel<br>set chan_limits {#flatlinersclan}<br><br># if this bot is controlling the limits, what should be the limit?<br># NB. limit = current number of users on the chan + n<br>set n 1337<br><br># set to 1 if the magic 8ball is to be on by default<br>set magic 1<br><br># set to 0 to disable seanmode (kicking people who say !seanmode)<br>set seanmode 1<br><br># set to 1 if you have bseen installed on this bot, 0 if not<br># You can get it from <a href="ftp://ftp.eggheads.org/pub/eggdrop/users/bass/" class="postlink">ftp://ftp.eggheads.org/pub/eggdrop/users/bass/</a><br>set bseen 0<br><br># set to 1 if you want to kick MS Comic Chat users, 0 if not<br>set nocomic 0<br><br># on-join public greetings for channels where Eddie's Extensions is active<br>#  0=off for all channels<br>#  1=basic greeting for channels stated in $chans<br>#  2=basic greeting on all channels<br>#  3=advanced greeting on selected channels (please see and edit greeter.tcl)<br>set greeting 3<br><br># should !help &lt;command&gt; send a notice to the whole channel? 0=no, 1=yes<br>set help_notice 0<br><br># Reassign the +chan/-chan commands masters user instead of just ownders? 0=no, 1=yes<br>set chan_m 0<br><br># Display a message on the channel when someone leaves IRC? 0=no, 1=yes<br>set sign_msg 0<br><br># set the directory containnig Techies.sg<br>set quotedir "/home/relisysuk/eggdrop/quotes/"<br><br># set the key for the encrypt/decrypt procedures<br>set eddie_key 42<br><br># a user with no +o or +v flags who has not been seen for x DAYS will be deleted<br># when a bot owner performs the !cleanusers command. Setting this to 0 disables it.<br>set Expired_after 21<br><br># maximum amount of time before the bot says a random saying (in minutes)<br># Setting this to 0 disables it.<br>set maxtime 20<br><br># uncomment out the following line if your eggdrop version is &gt;=v1.6 and if you<br># want it to auth when it first gets on the IRC server:<br># bind evnt - init-server init_serv<br><br># set the details need to auth with the channel services, if applicable<br># eg. for undernet:  set service "<a href="mailto:X@channels.undernet.org">X@channels.undernet.org</a>"<br># set service   "<a href="mailto:P@cservice.planetarion.com">P@cservice.planetarion.com</a>"<br># set serv_user "username"<br># set serv_pass "password"<br><br># is your bot on the undernet IRC network? 0=no, 1=yes<br># (remember to also set the service name above!)<br>set undernet 0<br><br># NB. In order for the undernet services to automatically op your bot, you need<br># to say this on the partyline:<br>#      .chanset #channel need-op putserv "PRIVMSG X :op #channel $botnick"<br><br># what the email address where short text messages from !sms will goto<br>#   format:  "alias email address"<br># set sms_data {<br>  "owner1 <a href="mailto:user1@domain1.xyz">user1@domain1.xyz</a>"<br>  "owner2 <a href="mailto:user2@domain2.xyz">user2@domain2.xyz</a>"<br>}<br><br># set the the data used by the !url and .url commands<br>#   format:  "name URL"<br># See <a href="http://pisg.sourceforge.net" class="postlink">http://pisg.sourceforge.net</a> for an IRC statistics generator, it can create<br># a nice webpage for you :-)<br>set url_data {<br>  "eddie <a href="http://sourceforge.net/projects/eddie42/" class="postlink">http://sourceforge.net/projects/eddie42/</a>"<br>  "eddie42 <a href="http://sourceforge.net/projects/eddie42/" class="postlink">http://sourceforge.net/projects/eddie42/</a>"<br>  "freshmeat <a href="http://freshmeat.net" class="postlink">http://freshmeat.net</a>"<br>  "fm <a href="http://freshmeat.net" class="postlink">http://freshmeat.net</a>"<br>  "./ <a href="http://slashdot.org" class="postlink">http://slashdot.org</a>"<br>  "slashdot <a href="http://slashdot.org" class="postlink">http://slashdot.org</a>"<br>  "google <a href="http://www.google.com" class="postlink">http://www.google.com</a>"<br>  "pisg <a href="http://pisg.sourceforge.net" class="postlink">http://pisg.sourceforge.net</a>"<br>  "stats http://$host/stats.html"<br>}<br><br># only users with this flag will get automatically invited<br># set invite(flag) "Z"<br><br># channels that users with the above flag will get invited TO<br># set invite(to) "#channel-A #channel-B"<br><br># channels that users with the above flag will get invited FROM<br># Use * to mean all channels<br># set invite(from) "*"<br><br># comment out this next line, otherwise your bot won't start<br># die "You didn't edit eddie.conf like you were told, did you?"</div></blockquote>and this is the tcl file<blockquote class="uncited"><div># Eddie's Extensions v0.8.6 - Tcl script for an eggdrop bot<br>#   <a href="http://sourceforge.net/projects/eddie42/" class="postlink">http://sourceforge.net/projects/eddie42/</a><br>#<br># Copyright (C) 2000-2002  &lt;Jamie 'Wonko' Cheetham&gt; - <a href="mailto:jamie@softham.co.uk">jamie@softham.co.uk</a><br>#<br># This program is free software; you can redistribute it and/or modify<br># it under the terms of the GNU General Public License as published by<br># the Free Software Foundation; either version 2 of the License, or<br># (at your option) any later version.<br>#<br># This program is distributed in the hope that it will be useful,<br># but WITHOUT ANY WARRANTY; without even the implied warranty of<br># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the<br># GNU General Public License for more details.<br>#<br># You should have received a copy of the GNU General Public License<br># along with this program; if not, write to the Free Software<br># Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA<br><br># Commenting out the following items will disable that function<br>bind msgm - "*asl*" asl<br>bind msg - !encrypt encrypt1<br>bind msg - encrypt encrypt1<br>bind msg - !decrypt decrypt1<br>bind msg - decrypt decrypt1<br>bind msg - !poll msg_vote<br>bind msg - poll msg_vote<br>bind pubm - "*# Appears as *" pub_nocomic<br>bind pubm - "*all your * are belong to *" checkbase<br>bind pub - !8ball 8ball<br>bind pub - 8ball 8ball<br>bind pub - !8-ball 8ball<br>bind pub - 8-ball 8ball<br>bind pub - !addquote addquote<br>bind pub - !calc calc<br>bind pub - !calculate calc<br>bind pub - !devoice devoice<br>bind pub - !eddie eddies<br>bind pub - !flags flags<br>bind pub - !giveme giveme<br>bind pub - !giveto giveto<br>bind pub - !help help<br>bind pub - @invite invite<br>bind pub - !list showlist<br>bind pub - !lock lock<br>bind pub - !op op<br>bind pub - !pi pi<br>bind pub - !ping ping_me<br>bind pub - !poll poll<br>bind pub - !quote quote<br>bind pub - !random random<br>bind pub - !seanmode seanmode<br>bind pub - !sms sms<br>bind pub - !status status<br>bind pub - !time time<br>bind pub - !unlock unlock<br>bind pub - !uptime uptime<br>bind pub - !url url<br>bind pub - @url url<br>bind pub - !version version<br>bind pub - !voice voice<br>bind pub - !whack whack<br>bind pub - !whoami whoami<br>bind pub - @whoami whoami<br>bind pub - !xmas xmas<br>bind pub o|o !resetbans pub_resetbans<br>bind pub n|n !cleanusers cleanusers<br>bind dcc m auth dcc_auth<br>bind dcc m eddiecheck dcc_eddiecheck<br>bind dcc m kill dcc_kill<br>bind dcc m limit dcc_limits<br>bind dcc m seanmode dcc_sean<br>bind dcc m sms dcc_sms<br>bind dcc m join dcc_join<br>bind dcc m part dcc_part<br>bind dcc o poll dcc_poll<br>bind dcc o locktopic dcc_locktopic<br>bind dcc o unlocktopic dcc_unlocktopic<br>bind dcc v broadcast dcc_broadcast<br>bind dcc * action dcc_action<br>bind dcc * hand2nick dcc_findnick<br>bind dcc * stats dcc_stats<br>bind dcc * urls dcc_url<br>bind ctcp - DCC got_dcc<br>bind topc - * ctopic<br>bind kick - * kicked<br>bind sign - * sign<br>bind mode - * opped<br><br>##### YOU SHOULDN'T NEED TO EDIT ANYTHING BELOW HERE #####<br><br>bind join - * enter<br>bind time - "** % % % %" check_limits<br>bind ctcr - PING ping_me_reply<br>bind bot - vBOTNET_EDDIE_CHECK bot_check<br>bind bot - vBOTNET_EDDIE_CHECK_ACK bot_check_ack<br><br>set greeter "scripts/greeter.tcl"<br>if {![info exists eddie(chans)] || $eddie(chans) == ""} {"\002Eddie's Extensions\002: WARNING - Not configured properly!"}<br>if {![info exists n] || $n &lt; 0} {set n 2}<br>if {![info exists seanmoden]} {set seanmode 1}<br>if {![info exists nocomic]} {set nocomic 1}<br>if {![info exists greeting]} {set greeting 1}<br>if {![info exists help_notice]} {set help_notice 1}<br>if {![info exists chan_m]} {set chan_m 1}<br>if {![info exists sign_msg]} {set sign_msg 1}<br>if {![info exists quotedir]} {set quotedir "/home/relisysuk/eggdrop/quotes/"}<br>if {[string range $quotedir [expr [string length $quotedir]-1] end] != "/"} {set quotedir $quotedir/}<br>if {![info exists eddie_key]} {set eddie_key 42}<br>if {![info exists Expired_after] || $Expired_after &lt; 0} {set Expired_after 21}<br>if {![info exists eddie_key] || $Expired_after &lt; 0} {set maxtime 60}<br>if {$chan_limits == ""} {set eddie_lim 0}<br>if {$greeting &gt; 2} {source $greeter}<br><br>### DO NOT ALTER THESE VALUES!<br>set eddie_ver "v0.8.6a"<br>set eddie_lim 1<br>set eddie(poll) 0<br>set eddie(v_nick) ""<br>set eddie(v_host) ""<br>set yes 0<br>set no 0<br>set question "test"<br>set eddie(code) ""<br>set last_asked ""<br>set sms_user ""<br>set sms_addy ""<br>set url_name ""<br>set url_addy ""<br>set t_locks ""<br>set pi 3.1415926535897932<br>set e 2.71828182845905<br>set g 9.81<br>###<br><br>if {$chan_m} {<br>  unbind dcc n +chan *dcc:+chan<br>  bind dcc m +chan *dcc:+chan<br>  unbind dcc n -chan *dcc:-chan<br>  bind dcc m -chan *dcc:-chan<br>}<br><br>proc init_serv {type} {dcc_auth "" -1 ""}<br>proc dcc_auth {handle idx arg} {<br>  global service serv_user serv_pass undernet<br>  if {$undernet} {<br>    putserv "PRIVMSG $service :login $serv_user $serv_pass"<br>  } else {putserv "PRIVMSG $service :auth $serv_user $serv_pass"}<br>}<br><br>proc eddies {nick host handle chan arg} {<br>  global eddie<br>  if {[string first $chan $eddie(chans)] &gt;= 0} {<br>    putserv "NOTICE $chan :Eddie's Extensions is online. Channel commands are available. Use !help for more info."<br>  } else {putserv "NOTICE $chan :Eddie's Extensions is online. Channel commands are not available."}<br>  putserv "NOTICE $chan :Eddie's Extensions is available from http\://sourceforge.net/projects/eddie42/."<br>}<br><br>proc dcc_poll {handle idx arg} {<br>  global eddie question yes no<br>  set cmd [lindex [string tolower $arg] 0]<br>  if {$cmd == "on" } {<br>    if {$question == "test"} {<br>      putidx $idx "WARNING\: No queston set!"<br>      return 0<br>    }<br>    putidx $idx "My poll has started..."<br>    foreach chan $eddie(chans) {putserv "NOTICE $chan :The poll is now open! For more info, type !poll"}<br>    set eddie(poll) 1<br>  } elseif {$cmd == "off" &amp;&amp; $eddie(poll)} {<br>    putidx $idx "The poll is now closed."<br>    foreach chan $eddie(chans) {putserv "NOTICE $chan :The poll is now closed! For results, type !poll results"}<br>    set eddie(poll) 0<br>    putidx $idx "YES - $yes       NO - $no"<br>    putidx $idx "TOTAL NUMBER OF VOTES - [expr $yes+$no]"<br>    putidx $idx "VOTED NICKS - $eddie(v_nick)"<br>    putidx $idx "VOTED HOSTS - $eddie(v_host)"<br>  } elseif {$cmd == "off" &amp;&amp; !$eddie(poll)} {<br>    putidx $idx "The poll is already closed."<br>  } elseif {$cmd == "status" } {<br>    if {$question != "test"} {<br>      putidx $idx "The question is '$question'"<br>    } else {putidx $idx "No question is set."}<br>    if {$eddie(poll)} { <br>      putidx $idx "The poll is running."<br>    } else {putidx $idx "The poll is closed."}<br>  } elseif {$cmd == "reset" } {<br>    if {$eddie(poll)} { <br>      putidx $idx "The poll can only be reset when it is closed."<br>      return 0<br>    }<br>    set yes 0<br>    set no 0<br>    set question "test"<br>    set eddie(v_nick) ""<br>    set eddie(v_host) ""<br>    putidx $idx "The poll has now been reset. You will need to set a new question."<br>  } elseif {$eddie(poll)} { <br>    putidx $idx "The question can only be changed when the poll is closed."<br>  } else {<br>    if {$arg == ""} {<br>      putidx $idx "\002Usage:\002 .poll &lt;on/off/reset&gt;  or  .poll (new question)"<br>    } else {<br>      set question $arg<br>      putidx $idx "New question set."<br>    }<br>  }<br>}<br><br>proc dcc_sean {handle idx arg} {<br>  global seanmode<br>  set cmd [lindex $arg 0]<br>  switch $cmd {<br>  "on" {<br>    putidx $idx "Seanmode is now enabled!"<br>    set seanmode 1<br>  } "off" {<br>    putidx $idx "Seanmode is now disabled!"<br>    set seanmode 0<br>  } "status" {<br>    if {!$seanmode} {putidx $idx "!seanmode is currently not active."}<br>    if {$seanmode} {putidx $idx "!seanmode is currently active."}<br>  } default {putidx $idx "\002Usage:\002 .seanmode &lt;on/off/status&gt;"}}<br>}<br><br>proc dcc_limits {handle idx arg} {<br>  global n eddie_lim chan_limits<br>  set arg [string tolower $arg]<br>  switch $arg {<br>  "on" {<br>    if {$chan_limits == ""} {<br>      putidx $idx "ERROR\: \$chan_limits not set!"<br>    } else {<br>      set eddie_lim 1<br>      putidx $idx "Channel limit is now enabled!"<br>    }<br>  } "off" {<br>    set eddie_lim 0<br>    putidx $idx "Channel limit is now disabled!"<br>  } "check" {<br>    check_limits 1 1 1 1 1<br>    putidx $idx "Channel limits have now been rechecked."<br>  } "status" {<br>    if {$eddie_lim} {putidx $idx "Channel limiting is currently active on $chan_limits. \$n = $n."}<br>    if {!$eddie_lim} {putidx $idx "Channel limiting is currently not active."}<br>  } default {<br>    if {![regexp "\[^0-9\]" $arg] &amp;&amp; $arg &gt; 0} {<br>      set n $arg<br>      putidx $idx "Channel limit is now set to users+$arg"<br>    } else {<br>      putidx $idx "\002Usage:\002 .limit &lt;on/off/status/\$n&gt;"<br>      putidx $idx "NB. channel limit = current number of users on the chan + \$n"<br>    }<br>  }}<br>}<br><br>proc dcc_sms {handle idx arg} {<br>  global sms_user sms_addy<br>  set arg [string tolower $arg]<br>  switch $arg {<br>  "list" {<br>    set i 0<br>    foreach sms_tmp $sms_user {<br>      putidx $idx "$sms_tmp [lindex $sms_addy $i]"<br>      incr i<br>    }<br>  } "reload" {<br>     putidx $idx "Sorry, this command has been disabled."<br>     putidx $idx "see also: restart"<br>  } default {putidx $idx "\002Usage:\002 .sms &lt;list&gt;"}}<br>}<br><br>proc dcc_url {handle idx arg} {<br>  global url_name url_addy<br>  set i 0<br>  foreach url_tmp $url_name {<br>    putidx $idx "$url_tmp [lindex $url_addy $i]"<br>    incr i<br>  }<br>}<br><br>proc dcc_action {handle idx arg} {<br>  set chan [string tolower [lindex $arg 0]]<br>  set tmp [lrange $arg 1 end]<br>  if {[lsearch -exact [string tolower [channels]] $chan] &gt; -1 &amp;&amp; $tmp != ""} {<br>    putserv "PRIVMSG $chan :\001ACTION $tmp\001"<br>  } else {putidx $idx "\002Usage:\002 .action &lt;channel&gt; &lt;message&gt;"}<br>}<br><br>proc dcc_broadcast {handle idx msg} {<br>  if {$msg != ""} {<br>    foreach i [channels] {putserv "PRIVMSG $i :Broadcast from $handle: \002$msg\002"}<br>  } else {putidx $idx "\002Usage:\002 .broadcast &lt;message&gt;"}<br>}<br><br>proc dcc_findnick {handle idx arg} {<br>  set handle [lindex $arg 0]<br>  if {[validuser $handle]} {<br>    set chan [lindex $arg 1]<br>    if {[string range $chan 0 1] != "#"} {set chan #$arg}<br>    set nick [hand2nick $handle]<br>    if {[validchan $chan]} {set nick [hand2nick $handle $chan]}<br>    if {$nick == ""} {<br>      putidx $idx "I don't see $handle online."<br>    } else {putidx $idx "$handle is currently using the nick $nick."}<br>    return 0<br>  } else {putidx $idx "I have no user record for $handle."}<br>  putidx $idx "\002Usage:\002 .hand2nick &lt;handle&gt; \[channel\]"<br>  putidx $idx "If &lt;channel&gt; is not specified, I will check all of my channels"<br>}<br><br>proc dcc_kill {handle idx arg} {<br>  if {$arg != ""} {<br>    set victim [lindex $arg 0]<br>    if {[validuser $victim]} {<br>      set reason [lrange $arg 1 end]<br>      if {$reason == ""} {set reason "Requested"}<br>      putdcc [hand2idx $victim] "Closing connection: Killed ($handle ($reason))"<br>      killdcc [hand2idx $victim]<br>      dccbroadcast "$handle killed ($victim ($reason))"<br>    } else {putidx $idx "I have no user record for $arg."}<br>  } else {putidx $idx "\002Usage:\002 .kill &lt;handle&gt; &lt;reason&gt;"}<br>}<br><br>proc dcc_join {handle idx arg} {<br>  if {$arg == ""} {<br>    putdcc $idx "\002Usage:\002 .join &lt;channel&gt;"<br>    return 0<br>  }<br>  set chan [lindex $arg 0]<br>  if {[validchan $chan]} {<br>    putserv "JOIN $chan"<br>  } else {<br>    channel add $chan<br>    channel set $chan -clearbans -enforcebans -dynamicbans +userbans -autoop -bitch -greet -protectops -statuslog -stopnethack -revenge -autovoice -secret -shared<br>  }<br>  putdcc $idx "Joining channel $chan ..."<br>  putcmdlog "([hand2nick $handle]) !$handle! JOIN $arg"<br>}<br><br>proc dcc_part {handle idx arg} {<br>  if {$arg == ""} {<br>    putdcc $idx "Usage: part &lt;channel&gt;"<br>  } elseif {![validchan [lindex $arg 0]]} {<br>    putdcc $idx "WARNING\: [lindex $arg 0] is an invalid channel."<br>  } else {<br>    channel remove [lindex $arg 0]<br>    putdcc $idx "Leaving channel [lindex $arg 0] ..."<br>  }<br>  putcmdlog "([hand2nick $handle]) !$handle! PART $arg"<br>}<br><br>proc dcc_eddiecheck {handle idx arg} {<br>  global botnick eddie_ver<br>  putdcc $idx "Checking for Eddie's Extensions on botnet..."<br>  putdcc $idx "$botnick is running Eddie's Extensions version $eddie_ver."<br>  putallbots "vBOTNET_CHECK_EDDIE $idx $handle"<br>}<br><br>proc dcc_locktopic {handle idx arg} {<br>  global t_locks<br>  set chan [lindex $arg 0]<br>  if {[validchan $chan]} {<br>    lappend t_locks [string tolower $chan]<br>    putdcc $idx "The topic on $chan is now locked."<br>  } else {<br>    putdcc $idx "\002Usage:\002 .locktopic &lt;channel&gt;"<br>    putdcc $idx "The following channels are locked\: $t_locks"<br>  }<br>}<br><br>proc dcc_unlocktopic {handle idx arg} {<br>  global t_locks<br>  set chan [lindex $arg 0]<br>  if {[validchan $chan]} {<br>    set pos [lsearch -exact $t_locks [string tolower $chan]]<br>    lreplace t_locks $pos $pos ""<br>    putdcc $idx "The topic on $chan is now unlocked."<br>  } else {putdcc $idx "\002Usage:\002 .unlocktopic &lt;channel&gt;"}<br>}<br><br>proc poll {nick host handle channel arg} {<br>  global eddie question yes no<br>  if {[string first $channel $eddie(chans)] &lt; 0} {return 0}<br>  set cmd [lindex [string tolower $arg] 0]<br>  if {$cmd == "results"} {<br>    if {$question == "test" &amp;&amp; !$yes &amp;&amp; !$no} {<br>      putserv "NOTICE $channel :The poll has not been set."<br>      return 0<br>    }<br>    if {!$eddie(poll)} {<br>      putserv "NOTICE $channel :I took a poll on `$question'"<br>    } else {putserv "NOTICE $channel :I'm taking a poll on `$question'"}<br>    set total [expr $yes+$no]<br>    set tmp1 0<br>    set tmp2 0<br>    if {$yes != 0} {set tmp1 [expr ($yes*100)/$total]}<br>    if {$no != 0} {set tmp2 [expr ($no*100)/$total]}<br>    putserv "NOTICE $channel :YES - $tmp1 %       NO - $tmp2 %"<br>    putserv "NOTICE $channel :TOTAL NUMBER OF VOTES - $total"<br>    if {!$eddie(poll)} {<br>      if {$yes &gt; $no} {putserv "NOTICE $channel :Final result \: YES"}<br>      if {$yes &lt; $no} {putserv "NOTICE $channel :Final result \: NO"}<br>      if {$yes == $no} {putserv "NOTICE $channel :Final result \: It was a tie!"}<br>    }<br>    return 0<br>  } <br>  if {!$eddie(poll)} {return 0}<br>  if {[string first $host $eddie(v_host)] &gt;= 0 &amp;&amp; $cmd != ""} {<br>    putserv "NOTICE $nick :Sorry $nick, you appear to have already voted on my poll..."<br>    return 0<br>  }<br>  if {$cmd == "yes"} {<br>    putserv "NOTICE $nick :$nick\: Thank you for voting!"<br>    incr yes<br>    set eddie(v_nick) [lappend eddie(v_nick) $nick]<br>    set eddie(v_host) [lappend eddie(v_host) [getchanhost $nick]]<br>  } elseif {$cmd == "no"} {<br>    putserv "NOTICE $nick :$nick\: Thank you for voting!"<br>    incr no<br>    set eddie(v_nick) [lappend eddie(v_nick) $nick]<br>    set eddie(v_host) [lappend eddie(v_host) [getchanhost $nick]]<br>  } else {<br>    putserv "NOTICE $channel :I'm taking a poll on '$question'"<br>    putserv "NOTICE $channel :Type \002!poll yes\002 to vote yes and \002!poll no\002 to vote no."<br>  }<br>}<br><br>proc msg_vote {nick host handle arg} {<br>  global eddie yes no question<br>  set cmd [lindex [string tolower $arg] 0]<br>  if {!$eddie(poll)} {<br>    putserv "PRIVMSG $nick :Sorry, my poll is currently closed."<br>    return 0<br>  }<br>  if {[string first $host $eddie(v_host)] &gt;= 0} {<br>    putserv "NOTICE $nick :Sorry $nick, you appear to have already voted on my poll..."<br>  } elseif {$cmd == "yes"} {<br>    putserv "PRIVMSG $nick :Thank you for voting!"<br>    incr yes<br>    set eddie(v_nick) [lappend eddie(v_nick) $nick]<br>    set eddie(v_host) [lappend eddie(v_host) [getchanhost $nick]]<br>  } elseif {$cmd == "no"} {<br>    putserv "PRIVMSG $nick :Thank you for voting!"<br>    incr no<br>    set eddie(v_nick) [lappend eddie(v_nick) $nick]<br>    set eddie(v_host) [lappend eddie(v_host) [getchanhost $nick]]<br>  } else {<br>    putserv "PRIVMSG $nick :I'm taking a poll on '$question'"<br>    putserv "PRIVMSG $nick :Type \002!poll yes\002 to vote yes and \002!poll no\002 to vote no."<br>  }<br>}<br><br>proc op {nick host handle channel arg} {<br>#  What about if the user only has a channel +o on the bot?<br>  global service botnick<br>  if {[botisop $channel]} {<br>    if {[matchattr $handle o] || [matchchanattr $handle o $channel]} {<br>      pushmode $channel +o $nick<br>    } else {<br>      putserv "PRIVMSG $channel :$nick\: I'm already an op though. Did you think I was going to op you? haha! \:)"<br>    }<br>  } else {putserv "PRIVMSG $service :op $channel $botnick"}<br>}<br><br>proc voice {nick host handle channel target} {<br>  if {[botisop $channel]} {<br>    if {[matchattr $handle v] || [matchchanattr $handle v $channel]} {<br>      if {$target == "" || [string tolower $target] == "me"} {<br>        pushmode $channel +v $nick<br>        return 0<br>      }<br>    }<br>    if {[isop $nick $channel] || [matchattr $handle o] || [matchchanattr $handle o $channel]} {<br>       if {[onchan $target $channel]} {<br>         pushmode $channel +v $target<br>       } else {putserv "PRIVMSG $channel :$nick\: Sorry, I can't voice $target."}<br>    } else {putserv "PRIVMSG $channel :$nick\: Sorry, you don't have permission to do that."}<br>  }<br>}<br><br>proc devoice {nick host handle channel target} {<br>  if {[botisop $channel]} {<br>    if {$target == "" || [string tolower $target] == "me"} {<br>      pushmode $channel -v $nick<br>      return 0<br>    }<br>    if {[isop $nick $channel] || [matchattr $handle o] || [matchchanattr $handle o $channel]} {<br>       if {[onchan $target $channel]} {<br>         pushmode $channel -v $target<br>       } else {putserv "PRIVMSG $channel :$nick\: Sorry, I can't devoice $target."}<br>    } else {putserv "PRIVMSG $channel :$nick\: Sorry, you don't have permission to do that."}<br>  }<br>}<br><br>proc version {nick host handle channel arg} {<br>  global eddie_ver botnick bseen version<br>  set eggdrop [string range $version 0 4]<br>  if {$bseen} {<br>    set bseen_ver " bseen 1.4.2c,"<br>  } else {set bseen_ver ""}<br>  putserv "NOTICE $channel :My name is $botnick and I am running Eggdrop v$eggdrop with$bseen_ver and Eddie Extensions $eddie_ver. I am using [eval unames]."<br>}<br><br>proc time {nick host handle channel arg} {<br>  global eddie<br>  if {[string first $channel $eddie(chans)] &lt; 0} {return 0}<br>  set zone [lindex $arg 0]<br>  set current [strftime %H:%M]<br>  if {$zone != ""} {<br>    if {[string toupper $zone] == "GMT"} {<br>      puthelp "PRIVMSG $channel :$nick\: GMT is [ctime [expr [unixtime]-3600]]."<br>    } elseif {[string toupper $zone] == "EST"} {<br>      puthelp "PRIVMSG $channel :$nick\: EST is [ctime [expr [unixtime]-18000]]."<br>    } elseif {[string toupper $zone] == "CET" || [string toupper $zone] == "CEST"} {<br>      puthelp "PRIVMSG $channel :$nick\: CET is [ctime [expr [unixtime]+3600]]."<br>    } else {putserv "NOTICE $channel :$nick\: Sorry, I don't know about the time in '$zone'."}<br>  } else {<br>    puthelp "PRIVMSG $channel :$nick\: It's $current in the United Kingdom. Don't you have a clock on your computer??"<br>  }<br>}<br><br>proc uptime {nick host handle channel arg} {<br>  global eddie uptime botnick<br>  if {[string first $channel $eddie(chans)] &lt; 0} {return 0}<br>  putserv "PRIVMSG $channel :Uptime for $botnick: [duration [expr [unixtime]-$uptime]]"<br>}<br><br>proc 8ball {nick host handle channel arg} {<br>  global magic<br>  set cmd [string tolower [lindex $arg 0]]<br>  if {![isop $nick $channel] &amp;&amp; ![matchattr $handle o]} {<br>    if {$cmd == "on" || $cmd == "off"} {<br>      putserv "NOTICE $channel :$nick\: Sorry, you don't have permission to do that." <br>      return 0<br>    }<br>  }<br>  if {$cmd == "on"} {<br>    putserv "NOTICE $channel :My magic 8-ball is now online.   \:-)"<br>    set magic 1<br>    return 0<br>  }<br>  if {$cmd == "off"} {<br>    putserv "NOTICE $channel :My magic 8-ball is now offline."<br>    set magic 0<br>  }<br>  if {!$magic} {return 0}<br>  if {$cmd == ""} {<br>    putserv "NOTICE $channel :ERROR\: No question specified."<br>    return 0<br>  }<br>  if {[file exists 8ball.txt]} {<br>    set list [open 8ball.txt r]<br>    set test ""<br>    while {![eof $list]} {<br>      set tmp [gets $list]<br>      set test [lappend test [string trim $tmp]]<br>    }<br>    close $list<br>  } else {putserv "NOTICE $channel :WARNING\: 8ball.txt not found!"}<br>  set number [rand [expr [llength $test] + 1]]<br>  putserv "PRIVMSG $channel :$nick, my 8-ball says [lindex $test $number]"<br>} <br><br>proc whack {nick host handle channel arg} {<br>  global eddie botnick<br>  if {[string first $channel $eddie(chans)] &lt; 0} {return 0}<br>  if {![botisop $channel]} {<br>    putserv "NOTICE $channel :I need ops on $channel to whack people!"<br>    return 0<br>  }<br>  set victim [lindex $arg 0]<br>  if {$victim == $botnick} {<br>    putserv "PRIVMSG $channel :$nick:\ You can't do that to me... hehe"<br>    putserv "PRIVMSG $channel :\001ACTION whacks $nick with a lead pipe\001"<br>    putkick $channel $nick "Respect me!"<br>    putserv "PRIVMSG $channel :oops, hit him too hard..."<br>    return 0<br>  }<br>  if {![isop $nick $channel] &amp;&amp; $victim != "me"} {return 0}<br>  if {[string tolower $victim] == "me" &amp;&amp; ![onchan "me" $channel]} {set victim $nick}<br>  if {![onchan $victim $channel]} {<br>    putserv "NOTICE $channel :$victim is not on $channel"<br>  } else {<br>    putserv "PRIVMSG $channel :\001ACTION whacks $victim with a lead pipe\001"<br>    putkick $channel $victim "ouch"<br>    putserv "PRIVMSG $channel :oops, hit him too hard..."<br>    putcmdlog "($nick) !$handle! whacked $victim on $channel"<br>  }<br>}<br><br>proc seanmode {nick host handle channel arg} {<br>  global seanmode<br>  if {!$seanmode || ![botisop $channel]} {return 0}<br>  putserv "PRIVMSG $channel :$nick:\ Fool! \:-)"<br>  putserv "PRIVMSG $channel :\001ACTION spanks $nick\001"<br>  putkick $channel $nick "Don't beg for ops!"<br>}<br><br>proc showlist {nick host handle channel arg} {<br>  if {[botisop $channel]} {putkick $channel $nick "No cake for you!"}<br>  putcmdlog "($nick) !$handle! was tricked by !list"<br>}<br><br>proc giveme {nick host handle channel arg} {<br>  global eddie<br>  if {[string first $channel $eddie(chans)] &lt; 0} {return 0}<br>  if {$arg == ""} {set arg "nothing"}<br>  putserv "PRIVMSG $channel :\001ACTION gives $arg to $nick\001"<br>}<br><br>proc giveto {nick host handle channel arg} {<br>  global eddie<br>  if {[string first $channel $eddie(chans)] &lt; 0} {return 0}<br>  if {$arg == ""} {<br>    help $nick $host $handle $channel giveto<br>    return 0<br>  }<br>  set person [lindex $arg 0]<br>  set item [lrange $arg 1 end]<br>  if {$item == ""} {set item "nothing"}<br>  if {[string tolower $person] == "me"} {set person $nick}<br>  putserv "PRIVMSG $channel :\001ACTION gives $item to $person\001"<br>}<br><br>proc pi {nick host handle channel arg} {<br>  global eddie<br>  if {[string first $channel $eddie(chans)] &lt; 0} {return 0}<br>  set places [lindex $arg 0]<br>  set pie 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679<br>  if {$places &gt; 100 || $places &lt; 1} {set places 100}<br>  putserv "PRIVMSG $channel :Pi = [string range $pie 0 [expr $places+2]]"<br>}<br><br>proc calc {nick host handle channel arg} {<br>  global eddie pi e g<br>  if {[string first $channel $eddie(chans)] &lt; 0} {return 0}<br>  if {$arg != "" &amp;&amp; ![string match "\[" $arg] &amp;&amp; ![string match "\]" $arg]} { <br>    putserv "PRIVMSG $channel :[expr $arg]"<br>  } else {help $nick $host $handle $channel calc}<br>}<br><br>proc status {nick host handle channel arg} {<br>  global eddie botnick<br>  if {[string first $channel $eddie(chans)] &lt; 0} {return 0}<br>  putserv "NOTICE $channel :\002Channel status on $channel :\002"<br>  putserv "NOTICE $channel :Topic\: [topic $channel]"<br>  putserv "NOTICE $channel :Modes\: [getchanmode $channel]"<br>  putserv "NOTICE $channel :\002My status :\002"<br>  putserv "NOTICE $channel :Linked bots\:  [bots]"<br>  putserv "NOTICE $channel :User records\: [countusers]"<br>  putserv "NOTICE $channel :My time:     [realtime date], [realtime]"<br>  putserv "NOTICE $channel :Bot owners:  [userlist n]"<br>  putcmdlog "($nick) !$handle! !status"<br>}<br><br>proc lock {nick host handle chan arg} {<br>  global eddie<br>  if {[string first $chan $eddie(chans)] &lt; 0} {return 0}<br>  if {![isop $nick $chan] &amp;&amp; ![matchattr $handle o]} {<br>    putserv "NOTICE $nick :$nick\: Sorry, you don't have permission to do that." <br>    return 0<br>  }<br>  if {![botisop $chan]} {<br>    putserv "NOTICE $nick :I need ops on $chan to adjust the lock on the channel!"<br>    return 0<br>  }<br>  set cmd [lindex $arg 0]<br>  if {$cmd == "off"} {<br>#    pushmode $chan -i<br>    pushmode $chan -k $eddie(code)<br>    flushmode $chan<br>    putserv "NOTICE $chan :$chan should now be unlocked."<br>    putcmdlog "($nick) !$handle! unlocked $chan"<br>    return 0<br>  }    <br>  set chmode [getchanmode $chan]<br>  if {[string first "k" $chmode] &gt; 0} {<br>    putserv "NOTICE $chan :$chan is already locked."<br>    return 0<br>  }<br>  set chars abcdefghijklmnopqrstuvwxyz0123456789<br>  set count [string length $chars]<br>  set eddie(code) ""<br>  for {set i 0} {$i &lt; 8} {incr i} {append eddie(code) [string index $chars [rand $count]]}<br>#  pushmode $chan +i<br>  pushmode $chan +s<br>  pushmode $chan +t<br>  pushmode $chan +k $eddie(code)<br>  flushmode $chan<br>  putserv "NOTICE $chan :$chan should now be locked."<br>  putcmdlog "($nick) !$handle! locked $chan"<br>} <br><br>proc unlock {nick host handle channel arg} {<br>  lock $nick $host $handle $channel "off"<br>}<br><br>proc quote {nick host handle channel arg} {<br>  global eddie quotedir<br>  if {[string first $channel $eddie(chans)] &lt; 0} {return 0}<br>  set filename "Techies.sg"<br>  if {$arg != ""} {set filename $arg}<br>  set filename $quotedir$filename<br>  if {[file exists $filename]} {<br>    set list [open $filename r]<br>    while {![eof $list]} {<br>      set quotes [lappend quotes [string trim [gets $list]]]<br>    }<br>    close $list<br>    set number [rand [llength $quotes]]<br>    puthelp "PRIVMSG $channel :[lindex $quotes $number]"<br>  } else {putserv "NOTICE $channel :WARNING\: $filename not found!"}<br>}<br><br>proc addquote {nick host handle channel arg} {<br>  global eddie quotedir<br>  if {[matchattr $handle n] || [matchattr $handle m]} {<br>    if {$arg == ""} {<br>      putserv "PRIVMSG $channel :ERROR\: You must specify a quote!"<br>    } else {<br>      putserv "PRIVMSG $channel :Not implemented yet."<br>    }<br>  } else {putserv "NOTICE $nick :Sorry, you don't have permission to do that."}<br>}<br><br>proc random {nick host handle channel arg} {<br>  global eddie<br>  if {[string first $channel $eddie(chans)] &lt; 0} {return 0}<br>  if {$arg &lt; -1 || [regexp {^[0-9].[0-9].[0-9]+$}$arg]} {set arg 10}<br>  putserv "PRIVMSG $channel :The random number I have selected is [eval rand $arg]. The maximum was $arg."<br>}<br><br>proc sms {nick host handle channel arg} {<br>  # Only people with +o or +f flags on the bot or operator status on the channel can use this<br>  global eddie sms_user sms_addy<br>  if {[string first $channel $eddie(chans)] &lt; 0} {return 0}<br>  if {[lindex $arg 1] == ""} {<br>    help $nick $host $handle $channel sms<br>  } elseif {$sms_user == "" || $sms_addy == ""} {<br>    putserv "NOTICE $nick :ERROR\: SMS data not loaded. Please inform a bot owner or master."<br>  } elseif {[matchattr $handle o] || [matchattr $handle f] || [isop $nick $channel]} {<br>    set sms_alias [string tolower [lindex $arg 0]]<br>    set tmp [lsearch -exact $sms_user $sms_alias]<br>    if {$tmp &lt; 0} {<br>      putserv "NOTICE $nick :ERROR\: Alias $sms_alias was not found!"<br>      return 0<br>    } else {<br>      exec mail -s "[lrange $arg 1 end]" [lindex $sms_addy $tmp]<br>      putserv "NOTICE $nick :Your message is on it's way!"<br>      putcmdlog "($nick) !$handle! just sent an SMS message to $sms_alias."<br>    }<br>  } else {putserv "NOTICE $nick :Sorry, you don't have permission to do that."}<br>}<br><br>proc url {nick host handle channel arg} {<br>  global eddie url_name url_addy<br>  if {[string first $channel $eddie(chans)] &lt; 0} {return 0}<br>  if {[lindex $arg 0] == ""} {<br>    help $nick $host $handle $channel url<br>  } elseif {$url_name == "" || $url_addy == ""} {<br>    putserv "NOTICE $nick :ERROR\: URL data not loaded. Please inform a bot owner or master."<br>  } else {<br>    set url_alias [string tolower [lindex $arg 0]]<br>    set tmp [lsearch -exact [string tolower $url_name] $url_alias]<br>    if {$tmp &lt; 0} {<br>      putserv "NOTICE $nick :ERROR\: Alias $url_alias was not found!"<br>    } else {putserv "PRIVMSG $channel :$url_alias may be found at [lindex $url_addy $tmp]"}<br>  }<br>}<br><br>proc ping_me {nick host handle channel arg} {<br>  global eddie pingchan pingwho<br>  if {[string first $channel $eddie(chans)] &lt; 0 || $handle == "*"} {return 0}<br>  if {![isop $nick $channel] &amp;&amp; ![matchattr $handle o]} {return 0}<br>  set arg [string tolower $arg]<br>  if {$arg == "" || [string match "#*" $arg]} {<br>    help $nick $host $handle $channel ping<br>  } elseif {$arg == "me"} {<br>    putserv "PRIVMSG $nick :\001PING [unixtime]\001"<br>    set pingwho 0<br>  } else {<br>    putserv "PRIVMSG $arg :\001PING [unixtime]\001"<br>    set pingwho 1<br>  }  <br>  set pingchan $channel<br>}<br><br>proc ping_me_reply {nick host handle dest key arg} {<br>  global pingchan pingwho<br>  if {![regexp "\[^0-9\]" $arg]} {<br>    if {!$pingwho} {<br>      puthelp "PRIVMSG $pingchan :$nick\: You're [expr [unixtime] - $arg] seconds lagged."<br>    } else {puthelp "PRIVMSG $pingchan :$nick is [expr [unixtime] - $arg] seconds lagged."}<br>  }<br>  return 1<br>}<br><br>proc cleanusers {nick host handle channel arg} {<br>  # Only the bot's owners can use this command<br>  global eddie Expired_after<br>  if {[string first $channel $eddie(chans)] &lt; 0 || ![matchattr $handle n] || $Expired_after &lt;= 0} {return 0}<br>  set expire [expr $Expired_after * 86400]<br>  set current [unixtime]<br>  foreach i [userlist] {<br>    set last [lindex [getuser $i LASTON] 0]<br>    if {$last == ""} {set last 0}<br>    set difference [expr ($current - $last)]<br>    if {$difference &gt; $expire} {<br>      set check 0<br>      foreach j [channels] {<br>        set tmp [chattr $i $j]<br>        if {[regexp "o" $tmp] || [regexp "b" $tmp] || [regexp "v" $tmp] || [regexp "k" $tmp]} {set check 1}<br>      }<br>      if {!$check} {<br>        putlog "\002$i\002 has not been seen for [duration $difference] - DELETING..."<br>        deluser $i<br>      }<br>    }<br>  }<br>  putcmdlog "($nick) !$handle! cleaned up the userlist"<br>  putserv "NOTICE $nick :Done."<br>}<br><br>proc pub_resetbans {nick host handle channel arg} {<br>  global eddie<br>  if {[string first $channel $eddie(chans)] &lt; 0} {return 0}<br>  if {![isop $nick $channel] &amp;&amp; ![matchattr $handle o]} {return 0}<br>  putserv "NOTICE $channel :Now resetting all bans on $channel to match my banlist..."<br>  resetbans $channel<br>  putcmdlog "($nick) !$handle! !resetbans"<br>}<br><br>proc whoami {nick host handle channel arg} {<br>  global eddie botnick<br>  if {[string first $channel $eddie(chans)] &lt; 0} {return 0}<br>  putserv "PRIVMSG $nick :You are $nick !$host"<br>  if {[validuser $handle]} {<br>    putserv "NOTICE $nick :Your handle on $botnick is $handle with [chattr $handle $channel] flags."<br>    putserv "NOTICE $nick :Your hosts are [getuser $handle HOSTS]"<br>    if {[matchattr $handle n] || [matchattr $handle m]} {putserv "NOTICE $nick :You are my owner or a master"}<br>    set info [getuser $handle INFO]<br>    if {$info == ""} {return 0}<br>    putserv "NOTICE $nick :Your global INFO line is $info"<br>  }<br>}<br><br>proc xmas {nick host handle channel arg} {<br>  global eddie<br>  if {[string first $channel $eddie(chans)] &lt; 0} {return 0}<br>  set curr_year [lindex [ctime [unixtime]] 4]<br>  set xmas_day [expr 883008000 + (($curr_year - 1998) * 31536000)]<br>  putserv "PRIVMSG $channel :It is [time_diff [unixtime] $xmas_day] since last Christmas."<br>  set days [time_diff [unixtime] [expr $xmas_day + 604800]]<br>  putserv "PRIVMSG $channel :We are $days into $curr_year."<br>  set days [time_diff [expr $xmas_day + 31536000] [unixtime]]<br>  set tmp [time_diff [expr $xmas_day + 31536000 + 604800] [unixtime]]<br>  putserv "PRIVMSG $channel :You have $days left to shop before Christmas and $tmp left before [expr $curr_year + 1]!  \:)"<br>}<br><br>proc invite {nick host handle channel arg} {<br>  global invite<br>  if {[string first $chan $invite(from)] &lt; 0 || $invite(from) == ""} {return 0}<br>  if {$invite(from) == "*"} {set $invite(from) [channels]}<br>  foreach chan $invite(to) {<br>    if {[matchattr $handle $invite(flag)] &amp;&amp; ![onchan $nick $chan]} {putserv "INVITE $nick $chan"}<br>  }<br>}<br><br>proc flags {nick host handle channel arg} {<br>  global eddie<br>  if {[string first $channel $eddie(chans)] &lt; 0} {return 0}<br>  if {[isop $nick $channel] || [matchattr $handle o] || [matchchanattr $handle o $channel]} {<br>    set hand [lindex $arg 0]<br>    if {[string tolower $hand] == "me" || $hand == ""} {set hand $handle}<br>    if {[validuser $hand]} {<br>      putserv "PRIVMSG $channel :$hand has \002[chattr $hand $channel]\002 flags on $channel."<br>    } else {putserv "PRIVMSG $channel :No such handle\: $hand"}<br>  }<br>}<br><br>proc help {nick host handle chan arg} {<br>  global eddie bseen help_notice url_name<br>  if {[string first $chan $eddie(chans)] &lt; 0} {return 0}<br>  set cmd [lindex [string tolower $arg] 0]<br>  if {$cmd == "me"} {<br>    set tmp $nick<br>  } else {set tmp $chan}   <br>  if {!$help_notice} {set chan $nick}<br>  switch $cmd {<br>  "calc" {<br>    putserv "NOTICE $chan :Usage\: \002!calc\002 &lt;expression, eg. 4+2&gt;"<br>    putserv "NOTICE $chan :Available constants:  \$pi \$e \$g"<br>    putserv "NOTICE $chan :Available maths functions:  abs(), acos(), asin(), atan(), atan2(), ceil(), cos(), cosh(), exp(), floor(), fmod(), hypot(), log(), log10(), pow(), round(), sin(), sinh(), sqrt(), tan(), tanh()"<br>    putserv "NOTICE $chan :\[ and \] are forbidden characters in the expression."<br>  } "giveto" {<br>    putserv "NOTICE $chan :Usage\: \002!giveto\002 &lt;person&gt; &lt;item&gt;"<br>  } "sms" {<br>    putserv "NOTICE $chan :Usage\: \002!sms\002 &lt;alias&gt; &lt;short text message&gt;"<br>    putserv "NOTICE $chan :Only ops and friends (+f) the bot recognises may use this command."<br>    putserv "NOTICE $chan :Aliases and email addresses should be set in scripts/sms.dat"<br>  } "ping" {<br>    putserv "NOTICE $chan :Usage\: \002!ping\002 &lt;nick&gt;"<br>    putserv "NOTICE $chan :Use 'me' for self pinging."<br>  } "url" {<br>    putserv "NOTICE $chan :Usage\: \002!url\002 &lt;name&gt;"<br>    putserv "NOTICE $chan :Possible names\: $url_name"<br>  } default {<br>    puthelp "NOTICE $tmp :!version  !giveme &lt;item&gt;  !giveto &lt;nickname&gt; &lt;item&gt;  !time &lt;zone&gt;  !list  !op"<br>    puthelp "NOTICE $tmp :!uptime  !8ball &lt;question&gt;  !calc &lt;expression&gt;  !insult &lt;nick&gt;  !seanmode  !bar"<br>    puthelp "NOTICE $tmp :!status  !pi &lt;d.p.&gt;  !quote  !poll  !random &lt;max&gt;  !whoami  !xmas  !voice  !eddie"<br>    puthelp "NOTICE $tmp :!sms &lt;alias&gt; &lt;message&gt;  !url &lt;name&gt;"<br>    if {$bseen} {puthelp "NOTICE $tmp :!seen &lt;nickname&gt;  !seenstats  !chanstats &lt;channel&gt;  !lastspoke &lt;nickname&gt;"}<br>    puthelp "NOTICE $tmp : = "<br>    puthelp "NOTICE $tmp :!encrypt &lt;text&gt;  and  !decrypt &lt;text&gt;  are also available in a query to me."<br>    puthelp "NOTICE $tmp : ="<br>    puthelp "NOTICE $tmp :The following commands are for ops only:"<br>    puthelp "NOTICE $tmp :  !whack &lt;nickname&gt;  !8ball &lt;on/off&gt;  !lock &lt;on/off&gt;  !ping &lt;nick&gt;  !resetbans"<br>    puthelp "NOTICE $tmp :  !voice &lt;nickname&gt;  !devoice &lt;nickname&gt;  !flag &lt;handle&gt;"<br>    puthelp "NOTICE $tmp :Owners can also use:  !cleanusers"<br>#    puthelp "NOTICE $tmp :Owners can also use:  !cleanusers  !addquote &lt;newquote&gt;"<br>  }}<br>}<br><br>proc pub_nocomic {nick host handle chan arg} {<br>  global eddie botnick nocomic<br>  if {[string first $chan $eddie(chans)] &lt; 0 || !$nocomic || [matchattr $handle b]} {return 0}<br>  if {![botisop $chan]} {<br>    putserv "PRIVMSG $chan :\001ACTION yells 'MS Comic Chat sucks!'\001"<br>  } elseif {![matchattr $handle n]} {<br>    putserv "PRIVMSG $nick :\002Microsoft Comic Chat is a forbidden client on $chan, so please go and get a decent IRC client.\002"<br>    putserv "PRIVMSG $chan :\002$nick : We don't allow MS Comic Chat clients in \"comic\" mode to be used.\002"<br>    newchanban $chan [maskhost $nick!$host] $botnick "MS Comic Chat auto-removal" 1<br>    putserv "KICK $chan $nick :\002MS Comic Chat auto-removal\002"<br>  }<br>}<br><br>proc checkbase {nick host handle chan arg} {putlog "All your base are belong to $nick"}<br><br>proc encrypt1 {nick host handle arg} {<br>  global eddie_key<br>  if {$arg == ""} {putserv "PRIVMSG $nick :You must give me something to encrypt... \;)"}<br>  putserv "PRIVMSG $nick :[encrypt $eddie_key $arg]"<br>}<br><br>proc decrypt1 {nick host handle arg} {<br>  global eddie_key<br>  if {$arg == ""} {putserv "PRIVMSG $nick :You must give me something to decrypt... \;)"}<br>  putserv "PRIVMSG $nick :[decrypt $eddie_key $arg]"<br>}<br><br>proc got_dcc {nick host handle dest key arg} {<br>  global botnick<br>  set filename [string tolower [lindex $arg 1]]<br>  if {[string match "*.exe" $filename] || [string match "*.bat" $filename] || [string match "*.vbs" $filename] || [string match "*.ini" $filename]} {<br>    newban "*!*$host" $botnick "Infected with a virus ($filename)" 20 sticky<br>    foreach i [channels] {putkick $i $nick "You're infected with $filename virus"}<br>    putserv "PRIVMSG $nick :You're infected with a virus ($filename). For more information please visit <a href="http://www.nohack.net" class="postlink">http://www.nohack.net</a>"<br>#    foreach i [channels] {if {[onchan $nick $i]} {putkick $i $nick "You're infected with $filename virus - GET OUT!"}}<br>  }<br>}<br><br>proc ctopic {nick host handle channel topic} {<br>  global eddie botnick t_locks<br>  set chan [string tolower $channel]<br>  if {[string first $chan $eddie(chans)] &lt; 0 || $nick == "*"} {return 0}<br>  set old_topic $topic<br>  if {[string first $chan $t_locks] &gt; -1} {<br>    if {$nick == $botnick} {return 0}<br>    putserv "TOPIC $chan :$old_topic"<br>    putserv "NOTICE $nick :Sorry, the topic for $chan is locked."<br>  } else {<br>    if {$nick == $botnick} {set nick "I"}<br>    putserv "PRIVMSG $chan :$nick just changed the topic of $chan.... that's.... interesting \:-)"<br>  }<br>}<br><br>proc enter {nick host handle channel} {<br>  global chan_limits botnick eddie greeting greeter<br>  set chan [string tolower $channel]<br>  if {[lsearch -exact [string tolower [channels]] $chan] == -1} {return 0}<br>  if {[validuser $handle] &amp;&amp; [string first $chan $chan_limits] &gt; -1} {pushlimit $chan}<br>  if {$nick == $botnick || [matchattr $handle b] || $greeting != 1} {return 0}<br>  if {[string first $chan $eddie(chans)] &lt; 0 &amp;&amp; $greeting &lt; 2} {return 0}<br>  if {![file exists $greeter] || $greeter == 1} {putserv "NOTICE $nick :Greetings $nick, welcome to $chan!!"}<br>}<br><br>proc kicked {nick host handle chan target reason} {<br>  global botnick eddie<br>  if {[string first $chan $eddie(chans)] &lt; 0} {return 0}<br>  if {$target == $botnick} {<br>    putserv "PRIVMSG $nick :Please don't kick me again!"<br>    return 0<br>  }<br>  set sayings {"hehe, $nick kicked you from $chan :-)" "$target, you deserved that kick."<br>    "Hahahahaha bye bye $target!" "You won't be missed at $chan! :)" "You are off the xmas card list!"<br>    "$chan air sure smells cleaner now! ;-)" "$nick doesn't like you. ;)"}<br>  if {[string tolower $nick] == [string tolower $botnick]} {set nick "I"}<br>  set msg [parse_msg [lindex $sayings [rand [llength $sayings]]] $nick $chan $target]<br>  puthelp "PRIVMSG $target :$msg"<br>}<br><br>proc sign {nick host handle channel reason} {<br>  global eddie sign_msg<br>  if {[string first $channel $eddie(chans)] &lt; 0 || !$sign_msg} {return 0}<br>  set sayings {"\:-(  $nick left us for some strange reason..." "I'll miss $nick... \:-p"<br>    "I wonder where $nick has gone..." "I hope $nick comes back a nicer person! \;-)"}<br>  set msg [parse_msg [lindex $sayings [rand [llength $sayings]]] $nick $channel ""]<br>  putserv "PRIVMSG $channel :$msg"<br>}<br><br>proc opped {nick host handle channel modechange victim} {<br>  global botnick<br>  if {$victim == $botnick} {putserv "PRIVMSG $channel :$nick\: thanks ;-)"}<br>}<br><br>proc asl {nick host handle text} {<br>  global last_asked botnick<br>  set sayings {"I'm female, I'm over a year old and I was born in England." "why should I tell you my asl?"}<br>  if {[string tolower $nick] == [string tolower $botnick]} {set nick "I"}<br>  set msg [parse_msg [lindex $sayings [rand [llength $sayings]]] $nick "" ""]<br>  if {$last_asked == $nick} {puthelp "PRIVMSG $nick :Haven't I already told you my details? Anyway..."}<br>  puthelp "PRIVMSG $nick :$msg"<br>  set last_asked $nick<br>}<br><br>proc check_limits {min hour day month year} {<br>  global chan_limits<br>  foreach i $chan_limits {if {[validchan $i]} {pushlimit $i}}<br>}<br><br>proc pushlimit {channel} {<br>  global n eddie_lim<br>  if {![botisop $channel] || !$eddie_lim} {return 0}<br>  set wanted [expr [llength [chanlist $channel]] + $n]<br>  set limit [lindex [getchanmode $channel] end]<br>  if {$limit != $wanted} {pushmode $channel +l $wanted}<br>}<br><br>proc bot_check {bot cmd arg} {<br>  global eddie_ver botnick<br>  putlog "\#[lindex $arg 1]@$bot\# EDDIE_CHECK"<br>  putbot $bot "vBOTNET_EDDIE_CHECK_ACK [lindex $arg 0] $botnick running Eddie's Extensions version $eddie_ver"<br>}<br><br>proc bot_check_ack {bot cmd arg} {putdcc [lindex $arg 0] "$bot acknowledged: [lreplace $arg 0 0]"}<br><br>proc say_stuff {} {<br>  global maxtime<br>  set number [rand [llength [channels]]]<br>  set clist [chanlist [lindex [channels] $number]]<br>  set nick [lindex $clist [rand [llength $clist]]]<br>  set chan [lindex [channels] $number]<br>  set sayings {"is anyone out there?" "anyone awake?" "aarrgghh" "baaaaah" "hehe" "damn!"<br>    "anyway..." "hehe" "mwhahaha" "ha ha" "hello" "hiya" "hi everyone" "howdy" "lo" "lol"<br>    "\001ACTION yawns...\001" "\001ACTION looks around the room\001"<br>    "\001ACTION slaps $nick about a bit with a large trout\001"}<br>  set msg [parse_msg [lindex $sayings [rand [llength $sayings]]] $nick $chan ""]<br>  puthelp "PRIVMSG $chan :$msg"<br>  timer [expr [rand $maxtime] + 1] say_stuff<br>}<br><br>proc parse_msg {msg nick chan target} {<br>  if {($msg != "")} {<br>    regsub {\$nick} $msg $nick msg<br>    regsub {\$target} $msg $target msg<br>    regsub {\$chan} $msg $chan msg<br>    regsub {\\001} $msg \001 msg<br>    regsub {\\001} $msg \001 msg<br>    regsub {\\002} $msg \002 msg<br>    regsub {\\002} $msg \002 msg<br>  }<br>  return $msg<br>}<br><br>proc time_diff {time2 time1} {<br>  set tmp [expr $time2 - $time1]<br>  set secs [expr $tmp % 60]<br>  set tmp [expr ($tmp - $secs) / 60]<br>  set mins [expr $tmp % 60]<br>  set tmp [expr ($tmp - $mins) / 60]<br>  set hrs [expr $tmp % 24]<br>  set days [expr ($tmp - $hrs) / 24]<br>  if {$days} {<br>    lappend result $days day<br>    if {$days &gt; 1} {append result s}<br>  }<br>  if {$hrs} {<br>    lappend result $hrs hour<br>    if {$hrs &gt; 1} {append result s}<br>  }<br>  if {$mins} {<br>    lappend result $mins minute<br>    if {$mins &gt; 1} {append result s}<br>  }<br>  if {$secs} {<br>    lappend result $secs second<br>    if {$secs &gt; 1} {append result s}<br>  }<br>  return $result<br>}<br><br>foreach tmp $sms_data {<br>  if {[lindex $tmp 0] != "" &amp;&amp; [lindex $tmp 1] != "" &amp;&amp; [string first "@" [lindex $tmp 1]] &gt; 0} {<br>    lappend sms_user [lindex $tmp 0]<br>    lappend sms_addy [lindex $tmp 1]<br>  }<br>}<br>foreach tmp $url_data {<br>  regsub {\$host} $tmp [string range $botname [expr [string first "@" $botname] + 1] end] tmp<br>  if {[lindex $tmp 0] != "" &amp;&amp; [lindex $tmp 1] != "" &amp;&amp; [string length [lindex $tmp 1]] &gt; 5} {<br>    lappend url_name [lindex $tmp 0]<br>    lappend url_addy [lindex $tmp 1]<br>  }<br>}<br>if {[info vars ctcp-version] == "ctcp-version"} {set ctcp-version "${ctcp-version} + eddies extensions $eddie_ver"}<br>putlog "\002Eddie's Extensions\002 $eddie_ver by Jamie Cheetham  -- loaded! --"<br>if {$maxtime &gt;= 1} {timer [expr [rand $maxtime] + 1] say_stuff}</div></blockquote>any help??? if not u can dl the entire script form the achives<br>here's the link <a href="http://www.egghelp.org/cgi-bin/tcl_archive.tcl?mode=download&amp;id=535" class="postlink">http://www.egghelp.org/cgi-bin/tcl_arch ... oad&amp;id=535</a><p>Statistics: Posted by Guest — Mon Jul 28, 2003 7:39 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[Sir_Fz]]></name></author>
		<updated>2003-07-28T19:22:05-04:00</updated>

		<published>2003-07-28T19:22:05-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=24137#p24137</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=24137#p24137"/>
		<title type="html"><![CDATA[eddie-0.8.6a]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=24137#p24137"><![CDATA[
show us the script plz<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=3085">Sir_Fz</a> — Mon Jul 28, 2003 7:22 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[Anonymous]]></name></author>
		<updated>2003-07-28T19:12:20-04:00</updated>

		<published>2003-07-28T19:12:20-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=24136#p24136</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=24136#p24136"/>
		<title type="html"><![CDATA[eddie-0.8.6a]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=24136#p24136"><![CDATA[
as i've said before i'm a bit of a n00b to eggdrops and i'm having a problem with the eddie script when i .rehash the bot it comes up with this<br><blockquote class="uncited"><div> [00:20] Writing user file...<br>&lt;00:05&gt; &lt;Greeter&gt; [00:20] Writing channel file...<br>&lt;00:05&gt; &lt;Greeter&gt; [00:20] Rehashing ...<br>&lt;00:05&gt; &lt;Greeter&gt; [00:20] Listening at telnet port 65435 (all)<br>&lt;00:05&gt; &lt;Greeter&gt; [00:20] Loaded allvoice.tcl by guppy<br>&lt;00:05&gt; &lt;Greeter&gt; [00:20] * easyspeak.tcl by Dalanx loaded.<br>&lt;00:05&gt; &lt;Greeter&gt; [00:20] Simple OP-script by Nirox^ loaded<br>&lt;00:05&gt; &lt;Greeter&gt; [00:20] Greetd.tcl v0.05b by guppy<br>&lt;00:05&gt; &lt;Greeter&gt; [00:20] Loaded Script : Qauth_eng.tcl , Made By : Higu ( <a href="mailto:Botin@omistaja.net">Botin@omistaja.net</a> )<br>&lt;00:05&gt; &lt;Greeter&gt; [00:20] Babel by MORA@EFNet<br>&lt;00:05&gt; &lt;Greeter&gt; [00:20] Tcl error in file 'eggdrop.conf':<br>&lt;00:05&gt; &lt;Greeter&gt; [00:20] can't read "chan_limits": no such variable<br>&lt;00:05&gt; &lt;Greeter&gt; while executing<br>&lt;00:05&gt; &lt;Greeter&gt; "if {$chan_limits == ""} {set eddie_lim 0}"<br>&lt;00:05&gt; &lt;Greeter&gt; (file "scripts/eddie2.tcl" line 112)<br>&lt;00:05&gt; &lt;Greeter&gt; invoked from within<br>&lt;00:05&gt; &lt;Greeter&gt; "source scripts/eddie2.tcl"<br>&lt;00:05&gt; &lt;Greeter&gt; (file "eggdrop.conf" line 1374)<br>&lt;00:05&gt; &lt;Greeter&gt; [00:20] * CONFIG FILE NOT LOADED (NOT FOUND, OR ERROR)</div></blockquote>i've tried to edit the eddie.conf like the readme but still does this pls help my clan is bugging me about this they want new features on our eggdrop but they dont relise what a pain in the arse it is<br><br>ty in advance for any help u can render<p>Statistics: Posted by Guest — Mon Jul 28, 2003 7:12 pm</p><hr />
]]></content>
	</entry>
	</feed>
