[TCL] Learn tcl voor komplete zinnen ???

Pagina: 1
Acties:

  • spokey
  • Registratie: November 2000
  • Laatst online: 14-08 07:56
Ik ben op zoek naar een bestaand learn script die komplete zinnen kan leren + antwoord of iemand die mij kan vertellen hoe ik een bestaand learn script kan aanpassen zodat hij niet maar 1 woord herkent.

Ik heb al een aantal scripts gevonden die dus wel kunnen "leren" , maar die pakken maar 1 woord + antwoord.

Wat ik wil is dus iets als dit:

Vraag:
!learn Wanneer begon de eerste wereld oorlog? = 1914
!learn Wanneer begon de tweede wereld oorlog? = 1914

Als je antwoord wil weten:

?? Wanneer begon de eerste wereld oorlog?

en dat bot/script dan zegt: Wanneer begon de eerste wereld oorlog? 1914
of alleen maar 1914.

Bestaande scripts die ik heb gevonden onthouden dus alleen het 1ste woord als vraag (hele zin word wel in database gezet maar 1ste woord word gebruikt) en spugen dan alle vraag en antwoorden uit die beginnen met Wanneer.

MHI SCM60ZS-W, 1x SRK35ZS-WF, 2x SRK25ZS-WF


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

En eigenlijk komt dit dus gewoon neer op een scriptrequest

Wat heb je zelf al geprobeerd? Laat 'ns wat zien

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • spokey
  • Registratie: November 2000
  • Laatst online: 14-08 07:56
Ik heb nog nooit TCL gescript dus ik moet ut van anderen hebben, daarom heb ik 2 "learn" scripts van deze link ( http://www.bubix.net/~coolmaster/eggdrop.php?page=tcl ) geprobeerd alleen die kunnen dus maar 1 woord pakken.

Ik snap wel zo`n beetje wat ie doet enzo alleen heb ik dus geen idee hoe je dus er voor zorgt dat je komplete lijnen/zinnen kunt pakken, ik zat zelf te denken aan " " om een zin heen maar dat werkt ook niet.

MHI SCM60ZS-W, 1x SRK35ZS-WF, 2x SRK25ZS-WF


  • spokey
  • Registratie: November 2000
  • Laatst online: 14-08 07:56
Zo handeld het programma nu dus een woord/"zin" af.

proc learn_add {nick host hand chan text} {
global learn
if {[check_access $hand flags-change] == 2} {
putserv "$learn(method) $nick :You don't have access"
return 0
}
set word [string tolower [lindex $text 0]]
set definition [lrange $text 1 end]
if {$definition == ""} {
putserv "$learn(method) $nick :Invalid syntax, use $learn(add) <word> <definition>"
return 0
}
if {[check_word $word] == 1} {
putserv "$learn(method) $nick :Definition allready exists"
return 0
}
set fx [open $learn(file) a]
puts $fx "$word $definition Ŝ"
close $fx
putserv "$learn(method) $nick :Added \"$word\" to database"
}


Wat ik dus wil dat hij niet 1 woord pakt maar een hele zin tot dat hij een = teken tegenkomt, of dat ik de "learn" zin tussen <> ofzo iets moet zetten en dat ie dat dan ziet als scheiding tekens.
Ik ben een leek in TCL, dus elke hint is welkom :)

MHI SCM60ZS-W, 1x SRK35ZS-WF, 2x SRK25ZS-WF


  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

spokey schreef op 16 April 2003 @ 09:48:
Wat ik dus wil dat hij niet 1 woord pakt maar een hele zin tot dat hij een = teken tegenkomt, of dat ik de "learn" zin tussen <> ofzo iets moet zetten en dat ie dat dan ziet als scheiding tekens.
Ik ben een leek in TCL, dus elke hint is welkom :)
http://www.suninet.nl/tclguide

Verder moet je je probleem gewoon oplossen dmv regexp. Ik heb ooit een bot gedraait @ irc.tweakers.net, deze gebruikte calc.tcl, daarmee kon je exact wat jij net beschreef.

stukje relevante tcl :
Tcl:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    regexp {^calc(|to [^ ]+) ([0-9a-z,+*/.%~!<>()=&^|?: -]*)$} $arg full towhom
    if {[info exists term] && ![catch "expr $term" value]} {
            set reply "$term = $value"                      
            if {[info exists towhom] && ([string first "to " $towhom]==0)} {
                putmsg [string range $towhom 3 end] $reply
                set calc_type msg
            }                    
    } else { 
            
    regexp {^calc ([^=]+)\=(.*)$} $arg full lhs rhs
    if {[info exists lhs]} {

        set lhs [string trim [string toupper $lhs]]
        set rhs [string trim $rhs]
        if {$debug_calc} {
            putlog "main_calc - full='$full', lhs='$lhs', rhs='$rhs'"
        }

God, root, what is difference? | Talga Vassternich | IBM zuigt


  • spokey
  • Registratie: November 2000
  • Laatst online: 14-08 07:56
Ik zal us kijken of ik met die guide wat verder kom, maar je hebt bij toeval dat script niet meer zeker, want het calc script dat ik al geprobeerd heb komt met error naar error op de proppen :(

MHI SCM60ZS-W, 1x SRK35ZS-WF, 2x SRK25ZS-WF

Pagina: 1