This is the new home of the egghelp.org community forum.
All data has been migrated (including user logins/passwords) to a new phpBB version.


For more information, see this announcement post. Click the X in the top right-corner of this box to dismiss this message.

i've got a truble

Help for those learning Tcl or writing their own scripts.
Post Reply
a
antilope
Voice
Posts: 5
Joined: Thu Apr 02, 2009 12:34 pm

i've got a truble

Post by antilope »

Hi in my autovoice list can't +voice automatically the nick with capital letters such as Prezzemolo or PrEzZeMoLo thanks for any help

Code: Select all


# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 
# #                                                                         # # 
#                 avl (autovoicelist) - Script v1.0 by stylus740              # 
# #                                                                         # # 
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 


############################################################################### 
# History:                                                                    # 
# 1.0      Erstes Release                                                    # 
############################################################################### 

## 
# verwaltet eine Liste von Nicks, die im Channel autovoice erhalten 
## 

# In welchen Channels soll das Script aktiv sein? 
# Die Definition erfolgt durch Setzen von +avl in der Partyline im Bot 
# 
# .chanset #channel +avl 

# Definition des Datenfiles für berechtigte User 

set avl_ni(datafile) "scripts/avl.dat" 

############################################################################### 
# Mögliche Befehle in der Partyline:                     # 
#                                       # 
# .chanset #chan +avl      Aktivierung des scripts in Channel #chan      # 
# .chanset #chan -avl      Deaktivierung des scripts in Channel #chan   # 
# .avlhelp            Hilfen zur Bedienung               # 
# .addvoice nick         User zur Liste hinzufügen            # 
# .delvoice nick         User von Liste löschen               # 
# .listvoice         Einträge anzeigen                  # 
############################################################################### 

### Ab hier nur editieren, wenn man genau weiß, was man tut. Beginn des Codes ### 

setudef flag avl                        ;# Zur Aktivierung der userdefined flags 
set avl_ni(version) v1.0                  ;# Variable für Version setzten 

bind dcc n|n addvoice add_users               ;# User hinzufügen 
bind dcc n|n delvoice del_users               ;# User hinzufügen 
bind dcc n|n listvoice list_users               ;# User anzeigen 
bind dcc n|n avlhelp help_users               ;# Hilfe anzeigen 
bind msg n|n addvoice m_add_users               ;# User hinzufügen 
bind msg n|n delvoice m_del_users               ;# User hinzufügen 
bind msg n|n listvoice m_list_users               ;# User anzeigen 
bind msg n|n avlhelp m_help_users               ;# Hilfe anzeigen 
bind join - * join:avl_check 
bind nick - * nick:avl_check 

proc help_users {handle idx args} { 
putlog "avl ermöglicht es Usern, die von einer berechtigten Person in einer Liste gespeichert sind" 
putlog "auto-voice durch den Bot erteilen zu lassen. (Nützlich in Support Channels, wo oft User nicht" 
putlog "registriert sind." 
putlog "Die Steuerung von avl erfolgt über die Partyline mit den folgenden Befehlen:" 
putlog " " 
putlog ".addvoice <nick> <chan>        Nick mit Channel hinzufügen oder ändern" 
putlog ".delvoice <nick> <chan>        Den angegebenen Nick löschen" 
putlog ".listvoice               Sämtliche berechtigten User-Einträge anzeigen" 
putlog ".avlhelp                        Diese Hilfemeldung anzeigen" 
} 

proc m_help_users {nick host hand args} { 
puthelp "PRIVMSG $nick :avl ermöglicht es Usern, die von einer berechtigten Person in einer Liste gespeichert sind" 
puthelp "PRIVMSG $nick :auto-voice durch den Bot erteilen zu lassen. (Nützlich in Support Channels, wo oft User nicht" 
puthelp "PRIVMSG $nick :registriert sind." 
puthelp "PRIVMSG $nick :Die Steuerung von avl erfolgt über ein Query mit dem Bot mit den folgenden Befehlen:" 
puthelp "PRIVMSG $nick : " 
puthelp "PRIVMSG $nick :/msg <bot> addvoice <nick> <chan>        Nick mit Channel hinzufügen oder ändern" 
puthelp "PRIVMSG $nick :/msg <bot> delvoice <nick> <chan>        Den angegebenen Nick löschen" 
puthelp "PRIVMSG $nick :/msg <bot> listvoice                 Sämtliche berechtigten User-Einträge anzeigen" 
puthelp "PRIVMSG $nick :/msg <bot> avlhelp                    Diese Hilfemeldung anzeigen" 
} 

