]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_randquote.cpp
Add support for blocking tag messages with the deaf mode.
[user/henk/code/inspircd.git] / src / modules / m_randquote.cpp
index 94cd3dbac775b244738df8308862e150b00b0b97..0148e48d6c0e780c9c1d0bf76e46f964bba5faae 100644 (file)
@@ -1,11 +1,12 @@
 /*
  * InspIRCd -- Internet Relay Chat Daemon
  *
+ *   Copyright (C) 2013, 2020 Sadie Powell <sadie@witchery.services>
+ *   Copyright (C) 2012, 2019 Robby <robby@chatbelgie.be>
  *   Copyright (C) 2010 Daniel De Graaf <danieldg@inspircd.org>
- *   Copyright (C) 2007-2008 Robin Burchell <robin+git@viroteck.net>
+ *   Copyright (C) 2009 Uli Schlachter <psychon@inspircd.org>
  *   Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
- *   Copyright (C) 2003, 2006 Craig Edwards <craigedwards@brainbox.cc>
- *   Copyright (C) 2005 Craig McLure <craig@chatspike.net>
+ *   Copyright (C) 2003, 2006-2008, 2010 Craig Edwards <brain@inspircd.org>
  *
  * This file is part of InspIRCd.  InspIRCd is free software: you can
  * redistribute it and/or modify it under the terms of the GNU General Public
 
 #include "inspircd.h"
 
-static FileReader *quotes = NULL;
-
-std::string prefix;
-std::string suffix;
-
-/* $ModDesc: Provides random Quotes on Connect. */
-
-/** Handle /RANDQUOTE
- */
-class CommandRandquote : public Command
-{
- public:
-       CommandRandquote(Module* Creator) : Command(Creator,"RANDQUOTE", 0)
-       {
-       }
-
-       CmdResult Handle (const std::vector<std::string>& parameters, User *user)
-       {
-               std::string str;
-               int fsize;
-
-               fsize = quotes->FileSize();
-               str = quotes->GetLine(ServerInstance->GenRandomInt(fsize));
-               user->WriteServ("NOTICE %s :%s%s%s",user->nick.c_str(),prefix.c_str(),str.c_str(),suffix.c_str());
-
-               return CMD_SUCCESS;
-       }
-};
-
 class ModuleRandQuote : public Module
 {
  private:
-       CommandRandquote cmd;
- public:
-       ModuleRandQuote()
-               : cmd(this)
-       {
-       }
+       std::string prefix;
+       std::string suffix;
+       std::vector<std::string> quotes;
 
-       void init()
+ public:
+       void init() CXX11_OVERRIDE
        {
                ConfigTag* conf = ServerInstance->Config->ConfValue("randquote");
-
-               std::string q_file = conf->getString("file","quotes");
                prefix = conf->getString("prefix");
                suffix = conf->getString("suffix");
-
-               quotes = new FileReader(q_file);
-               if (!quotes->Exists())
-               {
-                       throw ModuleException("m_randquote: QuoteFile not Found!! Please check your config - module will not function.");
-               }
-               ServerInstance->AddCommand(&cmd);
-               Implementation eventlist[] = { I_OnUserConnect };
-               ServerInstance->Modules->Attach(eventlist, this, 1);
+               FileReader reader(conf->getString("file", "quotes", 1));
+               quotes = reader.GetVector();
        }
 
-
-       virtual ~ModuleRandQuote()
+       void OnUserConnect(LocalUser* user) CXX11_OVERRIDE
        {
-               delete quotes;
-       }
-
-       virtual Version GetVersion()
-       {
-               return Version("Provides random Quotes on Connect.",VF_VENDOR);
+               if (!quotes.empty())
+               {
+                       unsigned long random = ServerInstance->GenRandomInt(quotes.size());
+                       user->WriteNotice(prefix + quotes[random] + suffix);
+               }
        }
 
-       virtual void OnUserConnect(LocalUser* user)
+       Version GetVersion() CXX11_OVERRIDE
        {
-               cmd.Handle(std::vector<std::string>(), user);
+               return Version("Allows random quotes to be sent to users when they connect to the server.", VF_VENDOR);
        }
 };