1- #define IRC_STATUS_THROTTLE 5
2-
3- / datum / tgs_chat_command/ ircstatus
4- name = " status"
5- help_text = " Gets the admincount, playercount, gamemode, and true game mode of the server"
1+ / datum / tgs_chat_command/ reload_admins
2+ name = " reload_admins"
3+ help_text = " Forces the server to reload admins."
64 admin_only = TRUE
7- var /last_irc_status = 0
85
9- / datum / tgs_chat_command/ ircstatus/ Run( datum / tgs_chat_user/ sender, params)
10- var /rtod = REALTIMEOFDAY
11- if (rtod - last_irc_status < IRC_STATUS_THROTTLE )
12- return
13- last_irc_status = rtod
14- var /list /adm = get_admin_counts()
15- var /list /allmins = adm[" total" ]
16- var /status = " Admins: [ allmins. len] (Active: [ english_list(adm[" present" ])] AFK: [ english_list(adm[" afk" ])] Stealth: [ english_list(adm[" stealth" ])] Skipped: [ english_list(adm[" noflags" ])] ). "
17- status += " Players: [ GLOB . clients. len] " // (Active: [get_active_player_count(0,1,0)]). Mode: [SSticker.mode ? SSticker.mode.name : "Not started"]."
18- return status
6+ / datum / tgs_chat_command/ reload_admins/ Run( datum / tgs_chat_user/ sender, params)
7+ ReloadAsync ()
8+ log_admin (" [ sender. friendly_name] reloaded admins via chat command." )
9+ message_admins (" [ sender. friendly_name] reloaded admins via chat command." )
10+ return " Admins reloaded."
1911
20- / datum / tgs_chat_command/ irccheck
21- name = " check"
22- help_text = " Gets the playercount, gamemode, and address of the server"
23- var /last_irc_check = 0
24-
25- / datum / tgs_chat_command/ irccheck/ Run( datum / tgs_chat_user/ sender, params)
26- var /rtod = REALTIMEOFDAY
27- if (rtod - last_irc_check < IRC_STATUS_THROTTLE )
28- return
29- last_irc_check = rtod
30- var /server = null // CONFIG_GET(string/server)
31- // return "[round_id ? "Round #[round_id]: " : ""][clients.len] players on [SSmapping.config_legacy.map_name], Mode: [master_mode]; Round [SSticker.HasRoundStarted() ? (SSticker.IsRoundInProgress() ? "Active" : "Finishing") : "Starting"] -- [server ? server : "[world.internet_address]:[world.port]"]"
32- var /current_state
33- switch (SSticker. current_state)
34- if (GAME_STATE_PREGAME )
35- current_state = " pregame"
36- if (GAME_STATE_SETTING_UP )
37- current_state = " starting"
38- if (GAME_STATE_PLAYING )
39- current_state = " active"
40- if (GAME_STATE_FINISHED )
41- current_state = " finishing"
42- return " [ GLOB . clients. len] players on [ (LEGACY_MAP_DATUM ). name] , Mode: [ master_mode] ; round [ current_state] -- Duration [ roundduration2text()] -- [ server ? server : " [ world . internet_address] : [ world . port] " ] "
12+ / datum / tgs_chat_command/ reload_admins/ proc / ReloadAsync()
13+ set waitfor = FALSE
14+ load_admins ()
4315
4416/ datum / tgs_chat_command/ ahelp
4517 name = " ahelp"
4921/ datum / tgs_chat_command/ ahelp/ Run( datum / tgs_chat_user/ sender, params)
5022 var /list /all_params = splittext(params, " " )
5123 if (all_params. len < 2 )
52- return " Insufficient parameters"
24+ return new / datum / tgs_message_content( " Insufficient parameters" )
5325 var /target = all_params[1 ]
5426 all_params. Cut(1 , 2 )
5527 var /id = text2num(target)
5830 if (AH )
5931 target = AH . initiator_ckey
6032 else
61- return " Ticket #[ id] not found!"
62- var /res = IrcPm(target, all_params. Join(" " ), sender. friendly_name)
63- if (res != " Message Successful" )
64- return res
33+ return new / datum / tgs_message_content(" Ticket #[ id] not found!" )
34+ return new / datum / tgs_message_content(IrcPm(target, all_params. Join(" " ), sender. friendly_name))
6535
6636/ datum / tgs_chat_command/ namecheck
6737 name = " namecheck"
7141/ datum / tgs_chat_command/ namecheck/ Run( datum / tgs_chat_user/ sender, params)
7242 params = trim(params)
7343 if (! params)
74- return " Insufficient parameters"
44+ return new / datum / tgs_message_content( " Insufficient parameters" )
7545 log_admin (" Chat Name Check: [ sender. friendly_name] on [ params] " )
7646 message_admins (" Name checking [ params] from [ sender. friendly_name] " )
77- return keywords_lookup(params, 1 )
47+ return new / datum / tgs_message_content( keywords_lookup(params, 1 ) )
7848
7949/ datum / tgs_chat_command/ adminwho
8050 name = " adminwho"
8151 help_text = " Lists administrators currently on the server"
8252 admin_only = TRUE
8353
8454/ datum / tgs_chat_command/ adminwho/ Run( datum / tgs_chat_user/ sender, params)
85- return ircadminwho()
86-
87- GLOBAL_LIST (round_end_notifiees)
88-
89- / datum / tgs_chat_command/ endnotify
90- name = " notify"
91- help_text = " Pings the invoker when the round ends"
92- admin_only = FALSE
93-
94- / datum / tgs_chat_command/ endnotify/ Run( datum / tgs_chat_user/ sender, params)
95- // if(!SSticker.IsRoundInProgress() && SSticker.HasRoundStarted())
96- if (SSticker. current_state == GAME_STATE_FINISHED )
97- return " [ sender. mention] , the round has already ended!"
98- LAZYINITLIST (GLOB . round_end_notifiees)
99- GLOB . round_end_notifiees[sender. mention] = TRUE
100- return " I will notify [ sender. mention] when the round ends."
55+ return new / datum / tgs_message_content(tgsadminwho())
10156
10257/ datum / tgs_chat_command/ sdql
10358 name = " sdql"
@@ -106,29 +61,79 @@ GLOBAL_LIST(round_end_notifiees)
10661
10762/ datum / tgs_chat_command/ sdql/ Run( datum / tgs_chat_user/ sender, params)
10863 if (GLOB . AdminProcCaller)
109- return " Unable to run query, another admin proc call is in progress. Try again later."
64+ return new / datum / tgs_message_content( " Unable to run query, another admin proc call is in progress. Try again later." )
11065 GLOB . AdminProcCaller = " CHAT_[ sender. friendly_name] " // _ won't show up in ckeys so it'll never match with a real admin
11166 var /list /results = world . SDQL2_query(params, GLOB . AdminProcCaller, GLOB . AdminProcCaller)
11267 GLOB . AdminProcCaller = null
11368 if (! results)
114- return " Query produced no output"
69+ return new / datum / tgs_message_content( " Query produced no output" )
11570 var /list /text_res = results. Copy(1 , 3 )
11671 var /list /refs = results. len > 3 ? results. Copy(4 ) : null
117- . = " [ text_res. Join(" \n " )] [ refs ? " \n Refs: [ refs. Join(" " )] " : " " ] "
72+ return new / datum / tgs_message_content( " [ text_res. Join(" \n " )] [ refs ? " \n Refs: [ refs. Join(" " )] " : " " ] " )
11873
119- / datum / tgs_chat_command/ reload_admins
120- name = " reload_admins "
121- help_text = " Forces the server to reload admins. "
74+ / datum / tgs_chat_command/ tgsstatus
75+ name = " status "
76+ help_text = " Gets the admincount, playercount, gamemode, and true game mode of the server "
12277 admin_only = TRUE
12378
124- / datum / tgs_chat_command/ reload_admins/ Run( datum / tgs_chat_user/ sender, params)
125- ReloadAsync ()
126- log_admin (" [ sender. friendly_name] reloaded admins via chat command." )
127- return " Admins reloaded."
79+ / datum / tgs_chat_command/ tgsstatus/ Run( datum / tgs_chat_user/ sender, params)
80+ var /list /adm = get_admin_counts()
81+ var /list /allmins = adm[" total" ]
82+ var /status = " Admins: [ allmins. len] (Active: [ english_list(adm[" present" ])] AFK: [ english_list(adm[" afk" ])] Stealth: [ english_list(adm[" stealth" ])] Skipped: [ english_list(adm[" noflags" ])] ). "
83+ status += " Players: [ GLOB . clients. len] (Active: [ get_active_player_count(FALSE , TRUE , FALSE )] ). Round has [ SSticker. HasRoundStarted() ? " " : " not " ] started."
84+ return new / datum / tgs_message_content(status)
12885
129- / datum / tgs_chat_command/ reload_admins/ proc / ReloadAsync()
130- set waitfor = FALSE
131- load_admins ()
86+ // code/modules/discord/tgs_commands.dm
87+ / datum / tgs_chat_command/ tgscheck
88+ name = " check"
89+ help_text = " Gets the playercount, gamemode, and address of the server"
90+
91+ / datum / tgs_chat_command/ tgscheck/ Run( datum / tgs_chat_user/ sender, params)
92+ var /server = config_legacy. serverurl || config_legacy. server
93+ return new / datum / tgs_message_content(" [ GLOB . round_id ? " Round #[ GLOB . round_id] : " : " " ] [ GLOB . clients. len] players on [ (LEGACY_MAP_DATUM ). name] ; Round [ SSticker. HasRoundStarted() ? (SSticker. IsRoundInProgress() ? " Active" : " Finishing" ) : " Starting" ] -- [ server ? server : " [ world . internet_address] : [ world . port] " ] " )
94+
95+ / datum / tgs_chat_command/ gameversion
96+ name = " gameversion"
97+ help_text = " Gets the version details from the show-server-revision verb, basically"
98+
99+ / datum / tgs_chat_command/ gameversion/ Run( datum / tgs_chat_user/ sender, params)
100+ var /list /msg = list (" " )
101+ msg += " BYOND Server Version: [ world . byond_version] . [ world . byond_build] (Compiled with: [ DM_VERSION ] . [ DM_BUILD ] ) \n "
102+
103+ if (! GLOB . revdata)
104+ msg += " No revision information found."
105+ else
106+ msg += " Revision [ copytext_char(GLOB . revdata. commit, 1 , 9 )] "
107+ if (GLOB . revdata. date)
108+ msg += " compiled on '[ GLOB . revdata. date] '"
109+
110+ if (GLOB . revdata. originmastercommit)
111+ msg += " , from origin commit: <[ CONFIG_GET (string/ githuburl)] /commit/ [ GLOB . revdata. originmastercommit] >"
112+
113+ if (GLOB . revdata. testmerge. len)
114+ msg += " \n "
115+ for (var /datum /tgs_revision_information/test_merge/PR as anything in GLOB . revdata. testmerge)
116+ msg += " PR #[ PR . number] at [ copytext_char(PR . head_commit, 1 , 9 )] [ PR . title] . \n "
117+ if (PR . url)
118+ msg += " <[ PR . url] > \n "
119+ return new / datum / tgs_message_content(msg. Join(" " ))
120+
121+ GLOBAL_LIST (round_end_notifiees)
122+ / datum / tgs_chat_command/ endnotify
123+ name = " notify"
124+ help_text = " Pings the invoker when the round ends"
125+ admin_only = FALSE
126+
127+ / datum / tgs_chat_command/ endnotify/ Run( datum / tgs_chat_user/ sender, params)
128+ // if(!SSticker.IsRoundInProgress() && SSticker.HasRoundStarted())
129+ if (SSticker. current_state == GAME_STATE_FINISHED )
130+ return new / datum / tgs_message_content(" [ sender. mention] , the round has already ended!" )
131+ LAZYINITLIST (GLOB . round_end_notifiees)
132+ if (GLOB . round_end_notifiees[sender. mention])
133+ GLOB . round_end_notifiees[sender. mention] = FALSE
134+ return new / datum / tgs_message_content(" You will no longer be notified when the server restarts" )
135+ GLOB . round_end_notifiees[sender. mention] = TRUE
136+ return new / datum / tgs_message_content(" You will now be notified when the server restarts" )
132137
133138/ datum / tgs_chat_command/ whitelist
134139 name = " whitelist"
0 commit comments