proc init_users {} { 
global avl_nick avl_ni                        ;# Datenstrukturen public definieren 
if {[file exists $avl_ni(datafile)]} {               ;# Falls File vorhanden 
  putlog "Laden Userdaten aus $avl_ni(datafile)"         ;# Lademeldung 
  set in [open $avl_ni(datafile) r]                  ;# Datenfile im read modus öffnen 
  while {![eof $in]} {                        ;# solange kein EOF 
    set vline [gets $in]                                 ;# Zeile holen 
    if {[eof $in]} {break}                       ;# Falls EOF, Ende von while 
    set inick [lindex [split $vline] 0]                 ;# Nick extrahieren 
    set ichan [join [lrange [split $vline] 1 end]]       ;# Channel extrahieren 
    set ientry "$inick&$ichan"                  ;# Kombination Nick&Chan bauen 
    set avl_nick($ientry) $ientry                        ;# Array Datenfeld belegen 
    }                                 ;# End while 
  close $in                              ;# Datei schließen 
  }                                 ;# End If (dataexist) 
}                                 ;# End Procedure 
init_users 

proc list_users {handle idx args} { 
global avl_nick avl_ni                        ;# Datenstrukturen public definieren 
if {[info exists avl_nick]} {                     ;# Falls Felder definiert sind 
  putlog "Eingetragene Nick für avl:"               ;# Überschrift anzeigen 
  foreach search [array names avl_nick] {                ;# Für jeden Eintrag 
   if {$search != 0} {                        ;# wenn kein leerer Eintrag 
     set acmd [split $search "&"]                  ;# Eintrag bei "&" aufsplitten 
     set inick [lindex $acmd 0]                  ;# erstes Argument ist Nick 
     set inick [form $inick]                     ;# Nick formatieren 
     set ichan [join [lrange [split $acmd] 1 end]]         ;# Der gesamte Rest ist der Channel 
     set ichan [form $ichan]                     ;# Chan formatieren 
     putlog "$inick       $ichan"                     ;# Zeile anzeigen 
     }                              ;# End if (search) 
    }                                 ;# End foreach 
  } else {                              ;# Falls keine Struktur vorhanden 
    putlog "Keine Daten gespeichert"               ;# Fehler anzeigen 
  }                                 ;# End if 
}                                 ;# End Procedure 

proc add_users {handle idx args} { 
 global avl_nick avl_ni                        ;# Datenstrukturen public definieren 
 set acmd [lindex $args 0]                     ;# Befehlszeile extrahieren 
 set inick [lindex [split $acmd] 0]                  ;# erstes Argument ist Nick 
 set inick [form $inick]                     ;# Nick formatieren 
 set ichan [join [lrange [split $acmd] 1 end]]            ;# Der gesamte Rest ist der Channel 
 set ichan [form $ichan]                     ;# Chan formatieren 
 set ientry "$inick&$ichan"                     ;# Kombination Nick&Chan bauen 
 set avl_nick($ientry) $ientry                           ;# Array Datenfeld (neu) belegen 
 writefile                              ;# Datei schreiben 
 putlog "User $inick mit Chan $ichan in $avl_ni(datafile) hinzugefügt" 
 if {[onchan $inick $ichan]} { 
   pushmode $ichan +v $inick                   ;# direkt +v setzen 
 } 
}                                 ;# End Procedure 

proc del_users {handle idx args} { 
 global avl_nick avl_ni                        ;# Datenstrukturen public definieren 
 set acmd [lindex $args 0]                     ;# Befehlszeile extrahieren 
 set inick [lindex [split $acmd] 0]                 ;# erstes Argument ist Nick 
 set inick [form $inick]                    ;# Nick formatieren 
 set ichan [join [lrange [split $acmd] 1 end]]           ;# Der gesamte Rest ist der Channel 
 set ichan [form $ichan]                     ;# Chan formatieren 
 set ientry "$inick&$ichan"                     ;# Eintrag nick&chan montieren 
 if {([info exists avl_nick($ientry)])} {                ;# wenn der Eintrag existiert 
   unset avl_nick($ientry)                   ;# Array Datenfeld freigeben 
   writefile 
   putlog "Eintrag $ientry aus $avl_ni(datafile) gelöscht"  ;# Löschmeldung 
   } else {                            ;# Falls Nick nicht vorhanden 
   putlog "Eintrag $ientry ist nicht gespeichert!"      ;# Infomeldung 
   }                              ;# End if (info) 
 if {[onchan $inick $ichan]} { 
   pushmode $ichan -v $inick                   ;# direkt -v setzen 
 } 
}                              ;# End Procedure 

