登录后,我想向公会频道发送聊天消息。 我目前正在收听事件: PLAYER_ENTERING_WORLD GUILD_ROSTER_UPDATE
一旦这些被触发(按顺序(,我想发送一条聊天消息。但是,它永远不会发送。 法典:
print("Should_send")
SendChatMessage(msgToSend, "GUILD");
还值得注意的是,如果我手动触发它,它会起作用。 我确实看到"Should_send"打印语句每次都出现在默认聊天窗口中 - 正如预期的那样。我还检查了"msgToSend"是否包含内容 - 并且少于 255 个字符。
那么,我什么时候可以调用发送聊天消息?
好的,为了能够向公会发送聊天消息,你需要等待事件"CLUB_STREAM_SUBSCRIBED"触发。
这是由于公会频道成为某种"社区"频道 - 以前,这似乎不是必需的。
因此,添加事件侦听器:
frame:RegisterEvent("CLUB_STREAM_SUBSCRIBED");
解决了问题。
您可能需要为事件设置一个标志,然后稍后打印到另一个事件上。
您可以在看到欢迎消息后或发布欢迎消息后随时发送聊天消息。这是在您能够从帧接收事件之后不久。
以下是我将完成类似任务的方法:
只需将您的发送代码放在宏中即可先对其进行测试。在看到消息在宏中工作之前,不要担心消息的计时。
您可以自己打印以将通用消息发送到聊天窗口,该消息应始终类似于:
function MyPrint( msg, r, g, b, frame, id)
(frame or DEFAULT_CHAT_FRAME):AddMessage(msg, r or 1, g or 1, b or 0, id or 0)
end
-- put these in your event handlers
MyPrint("event PLAYER_ENTERING_WORLD")
MyPrint("event GUILD_ROSTER_UPDATE")
并使用它进行调试。
你需要分而治之,因为有很多事情可能导致你的问题,这里没有人能真正有一个明确的答案。
我确信,如果您尝试在欢迎消息之前写信聊天并打印出来,至少以前不起作用。我记得过去假脱机消息,直到某个事件触发然后打印它们。