WIM (WoW Instant Messenger) v3

Note from MysticalOS: I am looking for someone who wants to take WIM over. It's become a higher and higher amount of stress to upkeep and has gotten to point where it's too much work to even keep it FUNCTIONAL let alone actually try to improve it any. WIM is not a main project for me and is only something I do in free time here and there. My main focus is other projects that consume most of my time and I do not give WIM the attention it needs to be great again.

WIM (WoW Instant Messenger) is a World of Warcraft addon which brings an instant messenger feel to communication in game.

I created WIM over 2 years ago with the curiosity of creating an addon. Since then, WIM has evolved into what it is today, however so many requests from the community were added into the addon which resulted in bulky and inefficient coding practices that took a toll on both CPU and Memory usage. To resolve this, I decided to rewrite WIM from scratch. Each feature is being reintroduced one at a time and being advanced upon. That being said, I welcome you to WIM 3.0.


  • Whispers in their own windows.
  • Chat in their own windows.
  • Tabbed windows
    • Highly configurable.
  • History
    • Copy and paste as:
      • Raw Text
      • BBCode
  • Advanced, intellectual window behaviors & animations.
  • Skins
  • Emoticons
  • Clickable web URLS for easy viewing. No more retyping a long url a friend sends you.
  • Customizable sound options.
  • Expose - great way to clear your screen of windows when you are in combat.
  • Addon Compatibility: (Always make sure you are running the latest versions.
    • Prat
    • DBM

Video Demo

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of Andraste3 Andraste3 Apr 22, 2013 at 05:57 UTC - 0 likes

    This is a great addon, but there's one bug that's been, erm, bugging me: when I go back to look at my history, WIM incorrectly parses messages that were sent at the same time (think 2-3 WoW "paragraphs"). It doesn't seem to have a particular rhyme or reason, even though the log file will preserve the correct order of messages. Will it be possible to fix this?

  • Avatar of Krisshawnee Krisshawnee Apr 07, 2013 at 00:09 UTC - 0 likes

    I'm still getting a fading issue even though I'm up to date. I click on the window to type and it's staying faded (when it shouldn't be) then I click off (when it should fade) and it's brightening as though I'm typing.

    Last edited Apr 07, 2013 by Krisshawnee
  • Avatar of Road_Block Road_Block Mar 03, 2013 at 18:48 UTC - 0 likes

    @Rodriqo: Go

    Should be fixed in r366 alpha and later.

    Last edited Mar 03, 2013 by Road_Block
  • Avatar of Rodriqo Rodriqo Jan 20, 2013 at 15:54 UTC - 0 likes

    When I go to hit tab to cycle through whispers, I get the following error, and I apologize to the WIM staff in advanced if a work around has been posted that I had missed.

    Date: 2013-01-20 09:49:39
    ID: 1
    Error occured in: Global
    Count: 1
    Message: ..\FrameXML\ChatFrame.lua line 3946:
       bad argument #1 to 'strupper' (string expected, got nil)
       [C]: ?
       [C]: strupper()
       ..\FrameXML\ChatFrame.lua:3946: ChatEdit_GetNextTellTarget()
       WIM\Sources\WindowHandler.lua:1874: fun()
    (*temporary) = nil
    (*temporary) = "string expected, got nil"
      Swatter, v4.0.1 (<%codename%>)
      Cursor, v5.0.0.1
      ACP, v3.4.1 
      Align, v
      ButtonFacade, v5.0.389
      clcppb, v
      CLCRet, v
      Clique, vv50100-1.0.0
      CTCore, v5.0004
      CTMailMod, v5.0003
      CTMapMod, v5.0004
      DBMCore, v
      Dominos, v5.1.1
      DominosConfig, v
      DominosRoll, v
      DominosXP, v
      ErrorFilter, v2.7
      Fatality, v2.3c
      FerousMedia, v1.6
      Grid, v5.1.0.1553
      gridautosizelayout, v
      GridConfigIcons, v50100-1
      GridIndicatorCornerIcons, v50100-1
      GridIndicatorCornerPlus, v50100-1
      GridIndicatorSideIcons, v50100-1
      GridIndicatorSidePlus, v50100-1
      GridIndicatorText3, v50100-1
      GridManaBars, v1.04
      GridStatusDungeonRole, v1.2.2
      GridStatusHealTrace, v5.1.0.32
      GridStatusHots, v4.3.1b
      GridStatusRaidDebuff, v5.1
      GridStatusRaidIcons, v50100-1
      GridStatusRDMoP, v1.2
      GridStatusThreat, v50100-1
      Masque, v5.1.389
      MasqueSleek, v4.3.0
      MoncaiHLI, v5.0.4
      NuttyRecruit, v6
      Omen, v3.1.7
      OmniCC, v5.1.2
      oRA3, v
      Quartz, v3.1.1
      Raven, v
      Recount, v
      sct, v6.62
      sctd, v6.61
      SexyMap, v2.4
      ShadowedUnitFrames, vv3.7.4
      SharedMedia, v3.0.5-183
      SharedMediaRenaitre, v4.3.3
      SharedMediaAdditionalFonts, v1.0.13
      SlideBar, v4.0.1 (<%codename%>)
      SuperGuildInvite, v6.3
      TidyPlates, v6.8.0 (R556)
      TidyPlatesGraphite, v
      TidyPlatesGrey, v
      TidyPlatesNeon, v
      TidyPlatesQuatre, v
      TidyPlatesHub, v
      TidyPlatesWidgets, v
      TipTac, v12.10.30
      TipTacItemRef, v12.08.30
      TipTacTalents, v12.09.05
      WeakAuras, v1.4.7.8
      WIM, v3.6.4
      XLoot, v0.91.7
      XLoot10, vz34-release
      XLootGroup, vz15-repack-release
      BlizRuntimeLib_enUS v5.1.0.50100 <us>
  • Avatar of mysticalos mysticalos Jan 18, 2013 at 21:29 UTC - 0 likes

    that's because wim uses staticpopupdialog and there is no elegent way to avoid that taint :\. Only fix is to probably rewrite a lot of popups in wim to not use it. then you're just gonna find ace3 or another mod also using staticpopupdialog will just taint it instead. ultimately i wish blizz would come up with a solution that makes staticpopupdialog work, or just block it and force authors to change it.

  • Avatar of MorticiaNoire MorticiaNoire Jan 05, 2013 at 11:38 UTC - 0 likes

    hi, i cant register on the other web page you have.it says registration is disabled.

    anyhow, my problem i am having is that, when i click on a quest item icon in the list of objectives next to a quest, i get a message saying wim has interfered and i have an option to disable wim.it doesnt generate a lua error. i can use the item in my bag still.this doesnt happen on all chars though so i am nto sure if another addon is interfering but it is hard to tell.

  • Avatar of mysticalos mysticalos Dec 27, 2012 at 21:58 UTC - 0 likes

    WoWEye, i seen that before. somehow your history got corrupt. clear history will fix that. no idea why that happens though.

  • Avatar of WoWEye WoWEye Dec 16, 2012 at 04:40 UTC - 0 likes

    I clicked on the button on the message window to view message history of a Real ID and got this error:
    Date: 2012-12-15 21:20:32
    ID: 1
    Error occured in: Global
    Count: 1
    Message: ..\AddOns\WIM\Modules\History.lua line 1041:
       attempt to get length of local 'tbl' (a nil value)
       WIM\Modules\History.lua:1041 UpdateConvoList()
       WIM\Modules\History.lua:1004 SelectConvo()
       WIM\Modules\History.lua:1363 ShowHistoryViewer()
    self = nil
    realm = "Borean Tundra"
    character = "Megapixel"
    tbl = nil
    (*temporary) = 1
    (*temporary) = "Megapixel"
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = nil
    (*temporary) = "attempt to get length of local 'tbl' (a nil value)"
    win = WIM3_HistoryFrame {
     CONVO = "|Kf99|kWilliam Rice Jr|k"
     UpdateUserList = <function> defined @Interface\AddOns\WIM\Modules\History.lua:1058
     USERLIST = <table> {
     UpdateDisplay = <function> defined @Interface\AddOns\WIM\Modules\History.lua:1009
     nav = <unnamed> {
     progressBar = <unnamed> {
     resize = <unnamed> {
     USER = "Borean Tundra/Megapixel"
     FILTER = ""
     0 = <userdata>
     FILTERLIST = <table> {
     SelectConvo = <function> defined @Interface\AddOns\WIM\Modules\History.lua:996
     search = <unnamed> {
     TAB = 1
     UpdateConvoList = <function> defined @Interface\AddOns\WIM\Modules\History.lua:1034
     SEARCHLIST = <table> {
     close = WIM3_HistoryFrameClose {
     title = WIM3_HistoryFrameTitle {
     filter = <table> {
     CONVOLIST = <table> {
     displayUpdate = <unnamed> {
     content = <unnamed> {
     UpdateFilterList = <function> defined @Interface\AddOns\WIM\Modules\History.lua:1015
    string = <table> {
     split = <function> defined =[C]:-1
     match = <function> defined =[C]:-1
     gmatch = <function> defined =[C]:-1
     upper = <function> defined =[C]:-1
     gsub = <function> defined =[C]:-1
     format = <function> defined =[C]:-1
     lower = <function> defined =[C]:-1
     sub = <function> defined =[C]:-1
     gfind = <function> defined =[C]:-1
     rep = <function> defined =[C]:-1
     join = <function> defined =[C]:-1
     char = <function> defined =[C]:-1
     rtgsub = <function> defined @Interface\FrameXML\RestrictedInfrastructure.lua:610
     concat = <function> defined =[C]:-1
     reverse = <function> defined =[C]:-1
     byte = <function> defined =[C]:-1
     trim = <function> defined =[C]:-1
     len = <function> defined =[C]:-1
     find = <function> defined =[C]:-1
    table = <table> {
     setn = <function> defined =[C]:-1
     insert = <function> defined =[C]:-1
     getn = <function> defined =[C]:-1
     foreachi = <function> defined =[C]:-1
     maxn = <function> defined =[C]:-1
     foreach = <function> defined =[C]:-1
     concat = <function> defined =[C]:-1
     removemulti = <function> defined =[C]:-1
     sort = <function> defined =[C]:-1
     wipe = <function> defined =[C]:-1
     remove = <function> defined =[C]:-1
    pairs = <function> defined =[C]:-1

      Swatter, v5.15.5380 (LikeableLyrebird)
      ACP, v3.4.1
      Altoholic, v5.1.001
      AraBrokerGuildFriends, vr55
      Auctionator, v3.1.0
      Babylonian, v5.1.DEV.332(/embedded)
      BlizzMove, vv1.2.5
      BrokerProfessionsMenu, v
      BrokerMounts, v5.04
      Configator, v5.1.DEV.344(/embedded)
      ControlFreak, v3.0.3.15
      CTBarMod, v5.0101
      CTBottomBar, v5.0101
      CTCore, v5.0101
      CTMailMod, v5.0101
      DataStore, v5.1.001
      DataStoreAchievements, v5.1.001
      DataStoreAgenda, v5.1.001
      DataStoreAuctions, v5.1.001
      DataStoreCharacters, v5.1.001
      DataStoreContainers, v5.1.001
      DataStoreCrafts, v5.1.001
      DataStoreCurrencies, v5.1.001
      DataStoreInventory, v5.1.001
      DataStoreMails, v5.1.001
      DataStorePets, v5.1.001
      DataStoreQuests, v5.1.001
      DataStoreReputations, v5.1.001
      DataStoreSpells, v5.1.001
      DataStoreStats, v5.1.001
      DataStoreTalents, v5.1.001
      DBMCore, v
      DBMLDB, v
      DBMWorldEvents, v
      DebugLib, v5.1.DEV.337(/embedded)
      DropTheCheapestThing, vv3.6.2
      Enchantrix, v5.15.5380 (LikeableLyrebird)
      FBTitan, v1.0.8
      FBTrackingFrame, v1.2d
      FishingBuddy, v1.2f
      FlightMap, v5.0.3
      Gatherer, v4.1.0
      GFWFactionFriend, v5.0
      GTFO, v4.18.1
      Informant, v5.15.5380 (LikeableLyrebird)
      LibExtraTip, v5.12.DEV.342(/embedded)
      LightHeaded, v356
      LightHeadedDataA, v356
      LightHeadedDataE, v356
      LightHeadedDataQIDNames, v356
      Mapster, v1.5.1
      Mendeleev, v3.0
      OneBag3, vv3.4.8
      Overachiever, v0.70
      OverachieverTabs, v0.70
      OverachieverTrade, v0.70
      QuestHubber, v
      QuestHubberAzeroth, v
      QuestHubberCataclysm, v
      QuestHubberDaily, v
      QuestHubberNorthrend, v
      QuestHubberOutland, v
      QuestHubberPandaria, v
      Recount, v
      SlideBar, v5.15.5380 (LikeableLyrebird)
      Stubby, v5.15.5380 (LikeableLyrebird)
      SwindlerPreventer, v5.0.1 (15799) BETA
      TipHelper, v5.12.DEV.343(/embedded)
      Titan, v5.1.10.50100
      TitanClock, v5.1.10.50100
      TitanGold, v5.1.10.50100
      TitanLootType, v5.1.10.50100
      TitanRepair, v5.1.10.50100
      TitanVolume, v5.1.10.50100
      URNotePad, v5.1.0
      WIM, vr357
      XLoot10, vz35-beta
      XPerl, v3.6.15
      XPerlArcaneBar, v
      XPerlParty, v
      XPerlPartyPet, v
      XPerlPlayer, v
      XPerlPlayerPet, v
      XPerlTarget, v
      XPerlTargetTarget, v
      BlizRuntimeLib_enUS v5.1.0.50100 <us>

  • Avatar of Road_Block Road_Block Dec 03, 2012 at 15:10 UTC - 1 like

    @Jockelino: Go

    Well I'm not going to keep posting the same info in 3 different places.
    You don't need a self-modified / fan modified / "any" modified version.

    Use the latest alpha and make sure you have "Instance Chat" module enabled.

    If you want WIM to capture all group chat, you need "Raid", "Party" and "Instance" chat modules enabled.

    That user modification suggested btw, you might as well just remove that whole block of code, it's not doing what you think it does.
    '=' is an assignment operator, meaning it takes what's on the right side of it and puts it on the left side.
    '==' is an equality operator, meaning it compares what's on the right side to what's on the left side and returns the result (true for isequal, false for not equal)
    The replacement suggested was:

    if UnitExists = nil and UnitExists("party"..i) or _G.UnitExists = nil and _G.UnitExists("party"..i) then

    What this says in plain English is:
    "nil the local UnitExists function then check if nil("party"..i)
    or nil the global UnitExists() function and then check if nil("party"..i)"

    Do I really need to explain how bad it is to nuke game functions like that?
    The side-effect of that line of code is that the whole 'if ... then' block is always nil and never runs, like I said if you want to modify it just delete it instead of breaking game API for all addons.

    Edit: I checked his original post a couple comment-pages back and he was actually testing for inequality ~= which is better but that modification is not needed for the latest alphas.
    The problem with the original code was that WIM uses its own environment space, meaning it needed to pickup the global function through _G. instead of relying on an implicit global lookup.
    If that's too technical to understand, that's ok, just keep that the original problem has been fixed.

    Last edited Dec 03, 2012 by Road_Block
  • Avatar of Jockelino Jockelino Dec 03, 2012 at 09:30 UTC - 0 likes

    Well i blocked this ;) i did what Mw999 said changed the <WoW Folder>\Interface\AddOns\WIM\Modules\ChatEngine.lua on line 478.

    And wim worked for 3 days until 5.1

    Still works decent only raids i get tons of errors " soemtimes" i raided twice and first time i got so many error in short time, i got message saying to many errors, i turned it off.

    enabled again after the raid and i could raid with it next time dont think i had any errors then.

    for me it works atm, however sometime i get errors i disable it.

    I use self-modifyed r344.

Table of contents

  1. 1 Features
  2. 2 Video Demo


Date created
Jul 28, 2008
Last update
Aug 25, 2016
Development stage
  • enUS
All Rights Reserved
Curse link
WIM (WoW Instant Messenger) v3
Recent files
  • A: r516 for 7.0.3 Aug 25, 2016
  • A: r515 for 7.0.3 Aug 16, 2016
  • A: r514 for 7.0.3 Aug 16, 2016
  • A: r513 for 7.0.3 Aug 16, 2016
  • A: r512 for 7.0.3 Aug 16, 2016