mSL は初めてで、ボットを作ろうとして遊んでいるだけです。だから私は、ユーザーが特定の単語を言うと、自分の名前に対して +1 カウントされるようなものを作ろうとしています。ただし、その単語をもう一度言って無制限に回数を増やすことはできません。新しい単語を見つけなければなりません。
単語を複数回使用できないようにするために、単語をファイルに書き込んでいます。次に、これらの単語をロードし、ユーザーが言ったことに対して既に発言されているかどうかを確認し、適切に行動する必要があります。
on *:TEXT:&:#:{
var %msg
if ($1 == text1) { %msg = msg1 }
elseif ($1 == text2) { %msg = msg2 }
elseif ($1 == text3) { %msg = msg3 }
else { return }
msg # %msg
var %keyword = $readini(keyword.ini,#,$nick)
if (%keyword == $1) {
msg # you already have this keyword! :(
}
else {
var %count = $readini(cookies.ini,#,$nick)
inc %count
writeini cookies.ini # $nick %count
writeini keyword.ini # $nick %keyword $+ , $+ $1
}
}
keyword.ini ファイルは次のようになります。
nickname=text1,text2
mSL には、リストを取得して (上記のコードで既に実行済み)、.split(,) に似たものを使用して単語を分割し、for/next を実行できるものはありますか?
前もって感謝します
編集: 私は以下を試してみましたが、うまくいきました! 次に、ファイルを削除してテストしましたが、writeini にもかかわらずファイルを再作成することはありませんでした。スクリプトの先頭に writeini keyword.ini を追加して、テキストが書き込まれる前にファイルが存在することを確認しましたが、それでも作成されませんでした。
on *:TEXT:&:#:{
var %msg
if ($1 == text1) { %msg = msg1 }
elseif ($1 == text2) { %msg = msg2 }
elseif ($1 == text3) { %msg = msg3 }
else { return }
msg # %msg
var %i = 1, %keyword = $readini(keyword.ini,n,$chan,$nick), %cookie = $readini(cookies.ini,n,#,$nick)
while (%i <= $numtok(%keyword, 44)) {
if ($istok(%keyword, $1, 44)) {
msg # you already have this keyword! :(
}
else {
inc %cookie
writeini cookies.ini $chan $nick %cookie
msg # congrats! you found a keywords
writeini keyword.ini $chan $nick $addtok(%keyword, $1, 44)
}
inc %i
}