Anything doable in Blizzard's own LUA engine is not prohibited by the ToU. Period.
EDIT: OT:
Code:
local a = CreateFrame("Frame")
a:Hide()
a:SetScript("OnUpdate", function(self,elapsed)
self.elapsed = (self.elapsed or 0)+elapsed
if self.elapsed >= self.timer then
SendChatMessage(self.message, self.channel, nil, self.data)
self.elapsed = 0
end
end)
SlashCmdList["REPEATCHAT"]=function(input)
if input:lower() == "stop" then a:Hide() return end
local message, delay, channel, data = input:match("\"(.+)\"%s+(%d+)%s+(%S+)%s*(%S*)")
if (not message) or (not delay) or (not channel) then
print("Proper syntax: "<message>" <delay> <channel>( <chandata>)")
return
end
a.timer = tonumber(delay)
a.message = message
a.channel = channel:upper()
a.data = data
a.elapsed = 0
a:Show()
end
SLASH_REPEATCHAT1="/repeatchat"
SLASH_REPEATCHAT2="/repeat"
How to use. Untested. Tested and working. Report back with issues.
Make into an addon as linked above, then type
Code:
/repeatchat "message" 300 CHANNEL 2
in-game. 300 is the seconds, 2 is the channel index. Make sure you have quotes around your message.