maybe do
on *:disconnect:{ .hsave learn $qt($scriptdirlearn.hsh) }
on *:exit:{ .hsave learn $qt($scriptdirlearn.hsh) }
on *:start:{ if (!$hget(learn)) { .hmake learn 100 | .hload learn $qt($scriptdirlearn.hsh) } }
on *:load:{ if (!$hget(learn)) { .hmake learn 100 | .hload learn $qt($scriptdirlearn.hsh) } }
on $*:text:/^~(learn|forget|factoid)\s(\w+)\s?(\w.+)?/iS:#: {
if (!$($+(%,factoidflood,$nick),2)) {
set -u3 $+(%,factoidflood,$nick) on
if ($regml(1) == learn && $regml(3) && !$hget(learn,$regml(2))) { hadd -m learn $regml(2) $regml(3) | msg # the factoid has been saved. }
if ($regml(1) == forget && $hget(learn,$regml(2))) { hdel learn $regml(2) | msg # the factoid $regml(2) has been deleted. }
if ($regml(1) == factoid && $hget(learn,$regml(2))) { msg # $hget(learn,$regml(2)) }
}
}