1 |
// Trout |
2 |
// |
3 |
// Douglas Thrift |
4 |
// |
5 |
// $Id$ |
6 |
|
7 |
#include <znc/main.h> |
8 |
#include <znc/Modules.h> |
9 |
#include <znc/Chan.h> |
10 |
#include <znc/Client.h> |
11 |
#include <znc/IRCNetwork.h> |
12 |
|
13 |
#include "foreach.hpp" |
14 |
|
15 |
class Trout : public CModule |
16 |
{ |
17 |
public: |
18 |
MODCONSTRUCTOR(Trout) {} |
19 |
virtual ~Trout() {} |
20 |
|
21 |
virtual bool OnLoad(const CString &args, CString &message) |
22 |
{ |
23 |
::srandomdev(); |
24 |
|
25 |
return true; |
26 |
} |
27 |
|
28 |
virtual EModRet OnUserMsg(CString &target, CString &message) |
29 |
{ |
30 |
if (message.Token(0).Equals("!trout")) |
31 |
{ |
32 |
CString who(message.Token(1)); |
33 |
|
34 |
if (who.empty()) |
35 |
if (GetNetwork()->IsChan(target)) |
36 |
{ |
37 |
typedef std::map<CString, CNick> NickMap; |
38 |
|
39 |
VCString nicks; |
40 |
|
41 |
_foreach (const NickMap, nick, GetNetwork()->FindChan(target)->GetNicks()) |
42 |
nicks.push_back(nick->first); |
43 |
|
44 |
who = nicks[::random() % nicks.size()]; |
45 |
} |
46 |
else |
47 |
who = target; |
48 |
|
49 |
message = "\001ACTION slaps " + who + " around a bit with a large trout\001"; |
50 |
|
51 |
if (GetNetwork()->IsChan(target)) |
52 |
PutUser(":" + GetClient()->GetNickMask() + " PRIVMSG " + target + " :" + message); |
53 |
else |
54 |
PutUser(":" + target + " NOTICE " + GetClient()->GetNick() + " :\001ACTION \002" + GetClient()->GetNick() + "\017 slaps " + who + " around a bit with a large trout\001"); |
55 |
} |
56 |
|
57 |
return CONTINUE; |
58 |
} |
59 |
}; |
60 |
|
61 |
MODULEDEFS(Trout, "Slap people around a bit with a large trout"); |
62 |
|
63 |
// vim: noexpandtab tabstop=4 |