summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/commands.h6
-rw-r--r--modules/fantasy.cpp7
-rw-r--r--src/bots.cpp7
-rw-r--r--src/command.cpp9
4 files changed, 23 insertions, 6 deletions
diff --git a/include/commands.h b/include/commands.h
index 7c1e62686..1778dd4d9 100644
--- a/include/commands.h
+++ b/include/commands.h
@@ -61,15 +61,17 @@ public:
/* Where the reply should go */
CommandReply *reply;
/* Channel the command was executed on (fantasy) */
- Reference<Channel> c;
+ Reference<Channel> c = nullptr;
/* The service this command is on */
Reference<BotInfo> service;
/* The actual name of the command being executed */
Anope::string command;
/* The permission of the command being executed */
Anope::string permission;
+ /* The unique identifier of the executing message. */
+ Anope::string msgid;
- CommandSource(const Anope::string &n, User *user, NickCore *core, CommandReply *reply, BotInfo *bi);
+ CommandSource(const Anope::string &n, User *user, NickCore *core, CommandReply *reply, BotInfo *bi, const Anope::string &m = "");
const Anope::string &GetNick() const;
User *GetUser();
diff --git a/modules/fantasy.cpp b/modules/fantasy.cpp
index 3930b0218..7658c2ac7 100644
--- a/modules/fantasy.cpp
+++ b/modules/fantasy.cpp
@@ -175,7 +175,12 @@ public:
if (params.size() < cmd->min_params)
return;
- CommandSource source(u->nick, u, u->Account(), u, c->ci->bi);
+ Anope::string msgid;
+ auto iter = tags.find("msgid");
+ if (iter != tags.end())
+ msgid = iter->second;
+
+ CommandSource source(u->nick, u, u->Account(), u, c->ci->bi, msgid);
source.c = c;
source.command = it->first;
source.permission = info.permission;
diff --git a/src/bots.cpp b/src/bots.cpp
index f468ff59f..7417db6e7 100644
--- a/src/bots.cpp
+++ b/src/bots.cpp
@@ -228,7 +228,12 @@ void BotInfo::OnMessage(User *u, const Anope::string &message, const Anope::map<
if (this->commands.empty())
return;
- CommandSource source(u->nick, u, u->Account(), u, this);
+ Anope::string msgid;
+ auto iter = tags.find("msgid");
+ if (iter != tags.end())
+ msgid = iter->second;
+
+ CommandSource source(u->nick, u, u->Account(), u, this, msgid);
Command::Run(source, message);
}
diff --git a/src/command.cpp b/src/command.cpp
index 7925e8bbd..2ac6cb7d7 100644
--- a/src/command.cpp
+++ b/src/command.cpp
@@ -17,8 +17,13 @@
#include "regchannel.h"
#include "channels.h"
-CommandSource::CommandSource(const Anope::string &n, User *user, NickCore *core, CommandReply *r, BotInfo *bi) : nick(n), u(user), nc(core), reply(r),
- c(NULL), service(bi)
+CommandSource::CommandSource(const Anope::string &n, User *user, NickCore *core, CommandReply *r, BotInfo *bi, const Anope::string &m)
+ : nick(n)
+ , u(user)
+ , nc(core)
+ , reply(r)
+ , service(bi)
+ , msgid(m)
{
}