proc m_list_users {nick host hand args} { 
global avl_nick avl_ni                        ;# Datenstrukturen public definieren 
if {[info exists avl_nick]} {                     ;# Falls Felder definiert sind 
  puthelp "PRIVMSG $nick :Eingetragene Nick für avl:"      ;# Überschrift anzeigen 
  foreach search [array names avl_nick] {                ;# Für jeden Eintrag 
   if {$search != 0} {                        ;# wenn kein leerer Eintrag 
     set acmd [split $search "&"]                  ;# Eintrag bei "&" aufsplitten 
     set inick [lindex [split $acmd] 0]              ;# erstes Argument ist Nick 
     set inick [form $inick]                     ;# Nick formatieren 
     set ichan [join [lrange [split $acmd] 1 end]]      ;# Der gesamte Rest ist der Channel 
     set ichan [form $ichan]                     ;# Chan formatieren 
     puthelp "PRIVMSG $nick :$inick       $ichan"       ;# Zeile anzeigen 
     }                              ;# End if (search) 
    }                                 ;# End foreach 
  } else {                              ;# Falls keine Struktur vorhanden 
    puthelp "PRIVMSG $nick :Keine Daten gespeichert"      ;# Fehler anzeigen 
  }                                 ;# End if 
}                                 ;# End Procedure 

proc m_add_users {nick host hand args} { 
 global avl_nick avl_ni                        ;# Datenstrukturen public definieren 
 set acmd [lindex $args 0]                     ;# Befehlszeile extrahieren 
 set inick [lindex [split $acmd] 0]                  ;# erstes Argument ist Nick 
 set inick [form $inick]                     ;# Nick formatieren 
 set ichan [join [lrange [split $acmd] 1 end]]            ;# Der gesamte Rest ist der Channel 
 set ichan [form $ichan]                     ;# Chan formatieren 
 set ientry "$inick&$ichan"                     ;# Kombination Nick&Chan bauen 
 set avl_nick($ientry) $ientry                           ;# Array Datenfeld (neu) belegen 
 writefile                              ;# Datei schreiben 
 puthelp "PRIVMSG $nick :User $inick mit Chan $ichan in $avl_ni(datafile) hinzugefügt" 
 if {[onchan $inick $ichan]} { 
   pushmode $ichan +v $inick                   ;# direkt +v setzen 
 } 
}                                 ;# End Procedure 

proc m_del_users {nick host hand args} { 
 global avl_nick avl_ni                        ;# Datenstrukturen public definieren 
 set acmd [lindex $args 0]                     ;# Befehlszeile extrahieren 
 set inick [lindex [split $acmd] 0]                 ;# erstes Argument ist Nick 
 set inick [form $inick]                    ;# Nick formatieren 
 set ichan [join [lrange [split $acmd] 1 end]]           ;# Der gesamte Rest ist der Channel 
 set ichan [form $ichan]                     ;# Chan formatieren 
 set ientry "$inick&$ichan"                     ;# Eintrag nick&chan montieren 
 if {([info exists avl_nick($ientry)])} {                ;# wenn der Eintrag existiert 
   unset avl_nick($ientry)                   ;# Array Datenfeld freigeben 
   writefile 
   puthelp "PRIVMSG $nick :Eintrag $ientry aus $avl_ni(datafile) gelöscht"  ;# Löschmeldung 
   } else {                            ;# Falls Nick nicht vorhanden 
   puthelp "PRIVMSG $nick :Eintrag $ientry ist nicht gespeichert!"      ;# Infomeldung 
   }                              ;# End if (info) 
 if {[onchan $inick $ichan]} { 
   pushmode $ichan +v $inick                   ;# direkt -v setzen 
 } 
}                              ;# End Procedure 

### Bei einem Join wird dann Voice gegeben, wenn der Nick im Datenfile steht 

proc join:avl_check {nick uhost handle chan} { 
  global botnick avl_nick 
  if {![avl:active $chan]} { return 0 }             ;# falscher Channel: nix machen 
  set chan [string tolower $chan]               ;# Channel in Kleinschreibung 
  if ([isop $botnick $chan]) {               ;# Wenn Bot im Channel Op hat 
    foreach search [array names avl_nick] {            ;# Liste aller Einträge durchlaufen 
      if {$search != 0} {                   ;# wenn kein leerer Eintrag 
        set ientry [string tolower $avl_nick($search)]      ;# Eintrag (nick&#chan) extrahieren 
        set parts [split $ientry "&"] 
        set inick [lindex $parts 0]                     ;# Nick extrahieren 
        set ichan [lindex $parts 1]                     ;# Chan extrahieren 
        if {($nick == $inick) && ($chan == $ichan)} { 
          pushmode $chan +v $nick                ;# +v setzen 
   }  
      }                           ;# end if search 
    }                            ;# end for eache 
  } else {                           ;# bot hat gar kein op 
    putlog "Habe kein op op und hole es mir neu"       ;# Meldung "kein op" 
    putserv "chanserv op $chan $botnick" 
  }                                 ;# end if (botisop) 
}                              ;# end procedure 

