diff options
author | Cara Salter <cara@devcara.com> | 2023-04-03 09:39:39 -0400 |
---|---|---|
committer | Cara Salter <cara@devcara.com> | 2023-04-03 09:39:39 -0400 |
commit | 27e58363dde28f4667761970fc7068be8fe047ac (patch) | |
tree | 1150459da073130084cd6a1b27076da98679b964 /modules/mmanager | |
parent | 53913850062506ff1d98d9d12a46a70db4d6fb08 (diff) | |
download | 142bot-27e58363dde28f4667761970fc7068be8fe047ac.tar.gz 142bot-27e58363dde28f4667761970fc7068be8fe047ac.zip |
modules: Fix issue with unloading modules bound to OnMessage
When unloaded, modules attached to OnMessage events would still be part
of the list used by FOREACH_MOD to send events to, leading to a
segfault.
This changes the behavior of load and unload to place new modules at the
*start* of the event handler arrays, leading them to already be
processed by the time the bot gets to the ModuleManager.
Diffstat (limited to 'modules/mmanager')
-rw-r--r-- | modules/mmanager/mmanager.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/modules/mmanager/mmanager.cpp b/modules/mmanager/mmanager.cpp index 36b6aae..1a012f9 100644 --- a/modules/mmanager/mmanager.cpp +++ b/modules/mmanager/mmanager.cpp @@ -127,7 +127,7 @@ public: } else { EmbedSimple("Can't do that, check server logs", message.msg.channel_id); } - }else if (lowercase(subcommand) == "ping") { + } else if (lowercase(subcommand) == "ping") { dpp::channel* c = dpp::find_channel(message.msg.channel_id); if (c) { std::chrono::steady_clock::time_point start_time = std::chrono::steady_clock::now(); @@ -139,7 +139,11 @@ public: this->EmbedSimple(fmt::format("**Pong!** REST Response time: {:.3f} ms", microseconds_ping / 1000, 4), cid); }); } - } else { + } else if (lowercase(subcommand) == "restart") { + EmbedSimple("Restarting...", message.msg.channel_id); + ::sleep(5); + exit(0); + } else { EmbedSimple("Command not found.", message.msg.channel_id); } } else { |