136 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			136 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
--[[
 | 
						|
UI ChatFrame:AddChannel(chatFrame, "channelName") - Activate channel in chatFrame. 
 | 
						|
UI ChatFrame:AddMessageEventFilter("event", filterFunc) - Add a chat message filtering function (added 2.4) 
 | 
						|
UI ChatFrame:GetMessageEventFilters("event") - Retreive the list of chat message filtering functions. (added 2.4) 
 | 
						|
UI ChatFrame:OnHyperlinkShow(reference, link, button) - called when the user clicks on a chatlink. 
 | 
						|
UI ChatFrame:RemoveMessageEventFilter("event", filterFunc) - Unregister a chat message filtering function (added 2.4) 
 | 
						|
]]
 | 
						|
 | 
						|
--[[
 | 
						|
/run ChatFilter.Words[#ChatFilter.Words + 1] = "roar"
 | 
						|
/dump ChatFilter.Words
 | 
						|
/dump ChatFilter.RemovedLines
 | 
						|
 
 | 
						|
/fr
 | 
						|
/fa
 | 
						|
/fu
 | 
						|
--]]
 | 
						|
 | 
						|
print("POGGIES")
 | 
						|
 | 
						|
SLASH_FADD1 = "/fadd"
 | 
						|
SLASH_FADD2 = "/fa"
 | 
						|
SlashCmdList["FADD"] = add
 | 
						|
 | 
						|
SLASH_FREMOVE1 = "/fremove"
 | 
						|
SLASH_FREMOVE2 = "/fr"
 | 
						|
SlashCmdList["FREMOVE"] = cleanse
 | 
						|
 | 
						|
SLASH_FUPDATE1 = "/fupdate"
 | 
						|
SLASH_FUPDATE2 = "/fu"
 | 
						|
SlashCmdList["FUPDATE"] = function(msg)
 | 
						|
    cleanse()
 | 
						|
    add()
 | 
						|
end
 | 
						|
 | 
						|
local chatEvents = {
 | 
						|
    "CHAT_MSG_SAY",
 | 
						|
    "CHAT_MSG_RAID",
 | 
						|
    "CHAT_MSG_YELL",
 | 
						|
    "CHAT_MSG_PARTY",
 | 
						|
    "CHAT_MSG_GUILD",
 | 
						|
    "CHAT_MSG_WHISPER",
 | 
						|
    "CHAT_MSG_CHANNEL",
 | 
						|
}
 | 
						|
 | 
						|
if not ChatFilter then ChatFilter = {} end
 | 
						|
if not ChatFilter.People then ChatFilter.People = {} end
 | 
						|
if not ChatFilter.Words then ChatFilter.Words = {} end
 | 
						|
if not ChatFilter.RemovedLines then ChatFilter.RemovedLines = {} end
 | 
						|
if not ChatFilter.RemovedCommon then ChatFilter.RemovedCommon = {} end
 | 
						|
 | 
						|
--Own filter
 | 
						|
local function myChatFilter(self, e, msg, author, lang)
 | 
						|
    print(msg, author, lang)
 | 
						|
 | 
						|
    local function getDate()
 | 
						|
        local date = date()
 | 
						|
        local year = date:match("%d%d%/%d%d/(%d%d)") + 2000 --01/07/(19) 14:36:42
 | 
						|
        local month = date:match("(%d%d)") --(01)/07/19 14:36:42
 | 
						|
        local day = date:match("%d%d%/(%d%d)") --01/(07)/19 14:36:42
 | 
						|
        --Remove first place zeros
 | 
						|
        if day:find("0") == 1 then
 | 
						|
            day = day:gsub("0", "")
 | 
						|
        end
 | 
						|
        if month:find("0") == 1 then
 | 
						|
            month = month:gsub("0", "")
 | 
						|
        end
 | 
						|
        local localdate = day .. "." .. month .. "." .. year
 | 
						|
        return localdate
 | 
						|
    end
 | 
						|
    
 | 
						|
    local function getTime()
 | 
						|
        local date = date()
 | 
						|
        local localtime = date:match("%d%d%/%d%d%/%d%d%s(%d%d%p%d%d%p%d%d)")
 | 
						|
        return localtime
 | 
						|
    end
 | 
						|
    
 | 
						|
    author = author:match("(.+)-")
 | 
						|
    
 | 
						|
    --Remove Alliance
 | 
						|
    if lang == "Common" then
 | 
						|
        -- print("Caught one!")
 | 
						|
        ChatFilter.RemovedCommon[#ChatFilter.RemovedCommon + 1] = format("\[%s\]\[%s\]%s: %s", getDate(), getTime(), author, msg)
 | 
						|
        return true
 | 
						|
    end
 | 
						|
    
 | 
						|
    --Remove People
 | 
						|
    for k, v in pairs(ChatFilter.People) do
 | 
						|
        if author == v then
 | 
						|
            if e == "CHAT_MSG_WHISPER" and author ~= UnitName("player") then
 | 
						|
                SendChatMessage(format("Your message \"%s\" has been filtered out because I hate fun", msg), "WHISPER", nil, author)
 | 
						|
            end
 | 
						|
            ChatFilter.RemovedLines[#ChatFilter.RemovedLines + 1] = format("\[%s\]\[%s\]%s: %s", getDate(), getTime(), author, msg)
 | 
						|
            -- print("Caught one!")
 | 
						|
            return true
 | 
						|
        end
 | 
						|
    end
 | 
						|
    
 | 
						|
    --Remove Words
 | 
						|
    for k, v in pairs(ChatFilter.Words) do
 | 
						|
        if msg:match(v) then
 | 
						|
            if e == "CHAT_MSG_WHISPER" and author ~= UnitName("player") then
 | 
						|
                SendChatMessage(format("Your message \"%s\" has been filtered out because I hate fun", msg), "WHISPER", nil, author)
 | 
						|
            end
 | 
						|
            ChatFilter.RemovedLines[#ChatFilter.RemovedLines + 1] = format("\[%s\]\[%s\]%s: %s", getDate(), getTime(), author, msg)
 | 
						|
            -- print("Caught one!")
 | 
						|
            return true
 | 
						|
        end
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
--Remove all filters
 | 
						|
local function cleanse()
 | 
						|
    for k, v in pairs(chatEvents) do
 | 
						|
        if ChatFrame_GetMessageEventFilters(v) then
 | 
						|
            print(v, unpack(ChatFrame_GetMessageEventFilters(v)))
 | 
						|
            for k2, v2 in pairs(ChatFrame_GetMessageEventFilters(v)) do
 | 
						|
                ChatFrame_RemoveMessageEventFilter(v, v2)
 | 
						|
            end
 | 
						|
        end
 | 
						|
        print("Done?")
 | 
						|
        if ChatFrame_GetMessageEventFilters(v) then
 | 
						|
            print(unpack(ChatFrame_GetMessageEventFilters(v)))
 | 
						|
        end
 | 
						|
        print("Got it.")
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
--Add filter
 | 
						|
local function add()
 | 
						|
    for k, v in pairs(chatEvents) do
 | 
						|
        print("Adding filter to", v)
 | 
						|
        ChatFrame_AddMessageEventFilter(v, myChatFilter)
 | 
						|
    end
 | 
						|
end
 |