mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-13 19:22:20 +00:00
This pull request updates the TGS DMAPI to the latest version. Please note any changes that may be breaking or unimplemented in your codebase by checking what changes are in the definitions file: code/__DEFINES/tgs.dm before merging. Co-authored-by: tgstation-server <tgstation-server@users.noreply.github.com>
45 lines
1.6 KiB
Plaintext
45 lines
1.6 KiB
Plaintext
/datum/tgs_api/v4/proc/ListCustomCommands()
|
|
var/results = list()
|
|
custom_commands = list()
|
|
for(var/I in typesof(/datum/tgs_chat_command) - /datum/tgs_chat_command)
|
|
var/datum/tgs_chat_command/stc = new I
|
|
if(stc.ignore_type == I)
|
|
continue
|
|
|
|
var/command_name = stc.name
|
|
if(!command_name || findtext(command_name, " ") || findtext(command_name, "'") || findtext(command_name, "\""))
|
|
TGS_ERROR_LOG("Custom command [command_name] ([I]) can't be used as it is empty or contains illegal characters!")
|
|
continue
|
|
|
|
if(results[command_name])
|
|
var/datum/other = custom_commands[command_name]
|
|
TGS_ERROR_LOG("Custom commands [other.type] and [I] have the same name (\"[command_name]\"), only [other.type] will be available!")
|
|
continue
|
|
results += list(list("name" = command_name, "help_text" = stc.help_text, "admin_only" = stc.admin_only))
|
|
custom_commands[command_name] = stc
|
|
|
|
var/commands_file = chat_commands_json_path
|
|
if(!commands_file)
|
|
return
|
|
text2file(json_encode(results), commands_file)
|
|
|
|
/datum/tgs_api/v4/proc/HandleCustomCommand(command_json)
|
|
var/list/data = json_decode(command_json)
|
|
var/command = data["command"]
|
|
var/user = data["user"]
|
|
var/params = data["params"]
|
|
|
|
var/datum/tgs_chat_user/u = new
|
|
u.id = user["id"]
|
|
u.friendly_name = user["friendlyName"]
|
|
u.mention = user["mention"]
|
|
u.channel = DecodeChannel(user["channel"])
|
|
|
|
var/datum/tgs_chat_command/sc = custom_commands[command]
|
|
if(sc)
|
|
var/datum/tgs_message_content/result = sc.Run(u, params)
|
|
result = UpgradeDeprecatedCommandResponse(result, command)
|
|
|
|
return result ? result.text : TRUE
|
|
return "Unknown command: [command]!"
|