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.

Broadcast/Source

From ZNC
Revision as of 01:04, 11 January 2012 by >Resistance (Loaded source code from git repo specified on wiki page.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
/*
 * Copyright (C) 2004-2009  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.
 *
 * This module mostly coded by Efreak, with the class definition & lastseen code
 * borrowed from lastseen & modified, and the rehash borrowed from ClientCommands & modified.
 */




#include "znc.h"
#include "User.h"

using std::map;

class CBroadcastMod : public CGlobalModule {
public:
	GLOBALMODCONSTRUCTOR(CBroadcastMod) {}
   
	virtual ~CBroadcastMod() {}
   
	virtual bool OnLoad(const CString& sArgs, CString& sErrorMsg) {
		if(!sArgs.empty())
		bcprefix=sArgs + " "; //used for the broadcast prefix. Basically just grab all the arguments.
		else bcprefix="ZNC Global Message: ";
		return true;
	}
   
	virtual void OnModCommand(const CString& sLine) {
		CString sCommand = sLine.Token(0).AsLower();
      
		if (!GetUser()->IsAdmin()) {			//so far all these commands are administrative.
			PutModule("Access denied");		//maybe a module name change is in order.
			return;
		}

/*
 *   Broadcast
 */

		if (sCommand == "global"||sCommand=="broadcast") {
			CString message=bcprefix + sLine.Token(1,true);
			CZNC::Get().Broadcast(message);
		} else if (sCommand=="set") { 
			bcprefix=sLine.Token(1,true);
		} else if (sCommand=="show"||sCommand=="set") { 
			PutModule("Prefix set to '" + bcprefix + "'.");
		}
/*
 *   Help command (todo: implement token-based help)
 */
		else {
//Broadcast
			PutModule("Broadcast: This module includes a broadcast command that prefixes a word(s) to the beginning of the");
			PutModule("      message. Prefix defaults to 'ZNC Global Message: ', and can be changed by the arguments.");
			PutModule("Commands:");
			PutModule("      broadcast - broadcast specified message with the set prefix");
			PutModule("      set - set the prefix to the following text. May be replaced during a rehash or restart.");
			PutModule("      show - show the current prefix.");
		}
	}
   
protected:
   
private:
	CString bcprefix;
};

GLOBALMODULEDEFS(CBroadcastMod, "Broadcast with a prefix.");