Есть ли способ получить последний чат массаж в крик или сказать? - PullRequest
0 голосов
/ 01 мая 2020

Я хочу найти в последнем сообщении несколько строк, а затем повторить сообщение, заменив эти строки другими строками.

Я искал несколько документов, но не нашел способа получить последнее сообщение , Это первый форум, который я спрашиваю, поскольку у меня уже есть аккаунт, поэтому у меня нет реальной отправной точки, чтобы дать вам.

Заранее спасибо!

1 Ответ

0 голосов
/ 10 мая 2020

В API WoW нет способа получить последнее сообщение чата определенного c канала. Вам придется обработать событие CHAT_MSG_CHANNEL (см. Обработка событий ), чтобы прочитать все сообщения и сохранить самое новое. Специально для каналов say или yell (shout) есть события CHAT_MSG_SAY и CHAT_MSG_YELL соответственно.

Для этого вашему аддону необходимо иметь собственный Кадр, эти кадры могут регистрировать обработчики событий, и вам нужно будет сохранить последнее сообщение, полученное от этого обработчика, в локальной переменной в вашем скрипте (назовем это last_message). Затем, когда ваш другой фрагмент кода выполняется, вы можете прочитать переменную last_message:

local frame = CreateFrame("FRAME", "FooAddonFrame");
local last_message = nil;
frame:RegisterEvent("CHAT_MSG_CHANNEL");
local function eventHandler(self, event, ...)
 -- Look up the arguments that are given to your specific event
 -- and assign them to variables in order by retrieving them from
 -- the `...` variable arguments
 local msg, author, language, channel = ...
 print("Hello World! Hello " .. event);
 last_message = msg
end
frame:SetScript("OnEvent", eventHandler);
...