Ich starte einen IRC-Bot, geschrieben in Ruby, mit dem Cinch-IRC-Framework. Der Bot antwortet mit interessanten Fakten und durchläuft diese Fakten, damit Sie sich nicht langweilen. Ich habe eine Abkühlung eingestellt, so dass sie 6 Stunden lang nicht gezeigt werden können. Anstatt die Tatsachen zu zeigen, die es zuerst zeigte, zeigt es jetzt zufällig ausgewählte, die die früher gezeigten sein konnten.Variable ändern, bis sie richtig ist (wenn, sonst)
line = IO.readlines("facts.txt")
factnumber = rand(line.length)
if fact_not_next_6_hours[factnumber] == true
factnumber = rand(line.length)
m.reply "fact #{factnumber}: #{line[factnumber]}"
fact_not_next_6_hours[factnumber] = true
fact_not_next_6_hours[factnumber]
ist die Variable, für die 6 Stunden Abkühlzeit; Wenn es auf True gesetzt ist, ist Cool Down aktiv. Ich muss tun:
factnumber = rand(line.length)
, bis er eine bekommt, die die 6 Stunden haben dosen't Abkühlphase auf true gesetzt, und dann tun
m.reply "fact #{factnumber}: #{line[factnumber]}"
fact_not_next_6_hours[factnumber] = true
Meine erste Idee mehrere if
s zu tun war, aber es hat nicht funktioniert und ich bin mir sicher, dass es einen besseren Weg gibt.
Das scheint zu funktionieren! Vielen Dank. Ich ging mit der 2. Lösung, es ist so sauber und schön – qwerty1911
wenn alle Fakten verwendet werden, wird dies in einer Endlosschleife enden – psyho
Ich bin bewusst der Endlosschleife, aber der Kanal hat rund 680 Fakten, so sollte es in Ordnung sein.Ich plane auch eine "sofortige Abkühlung" hinzuzufügen – qwerty1911