diff options
author | Sadie Powell <sadie@witchery.services> | 2024-02-22 13:19:36 +0000 |
---|---|---|
committer | Sadie Powell <sadie@witchery.services> | 2024-02-22 13:19:36 +0000 |
commit | f93d9e76983e15bd1642c31d6acf430754f0600a (patch) | |
tree | 97e99a42ca08f6d798adbdf397e1cf3671037676 | |
parent | 7423fa9998d7e7082cac63eda18ae785091ea1b0 (diff) |
Store the source message identifier in CommandSource.
-rw-r--r-- | include/commands.h | 6 | ||||
-rw-r--r-- | modules/fantasy.cpp | 7 | ||||
-rw-r--r-- | src/bots.cpp | 7 | ||||
-rw-r--r-- | src/command.cpp | 9 |
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) { } |