Pretty sure Communities have MOTD (called Broadcast in blizzard terms).
Code:
function CommunitiesChatMixin:AddBroadcastMessage(clubId)
local clubInfo = C_Club.GetClubInfo(clubId);
if clubInfo and clubInfo.broadcast ~= "" then
if self.broadcastSent[clubId] == clubInfo.broadcast then
return;
end
self.MessageFrame:AddMessage(" ");
self.MessageFrame:AddMessage(COMMUNITIES_MESSAGE_OF_THE_DAY_FORMAT:format(clubInfo.broadcast), YELLOW_FONT_COLOR:GetRGB());
self.broadcastSent[clubId] = clubInfo.broadcast;
end
end
And in game calendar has been a thing for a years, which should work with communities.