You can certainly have the script run every so often (based on number of ticks, unpaused ticks, days, months, or years) and check,
but that would kill your framerate. I don't think there's an event for the announcements yet, but it should be possible.
Edit: it probably wouldn't kill your framerate. You can do something like this:
where functionName checks the announcements list for the event you want. Make sure to reregister the function inside it or it'll only get called once.