summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--builtin/game/chatcommands.lua15
-rw-r--r--src/server.cpp23
2 files changed, 18 insertions, 20 deletions
diff --git a/builtin/game/chatcommands.lua b/builtin/game/chatcommands.lua
index 16f5f3be9..8df3903d2 100644
--- a/builtin/game/chatcommands.lua
+++ b/builtin/game/chatcommands.lua
@@ -7,13 +7,22 @@
core.chatcommands = core.registered_chatcommands -- BACKWARDS COMPATIBILITY
core.register_on_chat_message(function(name, message)
+ if message:sub(1,1) ~= "/" then
+ return
+ end
+
local cmd, param = string.match(message, "^/([^ ]+) *(.*)")
- if not param then
- param = ""
+ if not cmd then
+ core.chat_send_player(name, "-!- Empty command")
+ return true
end
+
+ param = param or ""
+
local cmd_def = core.registered_chatcommands[cmd]
if not cmd_def then
- return false
+ core.chat_send_player(name, "-!- Invalid command: " .. cmd)
+ return true
end
local has_privs, missing_privs = core.check_player_privs(name, cmd_def.privs)
if has_privs then
diff --git a/src/server.cpp b/src/server.cpp
index 224af47a7..02e365718 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -2820,25 +2820,14 @@ std::wstring Server::handleChat(const std::string &name, const std::wstring &wna
// Whether to send line to the player that sent the message, or to all players
bool broadcast_line = true;
- // Commands are implemented in Lua, so only catch invalid
- // commands that were not "eaten" and send an error back
- if (wmessage[0] == L'/') {
- std::wstring wcmd = wmessage.substr(1);
+ if (check_shout_priv && !checkPriv(name, "shout")) {
+ line += L"-!- You don't have permission to shout.";
broadcast_line = false;
- if (wcmd.length() == 0)
- line += L"-!- Empty command";
- else
- line += L"-!- Invalid command: " + str_split(wcmd, L' ')[0];
} else {
- if (check_shout_priv && !checkPriv(name, "shout")) {
- line += L"-!- You don't have permission to shout.";
- broadcast_line = false;
- } else {
- line += L"<";
- line += wname;
- line += L"> ";
- line += wmessage;
- }
+ line += L"<";
+ line += wname;
+ line += L"> ";
+ line += wmessage;
}
/*