Prat 3.0
In loving memory of Jon Akthar (Sylvanaar)
Hello WoW community, I'm LuciferCatnip, Sylvanaar was my coworker and my mentor. It goes without saying that Jon was an amazingly talented individual. He always seemed to know everything… but he once said to me "It's not about knowing the answers, it's about asking the right questions", he always challenged me to ask me the right questions until I would arrive at the answer on my own terms. Jon was also a champion of the open source movement, and so with special thanks to Gil from Curseforge as well as Sylvanaar's family, there's no better way to honor Sylvanaar's legacy than to keep his project going strong in the community.
If you'd like to help maintain Prat, please reach out to MysticalOS or LuciferCatnip directly. Thank you so much.
About
Prat-3.0 is a chat enhancement addon for World of Warcraft.
It is made up of 30+ smaller "modules" which each provide additional functionality, and can be enabled or disabled individually.
In game, type /prat for a menu. Or use the icon on one of the many data broker hosts.
Prat has just about every feature you can think of, and then some. Really. When I get some more time, I'll try and put together a full list (Even I have lost count)
(Thanks to Dreamsight for this partial list)
- Sync your chat settings across your account (Beta)
- Machine learning powered spam filter (Beta)
- Change arrows, buttons, mouse scroll for chat scroll, scroll speed
- you can add player color per channel, color per level, color per class
- timestamps (styled)
- whether to show timestamp (what format the timestamp should be in)
- whether to show players level
- you can select the option for channel "stickys" (last channel you used you auto use when hitting enter, that sort of thing – or last thing someone said)
- change the looks of the chat's editbox - as well as where it appears (you can even undock it and move it to where you'd like it to be)
- chat fading, fading delay
- You can change the font to a list of fonts, add an outline to it, monochrome it (if you don’t mind messing with files a bit you could probably even add other fonts to that list)
- change the chat frame/chat box appearance
- Keep chat history between game sessions
- Set channel abbreviations
- set brackets and color(or something instead of brackets)round player/lvl
- alt invite option (press keyboard “alt” button and click on the player’s name to auto inv them)
- raid icon
- invite links - click them to invite the person
- URL copying
- Full chat copying + copy button
- Click timestamp to copy line
- Configurable alerts when your name or other word is mentioned
- enables tell target /tt which whispers your target
- Alias options - make macros into short commands
- See names of players Alt characters
- change chat sounds (incoming and outgoing as well as per channel)
- Achievements info and grats
- Full chat search and search box
- Customizable filters for advanced users
- Show item icon next to item links and player class icon next to player names
- Icon-only options for newcomers chat
- Optional flashing or font color change for chat tabs when a new message comes in.
You can enable/disable all Prat modules - don't have to have the ones you don't use running
While trying to reduce resource utilization, it is also important to note that some people prefer the features, and don't care that an addon uses 500k more.