proc nick:avl_check {nick uhost handle chan newnick} { 
  global botnick avl_nick 
  if {![avl:active $chan]} { return 0 }             ;# falscher Channel: nix machen 
  set chan [string tolower $chan]               ;# Channel in Kleinschreibung 
  if ([isop $botnick $chan]) {               ;# Wenn Bot im Channel Op hat 
    foreach search [array names avl_nick] {            ;# Liste aller Einträge durchlaufen 
      if {$search != 0} {                   ;# wenn kein leerer Eintrag 
        set ientry [string tolower $avl_nick($search)]      ;# Eintrag (nick&#chan) extrahieren 
        set parts [split $ientry "&"] 
        set inick [lindex $parts 0]                     ;# Nick extrahieren 
        set ichan [lindex $parts 1]                     ;# Chan extrahieren 
        if {($nick == $inick) && ($chan == $ichan)} { 
          pushmode $chan +v $newnick             ;# +v setzen 
   }    
      }                           ;# end if search 
    }                              ;# end foreach 
  } else {                           ;# bot hat gar kein op 
    putlog "Habe kein op op und hole es mir neu"       ;# Meldung "kein op" 
    putserv "chanserv op $chan $botnick" 
  }                                 ;# end if (botisop) 
}                              ;# end procedure 

proc form {formtext} {                     ;# Formatierung String 
  set t [string trimleft $formtext]               ;# führende Leerzeichen entfernen 
  set t [string trimright $t]                  ;# folgende Leerzeichen entfernen 
  return $t                           ;# formatierten String zurückliefern 
} 

proc writefile {} { 
  global avl_nick avl_ni 
  set out [open $avl_ni(datafile) w]               ;# Datenfile im w modus öffnen (überschreiben) 
  foreach search [array names avl_nick] {               ;# durchlaufen der Daten arrays 
    if {$search != 0} {                        ;# wenn keine leere Zeile 
      set parts [split $search "&"]                  ;# Eintrag bei "&" aufsplitten 
      set inick [lindex $parts 0]                  ;# Nick extrahieren 
      set ichan [lindex $parts 1]                  ;# Channel extrahieren 
      set output "$inick $ichan"                  ;# Output montieren 
      puts $out $output                        ;# Zeile schreiben 
     }                                 ;# End if (search) 
   }                              ;# End Foreach 
   close $out                        ;# Datei schließen 
}                              ;# End procedure 

proc avl:active {chan} { 
  foreach setting [channel info $chan] {            ;# "channel info" ist ein TCL Befehl! 
    if {[regexp -- {^[\+-]} $setting]} { 
      if {$setting == "+avl"} { return 1 } 
    } 
  } 
  return 0 
} 

putlog "avl (autovoicelist) von stylus740 geladen. (Stand 12.02.05)" 
putlog "Eingabe von \.avlhelp bzw. \/msg $botnick avlhelp zeigt Bedienungshinweise an"
User avatar
speechles
Revered One
Posts: 1398
Joined: Sat Aug 26, 2006 10:19 pm
Location: emerald triangle, california (coastal redwoods)

Post by speechles »

Code: Select all

if {($nick == $inick) && ($chan == $ichan)} { 
Change both occurences of this line to the one below:

Code: Select all

if {[string match -nocase $nick $inick] && [string match -nocase $chan $ichan]} {
a
antilope
Voice
Posts: 5
Joined: Thu Apr 02, 2009 12:34 pm

Post by antilope »

speechles wrote:

Code: Select all

if {($nick == $inick) && ($chan == $ichan)} { 
Change both occurences of this line to the one below:

Code: Select all

if {[string match -nocase $nick $inick] && [string match -nocase $chan $ichan]} {
thank u very mutch now it's work fine :D :D
a
antilope
Voice
Posts: 5
Joined: Thu Apr 02, 2009 12:34 pm

Post by antilope »

speechles wrote:

Code: Select all

if {($nick == $inick) && ($chan == $ichan)} { 
Change both occurences of this line to the one below:

Code: Select all

if {[string match -nocase $nick $inick] && [string match -nocase $chan $ichan]} {
thank u very mutch now it's work fine :D :D
Post Reply