Merge pull request #56 from LuisMartinSchick/chat-commands

Chat commands
This commit is contained in:
Thomas Smyth 2020-09-09 18:38:38 +01:00 committed by GitHub
commit 46283ab5b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 77 additions and 0 deletions

View File

@ -207,6 +207,25 @@ The `auto-tk-warn` plugin will automatically warn players in game to apologise f
</tbody>
</table>
### chat-commands
The `chat-command` plugin will automatically broadcast messages when a player types the corresponding command into any chat.
##### Options
<table>
<thead>
<tr>
<th>Option</th>
<th>Type</th>
<th>Required</th>
<th>Default</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr><td>commands</td><td>Array of command configs</td><td>false</td><td>[{"command":"!squadjs","type":"warn","response":"This server is powered by SquadJS.","ignoreChats":[]}]</td><td>See the default value as an example of how to configure commands. Type can either be `warn` or `broadcast`</td></tr>
</tbody>
</table>
### discord-admin-broadcast
The `discord-admin-broadcast` plugin will send a copy of admin broadcasts made in game to a Discord channel.

View File

@ -66,6 +66,18 @@
"enabled": true,
"message": "Please apologise for ALL TKs in ALL chat!"
},
{
"plugin": "chat-commands",
"enabled": false,
"commands": [
{
"command": "!squadjs",
"type": "warn",
"response": "This server is powered by SquadJS.",
"ignoreChats": []
}
]
},
{
"plugin": "discord-admin-broadcast",
"enabled": true,

View File

@ -0,0 +1,43 @@
import { CHAT_MESSAGE } from 'squad-server/events';
export default {
name: 'chat-commands',
description:
'The `chat-command` plugin will automatically broadcast messages when a player types the corresponding command into any chat.',
defaultEnabled: false,
optionsSpec: {
commands: {
type: 'Array of command configs',
required: false,
default: [
{
command: '!squadjs',
type: 'warn',
response: 'This server is powered by SquadJS.',
ignoreChats: []
}
],
description:
'See the default value as an example of how to configure commands. Type can either be `warn` or `broadcast`'
}
},
init: async (server, options) => {
server.on(CHAT_MESSAGE, (info) => {
// loop through all possibilities
for (const command of options.commands) {
// check if message is a command
if (!info.message.startsWith(command.command)) continue;
// check if ignored channel
if (command.ignoreChats.includes(info.chat)) continue;
// React to command with either a broadcast or a warning
if (command.type === 'broadcast') {
server.rcon.broadcast(command.response);
} else if (command.type === 'warn') {
server.rcon.warn(info.steamID, command.response);
}
}
});
}
};

View File

@ -12,9 +12,11 @@ import mapvoteDidYouMean from './mapvote/mapvote-did-you-mean.js';
import mysqlLog from './mysql-log/index.js';
import seedingMessage from './seeding-message/index.js';
import teamRandomizer from './team-randomizer/index.js';
import chatCommands from './chat-commands/index.js';
export {
autoTKWarn,
chatCommands,
discordAdminBroadcast,
discordAdminCamLogs,
discordChat,
@ -32,6 +34,7 @@ export {
const plugins = [
autoTKWarn,
chatCommands,
discordAdminBroadcast,
discordAdminCamLogs,
discordChat,