This has been done before. Use the search feature.
on !1:join:#chan1,#chan2:{
  var %x = $hget(welcomed. $+ $chan,0).item
  while (%x) {
    if ($hget(welcomed. $+ $chan,%x).item iswm $fulladdress) {
    dec %x
  hadd -mu1800 welcomed. $+ $chan $wildsite
  .notice $nick Welcome to $+($chan,!)

That will send a message once every 30 minutes, and match their hostmask instead of nickname. Of course, you'll need to change #chan1,#chan2 to your channel, and add it to your remotes (ALT + R).
You can change the "hadd -mu1800 ..." to "hadd -mu86400 ..." for 24 hours, etc. The number is in seconds, so you'll have to calculate it a bit to find the value.

Those who can, cannot. Those who cannot, can.