To create new wiki account, please join us on #znc at Libera.Chat and ask admins to create a wiki account for you. You can say thanks to spambots for this inconvenience.

Kicklog/code

From ZNC
Revision as of 13:27, 17 December 2011 by DarthGandalf (talk | contribs) (Created page with "<pre>/* * Copyright (C) 2004-2010 See the AUTHORS file for details. * * This program is free software; you can redistribute it and/or modify it * under the terms of the G...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
/*
 * Copyright (C) 2004-2010  See the AUTHORS file for details.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 as published
 * by the Free Software Foundation.
 */

#include "Modules.h"
#include "User.h"
#include "Chan.h"

class CKickLogMod : public CModule {
public:
	MODCONSTRUCTOR(CKickLogMod) {}

	virtual ~CKickLogMod() {}

	virtual void OnKick(const CNick& OpNick, const CString& sKickedNick, CChan& Channel, const CString& sMessage) {
		if (m_pUser->IsUserAttached())
			return;
		if (sKickedNick != GetUser()->GetNick())
			return;

		CString sMsg = "Kicked by [" + OpNick.GetNickMask() + "] in [";
		sMsg += Channel.GetName() + "]: " + sMessage;

		sMsg = GetUser()->AddTimestamp(sMsg);
		DEBUG(sMsg);

		m_vSavedKicks.push_back(sMsg);
	}

	virtual void OnClientLogin() {
		VCString::const_iterator it;
		for (it = m_vSavedKicks.begin(); it != m_vSavedKicks.end(); it++) {
			PutModule(*it);
		}
		m_vSavedKicks.clear();
	}

	VCString m_vSavedKicks;
};

MODULEDEFS(CKickLogMod, "Log kick messages when you are kicked")