/
SimpleGroupTell.lua
56 lines (45 loc) · 2 KB
/
SimpleGroupTell.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
--[[
Copyright 2009 Quaiche of Dragonblight
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
local f = CreateFrame("frame")
f:SetScript("OnEvent", function(self, event, ...) if self[event] then return self[event](self, event, ...) end end)
f:RegisterEvent("ADDON_LOADED")
function f:ADDON_LOADED(event, addon)
if addon:lower() ~= "simplegrouptell" then return end
LibStub("tekKonfig-AboutPanel").new(nil, "SimpleGroupTell") -- Make first arg nil if no parent config panel
self:UnregisterEvent("ADDON_LOADED"); self.ADDON_LOADED = nil
end
-- Pre-Hook the ChatFrame1EditBox OnTextChanged script to change a /gr into something else
local orig = ChatFrame1EditBox:GetScript("OnTextChanged")
local function ChatFrameEditBox_OnTextChanged(self, isUserInput, ...)
if isUserInput ~= true then return end
local message = string.match( self:GetText(), "^/gr (.*)" )
if message then
local channel = "/s "
if IsInInstance() then channel = "/bg " end
if IsInRaid() then channel = "/ra "
elseif IsInGroup() then channel = "/p " end
self:SetText(channel..message)
ChatEdit_ParseText(self, 0)
end
if orig then orig(self, isUserInput, ...) end
end
ChatFrame1EditBox:SetScript("OnTextChanged", ChatFrameEditBox_OnTextChanged)
-- Including a proper slash handler as well for use with Macros.
SLASH_SIMPLEGROUPTELL1 = "/gr"
SlashCmdList.SIMPLEGROUPTELL = function(msg)
local channel = "SAY"
if IsInInstance() then channel = "BATTLEGROUND" end
if IsInRaid() then channel = "RAID"
elseif IsInGroup() then channel = "PARTY" end
SendChatMessage(msg, channel)
end