Buffer message tags and the original timestamps

This commit is contained in:
J-P Nurmi
2015-07-11 20:49:43 +02:00
parent ff181a4a85
commit c17c8c022b
7 changed files with 52 additions and 32 deletions
+30 -14
View File
@@ -25,12 +25,12 @@ public:
virtual ~CBuffExtras() {}
void AddBuffer(CChan& Channel, const CString& sMessage) {
void AddBuffer(CChan& Channel, const CString& sMessage, const timeval* tv = nullptr, const MCString& mssTags = MCString::EmptyMap) {
// If they have AutoClearChanBuffer enabled, only add messages if no client is connected
if (Channel.AutoClearChanBuffer() && GetNetwork()->IsUserOnline())
return;
Channel.AddBuffer(":" + GetModNick() + "!" + GetModName() + "@znc.in PRIVMSG " + _NAMEDFMT(Channel.GetName()) + " :{text}", sMessage);
Channel.AddBuffer(":" + GetModNick() + "!" + GetModName() + "@znc.in PRIVMSG " + _NAMEDFMT(Channel.GetName()) + " :{text}", sMessage, tv, mssTags);
}
void OnRawMode2(const CNick* pOpNick, CChan& Channel, const CString& sModes, const CString& sArgs) override {
@@ -38,34 +38,50 @@ public:
AddBuffer(Channel, sNickMask + " set mode: " + sModes + " " + sArgs);
}
void OnKick(const CNick& OpNick, const CString& sKickedNick, CChan& Channel, const CString& sMessage) override {
AddBuffer(Channel, OpNick.GetNickMask() + " kicked " + sKickedNick + " Reason: [" + sMessage + "]");
void OnKickMessage(CKickMessage& Message) override {
const CNick& OpNick = Message.GetNick();
const CString sKickedNick = Message.GetKickedNick();
CChan& Channel = *Message.GetChan();
const CString sMessage = Message.GetReason();
AddBuffer(Channel, OpNick.GetNickMask() + " kicked " + sKickedNick + " Reason: [" + sMessage + "]", &Message.GetTime(), Message.GetTags());
}
void OnQuit(const CNick& Nick, const CString& sMessage, const vector<CChan*>& vChans) override {
void OnQuitMessage(CQuitMessage& Message, const vector<CChan*>& vChans) override {
const CNick& Nick = Message.GetNick();
const CString sMessage = Message.GetReason();
CString sMsg = Nick.GetNickMask() + " quit with message: [" + sMessage + "]";
for (CChan* pChan : vChans) {
AddBuffer(*pChan, sMsg);
AddBuffer(*pChan, sMsg, &Message.GetTime(), Message.GetTags());
}
}
void OnJoin(const CNick& Nick, CChan& Channel) override {
AddBuffer(Channel, Nick.GetNickMask() + " joined");
void OnJoinMessage(CJoinMessage& Message) override {
const CNick& Nick = Message.GetNick();
CChan& Channel = *Message.GetChan();
AddBuffer(Channel, Nick.GetNickMask() + " joined", &Message.GetTime(), Message.GetTags());
}
void OnPart(const CNick& Nick, CChan& Channel, const CString& sMessage) override {
AddBuffer(Channel, Nick.GetNickMask() + " parted with message: [" + sMessage + "]");
void OnPartMessage(CPartMessage& Message) override {
const CNick& Nick = Message.GetNick();
CChan& Channel = *Message.GetChan();
const CString sMessage = Message.GetReason();
AddBuffer(Channel, Nick.GetNickMask() + " parted with message: [" + sMessage + "]", &Message.GetTime(), Message.GetTags());
}
void OnNick(const CNick& OldNick, const CString& sNewNick, const vector<CChan*>& vChans) override {
void OnNickMessage(CNickMessage& Message, const vector<CChan*>& vChans) override {
const CNick& OldNick = Message.GetNick();
const CString sNewNick = Message.GetNewNick();
CString sMsg = OldNick.GetNickMask() + " is now known as " + sNewNick;
for (CChan* pChan : vChans) {
AddBuffer(*pChan, sMsg);
AddBuffer(*pChan, sMsg, &Message.GetTime(), Message.GetTags());
}
}
EModRet OnTopic(CNick& Nick, CChan& Channel, CString& sTopic) override {
AddBuffer(Channel, Nick.GetNickMask() + " changed the topic to: " + sTopic);
EModRet OnTopicMessage(CTopicMessage& Message) override {
const CNick& Nick = Message.GetNick();
CChan& Channel = *Message.GetChan();
const CString sTopic = Message.GetTopic();
AddBuffer(Channel, Nick.GetNickMask() + " changed the topic to: " + sTopic, &Message.GetTime(), Message.GetTags());
return CONTINUE;
}