<?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/17218" />

	<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>2009-10-07T04:35:16-04:00</updated>

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

		<entry>
		<author><name><![CDATA[neoHUNTER]]></name></author>
		<updated>2009-10-07T04:35:16-04:00</updated>

		<published>2009-10-07T04:35:16-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=90438#p90438</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=90438#p90438"/>
		<title type="html"><![CDATA[Help with advert script by Christian Hopf]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=90438#p90438"><![CDATA[
Initially the script is working but after several restart of my bot, It wont advertise anymore in the channel.  I checked everything and seems okay to me.  Please check this script peeps for any amendments.<br><br>Script Courtesy of Christian Hopf.  Thanks man...<div class="codebox"><p>Code: </p><pre><code>=============================================# --- namespace ::advert    namespace eval ::advert {                   # --- namespace variable         namespace eval variable {                # string variable default trigger [ no change need ]        variable trigger "!"                # string variable keyword [ need for /msg ]        variable keyword "advert"                # integer variable timer (must be greater than 15)                      variable timer 30                # string variable flag        variable flag "n|n"                # string variable database        variable database ".advert.db"                       # {{{ NOW don't change anything, if you aren't 100% sure what you are doing }}}        # {{{ NOW don't change anything, if you aren't 100% sure what you are doing }}}        # {{{ NOW don't change anything, if you aren't 100% sure what you are doing }}}        # {{{ NOW don't change anything, if you aren't 100% sure what you are doing }}}                 # initializes user defined string        setudef flag advert-status        setudef int advert-timer        setudef int advert-id                # string variable author        variable author "2006 Christian 'chris' Hopf \002(\002#chris - www.christianhopf.de\002)\002"                # string variable version        variable version "v1.4"            }                  if { $::advert::variable::timer &lt; 15 } {         set ::advert::variable::timer 15      }            if {![file exists $::advert::variable::database]} {        if { [catch { set database [open $::advert::variable::database "w"] } error] } {          die "can't create file &lt;:( \[$::advert::variable::database\]"        }                puts -nonewline $database ""        close $database      }                                  # binds      bind PUBM -|- {*} ::advert::pubm      bind MSGM -|- {*} ::advert::msgm            # - void proc pubm {bind PUBM}      proc pubm { nickname hostname handle channel arguments } {          ::advert::irc::parse $nickname $hostname $handle $arguments $channel "pubm"      }            # - void proc msgm {bind MSGM}      proc msgm { nickname hostname handle arguments } {          ::advert::irc::parse $nickname $hostname $handle $arguments [lindex [split $arguments] 2] "msgm"      }                        # namespace eval irc      namespace eval irc {                   # - void proc parse        proc parse { nickname hostname handle arguments channel mode} {            global botnick lastcommand channelcommand lastnickname lasthandle lastchannel lasttrigger lastucommand                        set utrigger [getuser $handle XTRA advert-trigger]            set temp $channel                if { $mode == "pubm" } {              if {[llength $utrigger] &lt; 1} {                set utrigger [join [string trim $::advert::variable::trigger]]              }                  if { [string equal -nocase $botnick [lindex [split $arguments] 0]]} {                set command [string tolower [lindex [split $arguments] 1]]                set arguments [join [lrange [split $arguments] 2 end]]                set trigger "$botnick $command"                } elseif { $utrigger == "NULL" }  {                set command [string tolower [lindex [split $arguments] 0]]                set arguments [join [lrange [split $arguments] 1 end]]                                set trigger "$command"                            } elseif { [string equal -nocase [string index [lindex [split $arguments] 0] 0] $utrigger] } {                set command [string range [string tolower [lindex [split $arguments] 0]] 1 end]                set arguments [join [lrange [split $arguments] 1 end]]                  set trigger "${utrigger}$command"              } else {                return              }                            if {[string index [lindex [split $arguments] 0] 0] == "#" &amp;&amp; [validchan [lindex [split $arguments] 0]]} {                set channel [lindex [split $arguments] 0]                set arguments [join [lrange [split $arguments] 1 end]]              }                        } elseif { $mode == "msgm" } {              if { [string equal -nocase [lindex [split $arguments] 0] ${::advert::variable::keyword}] } {                set command [lindex [split $arguments] 1]                set channel [lindex [split $arguments] 2]                              set arguments [join [lrange [split $arguments] 3 end]]                set trigger "$::advert::variable::keyword $command"                        } else {                return              }                          } else {              return            }                        if { ![matchattr $handle $::advert::variable::flag $temp] } {              return            } elseif {![info exists trigger] || [llength $trigger] &lt; 1} {              return            } elseif {(![info exists command] || [llength $command] &lt; 1)} {              return            } elseif { [info proc ::advert::irc::command:$command] == ""  } {              return            } elseif { ![regexp -- {^#(.+)$} $channel] || ![validchan $channel] } {              putquick "PRIVMSG $nickname :\002(\002advert\002)\002 you forgot the channel parameter"                            return            }                        set channelcommand "$temp"            set lastcommand  "$trigger"            set lastucommand "$command"            set lastnickname "$nickname"            set lasthandle "$handle"            set lastchannel "$channel"            set lasttrigger [join [lrange $trigger 0 end-1]]                        ::advert::irc::command:$command $nickname $hostname $handle $channel $arguments        }                                # - void proc add        proc command:add { nickname hostname handle channel arguments } {            global lastcommand                        set trigger [::advert::utilities::trigger $handle]                        if { [llength $arguments] &lt; 1 } {              putquick "NOTICE $nickname :\002(\002advert\002)\002 synta\037x\037\002:\002 $lastcommand \037?#channel?\037 &lt;message&gt;"                return            }              if {[::advert::utilities::exists $channel $arguments]} {              putquick "NOTICE $nickname :\002(\002advert\002)\002 message does already appear in the database."            } elseif {[::advert::utilities::add $channel $arguments]} {              putquick "NOTICE $nickname :\002(\002advert\002)\002 message successfully added to the database."                            if {[llength [::advert::utilities::create:list $channel]] == 1} {                putquick "NOTICE $nickname :\002(\002advert\002)\002 to start the script timer please use ${trigger}status \037enable\037"                                channel set $channel advert-id 1              }                                       } else {              putquick "NOTICE $nickname :\002(\002advert\002)\002 error while adding channel message to the database."            }        }                # - void proc remove        proc command:remove { nickname hostname handle channel arguments } {            global lastcommand                        set trigger [::advert::utilities::trigger $handle]                         if { [llength $arguments] &lt; 1 } {              putquick "NOTICE $nickname :\002(\002advert\002)\002 synta\037x\037\002:\002 $lastcommand \037?#channel?\037 &lt;message&gt;"                return            }                                     if {![::advert::utilities::exists $channel $arguments]} {              putquick "NOTICE $nickname :\002(\002advert\002)\002 message doesn't appear in the database."            } elseif {[::advert::utilities::remove $channel $arguments]} {              putquick "NOTICE $nickname :\002(\002advert\002)\002 message successfully removed from the database."                            if {[expr [llength [::advert::utilities::create:list $channel]] + 1] == [set max [channel get $channel advert-id]]} {                 channel set $channel advert-id 1              }                            if {[llength [::advert::utilities::create:list $channel]] == 0 &amp;&amp; [timerexists [list ::advert::utilities::display $channel]] != ""} {                  killtimer [timerexists [list ::advert::utilities::display $channel]]                  channel set $channel -advert-status                                    putquick "NOTICE $nickname :\002(\002advert\002)\002 advert script turned \0034off\003, because no messages are in the database"              }                                      } else {              putquick "NOTICE $nickname :\002(\002advert\002)\002 error while removing channel message from the database."            }        }                # - void proc status        proc command:status { nickname hostname handle channel arguments } {                    global lastcommand            set trigger [::advert::utilities::trigger $handle]                        if { [llength $arguments] &lt; 1 } {              putquick "NOTICE $nickname :\002(\002advert\002)\002 synta\037x\037\002:\002 $lastcommand \037?#channel?\037 \037enable\037|\037disable\037"                putquick "NOTICE $nickname :\002(\002advert\002)\002 currently advert script is [expr {([channel get $channel "advert-status"]) ? "\0033enabled\003" : "\0034disabled\003"}] "                            return            }                                  if { [llength [::advert::utilities::create:list $channel]] == 0 &amp;&amp; [string tolower $arguments] == "enable" } {              putquick "NOTICE $nickname :\002(\002advert\002)\002 warnin\037g\037\002:\002 can't start script, because no messages are in the database"                            return            }                        if {[string tolower $arguments] == "enable" || [string tolower $arguments] == "disable"} {              channel set $channel [expr {([string equal -nocase enable $arguments]) ? "+" : "-"}]advert-status                                 putquick "NOTICE $nickname :\002(\002advert\002)\002 advert script is now [expr {([channel get $channel "advert-status"]) ? "\0033enabled\003" : "\0034disabled\003"}] "            }                        ::advert::utilities::create:timer $channel                 }                          # - void proc help        proc command:help { nickname hostname handle channel arguments } {             ::advert::irc::command:userhelp $nickname $hostname $handle $channel $arguments        }                # - void proc showcommands        proc command:showcommands { nickname hostname handle channel arguments } {             ::advert::irc::command:userhelp $nickname $hostname $handle $channel $arguments        }                        # - void proc userhelp        proc command:userhelp { nickname hostname handle channel arguments } {                        set trigger [::advert::utilities::trigger $handle]                      putquick "NOTICE $nickname :\002(\002advert\002)\002 \037help overview\002\037:\002"                           putquick "NOTICE $nickname :\002(\002advert\002)\002 ${trigger}status \037?channel?\037 &lt;enable/disable&gt;"            putquick "NOTICE $nickname :\002(\002advert\002)\002 ${trigger}add \037?channel?\037 &lt;message&gt;"            putquick "NOTICE $nickname :\002(\002advert\002)\002 ${trigger}remove \037?channel?\037 &lt;#id/message&gt;"            putquick "NOTICE $nickname :\002(\002advert\002)\002 ${trigger}timer \037?channel?\037 &lt;minutes&gt;"            putquick "NOTICE $nickname :\002(\002advert\002)\002 ${trigger}list \037?channel?\037"            putquick "NOTICE $nickname :\002(\002advert\002)\002 ${trigger}trigger \037?#id?\037 \002(\002personal trigger, not global trigger\002)\002"            putquick "NOTICE $nickname :\002(\002advert\002)\002 ${trigger}version \037?channel?\037"                   }                # - void proc trigger        proc command:trigger { nickname hostname handle channel arguments } {             global botnick botname lastcommand            set trigger [::advert::utilities::trigger $handle]              array set triggers {              "1" {$} "2" {!} "3" {?} "4" {.} "5" {-}              "6" {²} "7" {%} "8" {&amp;} "9" {*} "10" {:}              "11" {§} "12" {°} "13" {^} "14" {NULL}            }                             if { [llength $arguments] &lt; 1 } {              putquick "NOTICE $nickname :\002(\002advert\002)\002 synta\037x\037\002:\002 $lastcommand \037?#id?\037"               putquick "NOTICE $nickname :\002(\002advert\002)\002 curren\037t\037\002:\002 $trigger"              set list ""              set id   0                            while {$id &lt; 10} {                incr id 1                lappend list "#$id ($triggers($id))"              }                            putquick "NOTICE $nickname :\002(\002advert\002)\002 available triggers are:"              putquick "NOTICE $nickname :[join $list ", "]"                            return            }                                     if { [string range $arguments 1 2] &lt; 15 &amp;&amp; [string range $arguments 1 2] &gt; 0 } {            setuser $handle XTRA advert-trigger $triggers([string range $arguments 1 2])            putquick "NOTICE $nickname :\002(\002advert\002)\002 your personal trigger is now: [getuser $handle XTRA advert-trigger]"          } else {            putquick "NOTICE $nickname :\002(\002advert\002)\002 synta\037x\037\002:\002 $lastcommand \037?\002#\002id?\037"          }        }                        # - void proc timer        proc command:timer { nickname hostname handle channel arguments } {                global lastcommand            set trigger [::advert::utilities::trigger $handle]              if { [llength $arguments] &lt; 1 } {              putquick "NOTICE $nickname :\002(\002advert\002)\002 synta\037x\037\002:\002 $lastcommand \037?channel?\037 &lt;minutes&gt;"                putquick "NOTICE $nickname :\002(\002advert\002)\002 curren\037t\037\002:\002 [channel get $channel advert-timer]"                  return            }                        if {![isnumber $arguments]} {              putquick "NOTICE $nickname :\002(\002advert\002)\002 erro\037r\037\002:\002 please enter a valid timer number"               } elseif { $arguments &lt; 15 } {              putquick "NOTICE $nickname :\002(\002advert\002)\002 erro\037r\037\002:\002 timer number must be greater than 14 minutes."               } elseif {[channel set $channel advert-timer $arguments] == ""} {              putquick "NOTICE $nickname :\002(\002advert\002)\002 inf\037o\037\002:\002 timer successfully set to \"[channel get $channel advert-timer]\""               } else {              putquick "NOTICE $nickname :\002(\002advert\002)\002 error while setting timer."            }        }                   # - void proc list        proc command:list { nickname hostname handle channel arguments } {                      set list ""            set count [llength [::advert::utilities::create:list $channel]]                        if { $count == "1" } {              putquick "NOTICE $nickname :\002(\002advert\002)\002 $count message is added on my database\002:\002"            } else {              putquick "NOTICE $nickname :\002(\002advert\002)\002 $count messages are added on my database\002:\002"            }                        set number 1                        foreach messages [::advert::utilities::create:list $channel] {                              putquick "NOTICE $nickname :\002(\002advert\002)\002 \002\[\002#${number}\002\]\002 [join $messages]"                            incr number            }                        unset number          }                          # - void proc version        proc command:version { nickname hostname handle channel arguments } {                        if {[info exists ::advert(protection_v)] &amp;&amp; [expr [unixtime] - $::advert(protection_v)] &lt; 30} {               return            }                      putquick "PRIVMSG $channel :\001ACTION is running the advert script $::advert::variable::version \002(\002c\002)\002 $::advert::variable::author\001"            set ::advert(protection_v) [unixtime]                }      }                  # namespace eval utilities      namespace eval utilities {                # - void proc exists        proc exists { channel message } {          if {[catch { set database [open $::advert::variable::database "r"] } error]} {             return 0          }                    set number 1                    while {![eof $database]} {            if {[set line [gets $database]] != ""} {              if { [lindex [split $line] 0] != $channel } {                 continue              }                            if {![isnumber [string range [join $message] 1 end]]} {                if {[lindex [split $line] 0] == "$channel" &amp;&amp; [lindex [split $line] 1] == "[decrypt www.christianhopf.de $message]"} {                  close $database                                    return 1                }              } else {                if {[lindex [split $line] 0] == "$channel" &amp;&amp; $number == [string range [join $message] 1 end]} {                  close $database                                    return 1                }              }            }            incr number          }                        close $database          return 0        }                # - void proc add        proc add { channel message } {          if {[catch { set database [open $::advert::variable::database "a"] } error]} {             return 0          }                    puts $database "$channel [encrypt www.christianhopf.de $message]"          close $database          return 1        }                        # - void proc remove        proc remove { channel message } {          if {[catch { set database [open $::advert::variable::database "r"] } error]} {             return 0          }                    set refill ""          set number 1                    while {![eof $database]} {            if {[set line [gets $database]] != ""} {              if {[lindex [split $line] 0] == "$channel"} {                if {[lindex [split $line] 1] == "[decrypt www.christianhopf.de $message]" || ([isnumber [string range [join $message] 1 end]] &amp;&amp; $number == [string range [join $message] 1 end])} {                   incr number                                    continue                }                                incr number;              }                            lappend refill $line            }          }                    close $database          set database [open $::advert::variable::database "w"]                    foreach data_refill $refill {            puts $database $data_refill          }                    close $database          return 1        }                          # - void proc create:list        proc create:list { channel } {          set data ""          set database [open $::advert::variable::database "r"]                    while {![eof $database]} {            if {[set line [gets $database]] != ""} {              if { [lindex [split $line] 0] == "$channel" } {                lappend data "[decrypt www.christianhopf.de [join [lrange [split $line] 1 end]]]"              }            }          }                    close $database          return $data        }                # - void proc create:timer          proc create:timer { channel } {          if {[channel get $channel advert-status]} {            if {[set timer [channel get $channel advert-timer]] &gt; 14} {              timer $timer [list ::advert::utilities::display $channel]            } else {              channel set $channel advert-timer $::advert::variable::timer                                    timer $::advert::variable::timer [list ::advert::utilities::display $channel]            }                     } else {            if {[timerexists [list ::advert::utilities::display $channel]] != ""} {               killtimer [timerexists [list ::advert::utilities::display $channel]]            }          }           }                # - void proc trigger {required string handle}        proc trigger { handle } {          set utrigger [getuser $handle XTRA advert-trigger]                    if {[llength $utrigger] &lt; 1 || ![validuser $handle]} {            set utrigger [join [string trim $::advert::variable::trigger]]          }                               return $utrigger                }                           # - void proc display        proc display { channel } {          set data [::advert::utilities::create:list $channel]          set maxmessageid [llength $data]          set messageid [channel get $channel advert-id]          set number 1          foreach message [::advert::utilities::create:list $channel] {                            if { $number == $messageid } {                            set modes ""              set remodes ""                            if { [string match *c* [lindex [split [getchanmode $channel]] 0]] } {                append modes "-c"                append remodes "+c"              }                            if { ![string match *m* [lindex [split [getchanmode $channel]] 0]] } {                 append modes "+m"                append remodes "-m"               }                            if { [string match "*\003*" $message] || [string match "*\002*" $message] } {                set iscolored 1              }                           if { $modes != "" &amp;&amp; [botisop $channel] } {                putquick "MODE $channel $modes"                utimer 2 [list putquick "MODE $channel $remodes"]              } elseif { [info exists iscolored] &amp;&amp; ![botisop $channel] &amp;&amp; [string match "*c*" $modes]} {                set message [stripcodes rcub $message]              }                            putquick "PRIVMSG $channel :[join $message]"                            if { [timerexists [list ::advert::utilities::display $channel]] == "" } {                timer [channel get $channel advert-timer] [list ::advert::utilities::display $channel]              }                            if { $number == $maxmessageid } {                 channel set $channel advert-id 1              } else {                channel set $channel advert-id [expr $messageid + 1]              }            }                        incr number          }        }      }           utimer 10 {        foreach start_channel [channels] {          if {![channel get $start_channel advert-status] || [timerexists [list ::advert::utilities::display $start_channel]] != ""} {             continue          }                  if {[llength [::advert::utilities::create:list $start_channel]] == 0} {             channel set $start_channel -advert-status                        continue          }                  ::advert::utilities::create:timer $start_channel               }      }                # log      putlog "advert version &lt;${::advert::variable::version}&gt; (c) $::advert::variable::author successfully successfully loaded ..."</code></pre></div><p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=9395">neoHUNTER</a> — Wed Oct 07, 2009 4:35 am</p><hr />
]]></content>
	</entry>
	</feed>