-
View User Profile
-
Send Message
Posted Jun 10, 2020In reply to merikkinon:
At any particular time? I have been opening chat windows a lot recently in order to test the new Memory module, and it isn't happening to me.
If you can see what might be triggering it that would really help
-
View User Profile
-
Send Message
Posted Jun 12, 2020In reply to sylvanaar:
I would say it is entirely located in the addon, because I disabled them all but Prat and it is still happening.
-
View User Profile
-
Send Message
Posted Jun 12, 2020In reply to merikkinon:
I see now. Thanks. It is fixed in alpha and will be in the next release
-
View User Profile
-
Send Message
Posted Jun 12, 2020In reply to merikkinon:
Me too, the chat line used to be canceled with Esc. If even to send it you need to click in-to it.
This happens if I start a new line and get distracted and open a different overlay in-game, which happens a lot.
If I'm not mistaken, control is handed over to the new overlay and the opened chat line is forgotten. It used to *not* relinquish control to the overlay (hmmm.. I neglected to check for an overlay setting).
It is different though.
-
View User Profile
-
Send Message
Posted Jun 12, 2020In reply to merikkinon:
In reply to merikkinon:
Me too, the chat line used to be canceled with Esc. If even to send it you need to click in-to it.
This happens if I start a new line and get distracted and open a different overlay in-game, which happens a lot.
If I'm not mistaken, control is handed over to the new overlay and the opened chat line is forgotten. It used to *not* relinquish control to the overlay (hmmm.. I neglected to check for an overlay setting).
It is different though.
-
View User Profile
-
Send Message
Posted Jun 12, 2020In reply to merikkinon:
Me too, the chat line used to be canceled with Esc. If even to send it you need to click in-to it.
This happens if I start a new line and get distracted and open a different overlay in-game, which happens a lot.
If I'm not mistaken, control is handed over to the new overlay and the opened chat line is forgotten. It used to *not* relinquish control to the overlay (hmmm.. I neglected to check for an overlay setting).
It is different though.
-
View User Profile
-
Send Message
Posted Jun 12, 2020In reply to merikkinon:
Me too, the chat line used to be canceled with Esc. If even to send it you need to click in-to it.
This happens if I start a new line and get distracted and open a different overlay in-game, which happens a lot.
If I'm not mistaken, control is handed over to the new overlay and the opened chat line is forgotten. It used to *not* relinquish control to the overlay (hmmm.. I neglected to check for an overlay setting).
It is different though.
-
View User Profile
-
Send Message
Posted Jun 9, 2020hi, why does your addon add freezes to the game?
wow classic, wow bfa
-
View User Profile
-
Send Message
Posted Jun 9, 2020In reply to QeeWIGames:
Where, how? I don't experience any.
You can try turning down some settings. In particular Playername: Color Names Everywhere
-
View User Profile
-
Send Message
Posted Jun 9, 2020Currently no longer have a 'scroll up' button on my chat screen.
-
View User Profile
-
Send Message
Posted Jun 8, 2020The addon is causing stuttering when there is a pull timer or after a few arena games(chat spam). What may be causing this?
-
View User Profile
-
Send Message
Posted Jun 9, 2020In reply to spunkygg:
I am not sure. I would need to capture some information so I can fix it - but how many messages would you say there are?
One culprit may be the PlayerNames: Color Names Everywhere option.
Can you try toggling it off - and reloading your UI. Let me know if that solves the issue
If you can give me enough details that I can repeat the problem myself that would be great too.
-
View User Profile
-
Send Message
Posted Jun 8, 2020something in this addon is preventing the return of chat tab names i think,havea simple addon that send ah messages to a chat tab named "AH" and surpresses it for allothers,with prat enabled it surpresses but does not send to "AH" tab
-
View User Profile
-
Send Message
Posted Jun 8, 2020In reply to Nirran00:
How does it work? Maybe some source showing how you filter and redirect the messages
-
View User Profile
-
Send Message
Posted Jun 8, 2020In reply to sylvanaar:
simple code,here si the entire addon
-- This file is loaded from "AuctionHouseMessages.toc" -- this addon will redirect auction system messages to a temporary -- chat tab named "AH" local tabName = "AH" -- name for temporary tab -- fill auctionStrings with pattern matches for auction events auctionStrings = {} for k,v in pairs({ -- delete any lines here you don't want redirected ERR_AUCTION_EXPIRED_S, -- "Your auction of %s has expired." ERR_AUCTION_OUTBID_S, -- "You have been outbid on %s." ERR_AUCTION_REMOVED_S, -- "Your auction of %s has been cancelled by the seller." ERR_AUCTION_SOLD_S, -- "A buyer has been found for your auction of %s." ERR_AUCTION_WON_S, -- "You won an auction for %s" ERR_AUCTION_BID_PLACED, -- "Bid accepted." ERR_AUCTION_REMOVED, -- "Auction cancelled." ERR_AUCTION_STARTED, -- "Auction created." }) do v = v:gsub("%.","%%."):gsub("%%s",".-") tinsert(auctionStrings,v) end -- returns the Auctions temporary chat tab if it exists -- if create is true, creates one if needed local function getAuctionTab(create) -- look for existing tab with "Auctions" as a name for _,name in pairs(CHAT_FRAMES) do local frame = _G[name] if frame.name == tabName then return frame end end -- none found if create then local frame = FCF_OpenTemporaryWindow("SYSTEM") FCF_SetWindowName(frame,tabName) return frame,true end end -- returns true if msg matches any of the known auctionStrings local function hasAuctionText(msg) for i=1,#auctionStrings do if msg:match(auctionStrings[i]) then return true end end end -- this chat filter only runs for CHAT_MSG_SYSTEM local function filter(self, event, msg, ...) if hasAuctionText(msg) then local auctionTab,justCreated = getAuctionTab(true) if self==auctionTab then return false,msg,... -- pass auction chats to auction tab else -- auction chat going to non-auction tab if justCreated then -- if just created an auction tab, manually add the creating auction message local color = ChatTypeInfo["SYSTEM"] auctionTab:AddMessage(msg,color.r,color.g,color.b) end return true -- suppress auction chats to non-auction tabs end elseif self==getAuctionTab() then return true -- suppress non-auction chats to auction tab end -- everything else pass as if nothing happened return false,msg,... end -- create filter ChatFrame_AddMessageEventFilter("CHAT_MSG_SYSTEM",filter)-
View User Profile
-
Send Message
Posted Jun 8, 2020In reply to Nirran00:
In reply to Nirran00:
In your code where you test self == getAuctionTab()
Instead write self:GetName() == getAuctionTab():GetName()
That will solve your problem. Don't compare the frames directly - use the names. Prat has a proxy frame that it passes in that is breaking your object equality/
-
View User Profile
-
Send Message
Posted Jun 8, 2020In reply to sylvanaar:
tyvm for the help and also for the awesome addon prat,did as u said and it works :)
-
View User Profile
-
Send Message
Posted Jun 8, 2020CopyChat doesnt work for me at all. Cause that LUA error:
3x Prat-3.0-3.8.14\modules\CopyChat.lua:749: attempt to call method 'gsub' (a nil value)
Prat-3.0-3.8.14\modules\CopyChat.lua:749: in function <Prat-3.0\modules\CopyChat.lua:748>
Prat-3.0-3.8.14\modules\CopyChat.lua:789: in function `DoCopyChat'
Prat-3.0-3.8.14\modules\CopyChat.lua:737: in function `ScrapeChatFrame'
Prat-3.0-3.8.14\modules\CopyChat.lua:846: in function <Prat-3.0\modules\CopyChat.lua:836>
Locals:
text = <table> {
message = "|cff33ff99Postal|r: Collected 15|TMoneyFrame\UI-SilverIcon:0:0:2:0|t 82|TMoneyFrame\UI-CopperIcon:0:0:2:0|t"
timestamp = 26385.658000
}
(*temporary) = nil
(*temporary) = <table> {
message = "|cff33ff99Postal|r: Collected 15|TMoneyFrame\UI-SilverIcon:0:0:2:0|t 82|TMoneyFrame\UI-CopperIcon:0:0:2:0|t"
timestamp = 26385.658000
}
(*temporary) = "|K[^|]-|k"
(*temporary) = "<BNET REMOVED>"
(*temporary) = "attempt to call method 'gsub' (a nil value)"
-
View User Profile
-
Send Message
Posted Jun 8, 2020In reply to GregoryWW:
Thanks - don't know how this was missed.
It is fixed in the next release. Until then - just CTRL-CLICK on the copy button as a workaround.
-
View User Profile
-
Send Message
Posted Jun 9, 2020In reply to sylvanaar:
No problem, you doing a great job! Using Prat since vanilla :) Only those who do nothing make no mistakes.