All pastes #331324 Raw Edit

Someone

public text v1 · immutable
#331324 ·published 2007-01-28 19:43 UTC
rendered paste body
# %topic Q on|off
#   - on: Q setzt euer Topic, nicht der Bot.
#   - off: Der Bot setzt das Script selber, zB wenn ihr kein Q habt ;)
#
# %topic make <text>
#   - Speichert euer Topic ab.
#   - Ihr könnt Variablen gebrauchen (zB ":text:", ":news:", ":info:", ":hp:", etc.). Wie die Variablen heißen sei euch freigestellt.
#
# %topic :text:/:news:/:info:/:hp:/...
#   - Setzt die Variablen, die ihr in eurem Topic benutzt.
#
# %topic set
#   - Setzt das neue Topic, mit allen Variablen, die ihr aber vorher Speichern müsst. Sonst sieht das neue Topic echt scheiße aus.
#


#
# BINDINGS
#

   bind pub nm|nm %topic      topic:pub


#
# SETTINGS
#

   set topic(ver)         0.84b
   set topic(directory)         "scripts/dbase"
   set topic(file,vars)         "topic_vars.db"

   setudef flag topic_Q
   setudef str topic

   if {![file isdirectory $topic(directory)]} {
          file mkdir $topic(directory)
     }
   if {![file exists $topic(directory)/$topic(file,vars)]} {
      close [open $topic(directory)/$topic(file,vars) a+]
   }

#
# T3H SCRIPT
#

proc topic:pub { nick host hand chan arg } {

   global topic

   set function      [string tolower [lindex $arg 0]]
   set chan      [string tolower [encrype $chan]]

   switch $function {

      q {
         if {[string tolower [lindex $arg 1]] == "on"} {
            channel set $chan +topic_Q
            putquick "NOTICE $nick :Done."
         } elseif {[string tolower [lindex $arg 1]] == "off"} {
            channel set $chan -topic_Q
            putquick "NOTICE $nick :Done."
         } else {
            putquick "NOTICE $nick :Error. Please use !topic Q on|off."
         }
      }

      make {

         set length       [string length [lrange $arg 1 end]]

         if {$length > 250} {
            putquick "NOTICE $nick :Topic is too long. Max: 250 characters. You have: $length."
            return
         }

         channel set $chan topic [lrange [encrype $arg] 1 end]

         putquick "NOTICE $nick :Topic successfully saved."
      }

      set {

         if {[channel get $chan topic] == ""} {
            putquick "NOTICE $nick :No topic set. Please use \"!topic make <text>\" first."
            return
         }

         set new_topic    [channel get $chan topic]
         set file       [open "$topic(directory)/$topic(file,vars)" r]

         while {![eof $file]} {
            set line [encrype [gets $file]]

            if {[lindex $line 0] == $chan} {
               set new_topic [string map "\":[lindex $line 1]:\" \"[lrange $line 2 end]\"" $new_topic]
            }
         }
         close $file

         if {[channel get $chan topic_Q]} {
            putquick "PRIVMSG Q :settopic [decrype $chan] [decrype $new_topic]"
            putquick "NOTICE $nick :Done."
         } else {
            putquick "TOPIC [decrype $chan] :[decrype $new_topic]"
            putquick "NOTICE $nick :Done."
         }
      }

      default {

         if {$function == ""} { return }

         regsub -all -- ":" $function "" function

         set text      [lrange [encrype $arg] 1 end]
         set found      0

         set file [open "$topic(directory)/$topic(file,vars)" r]
         set temp [open "$topic(directory)/topic.temp" a+]

         while {![eof $file]} {
            set line [encrype [gets $file]]
      
            if {$line != ""} {
               if {[lindex $line 0] == $chan && [lindex $line 1] == $function} {
                  puts $temp "$chan $function $text"
                  set found 1
               } else {
                  puts $temp $line
               }
            }
         }

         close $file
         close $temp

         file delete $topic(directory)/$topic(file,vars)
         file rename $topic(directory)/topic.temp $topic(directory)/$topic(file,vars)

         if {!$found} {
            set file [open "$topic(directory)/$topic(file,vars)" a+]
            puts $file "$chan $function $text"
            close $file
         }

         putquick "NOTICE $nick :Variable successfully saved."         

      }
   }
}

proc encrype { text } {

   regsub -all -- \\\\ $text 9328 text
   regsub -all -- \\\] $text 2417 text
   regsub -all -- \\\[ $text 4411 text
   regsub -all -- \\\} $text 9832 text
   regsub -all -- \\\{ $text 4832 text
   regsub -all -- \\\" $text 5534 text
   regsub -all -- \\\; $text 8934 text

   return $text
}

proc decrype { text } {

   regsub -all -- 9328 $text \\ text
   regsub -all -- 2417 $text \] text
   regsub -all -- 4411 $text \[ text
   regsub -all -- 9832 $text \} text
   regsub -all -- 4832 $text \{ text
   regsub -all -- 5534 $text \" text
   regsub -all -- 8934 $text \; text

   return $text
}

putlog "Topic-Script v$topic(ver) loaded."