Refactors References to IRC to be TGS (#47954)

* TGS updates round 1

* TGS updates round 2
This commit is contained in:
Bobbahbrown
2019-11-30 07:59:43 -04:00
committed by Rob Bailey
parent e5eda72244
commit 0d7ef73b17
15 changed files with 75 additions and 76 deletions

View File

@@ -191,7 +191,7 @@
//Set news report and mode result //Set news report and mode result
mode.set_round_result() mode.set_round_result()
send2irc("Server", "Round just ended.") send2tgs("Server", "Round just ended.")
if(length(CONFIG_GET(keyed_list/cross_server))) if(length(CONFIG_GET(keyed_list/cross_server)))
send_news_report() send_news_report()

View File

@@ -51,7 +51,7 @@
log_admin(message) log_admin(message)
if(REALTIMEOFDAY >= chnotify + 9000) if(REALTIMEOFDAY >= chnotify + 9000)
chnotify = REALTIMEOFDAY chnotify = REALTIMEOFDAY
send2irc_adminless_only("NOCHEAT", message) send2tgs_adminless_only("NOCHEAT", message)
return return
var/list/modifiers = params2list(params) var/list/modifiers = params2list(params)

View File

@@ -310,7 +310,7 @@ SUBSYSTEM_DEF(ticker)
var/list/adm = get_admin_counts() var/list/adm = get_admin_counts()
var/list/allmins = adm["present"] var/list/allmins = adm["present"]
send2irc("Server", "Round [GLOB.round_id ? "#[GLOB.round_id]:" : "of"] [hide_mode ? "secret":"[mode.name]"] has started[allmins.len ? ".":" with no active admins online!"]") send2tgs("Server", "Round [GLOB.round_id ? "#[GLOB.round_id]:" : "of"] [hide_mode ? "secret":"[mode.name]"] has started[allmins.len ? ".":" with no active admins online!"]")
setup_done = TRUE setup_done = TRUE
for(var/i in GLOB.start_landmarks_list) for(var/i in GLOB.start_landmarks_list)

View File

@@ -112,7 +112,7 @@
require_comms_key = TRUE require_comms_key = TRUE
/datum/world_topic/adminmsg/Run(list/input) /datum/world_topic/adminmsg/Run(list/input)
return IrcPm(input[keyword], input["msg"], input["sender"]) return TgsPm(input[keyword], input["msg"], input["sender"])
/datum/world_topic/namecheck /datum/world_topic/namecheck
keyword = "namecheck" keyword = "namecheck"
@@ -131,7 +131,7 @@
require_comms_key = TRUE require_comms_key = TRUE
/datum/world_topic/adminwho/Run(list/input) /datum/world_topic/adminwho/Run(list/input)
return ircadminwho() return tgsadminwho()
/datum/world_topic/status /datum/world_topic/status
keyword = "status" keyword = "status"

View File

@@ -1,32 +1,32 @@
#define IRC_STATUS_THROTTLE 5 #define TGS_STATUS_THROTTLE 5
/datum/tgs_chat_command/ircstatus /datum/tgs_chat_command/tgsstatus
name = "status" name = "status"
help_text = "Gets the admincount, playercount, gamemode, and true game mode of the server" help_text = "Gets the admincount, playercount, gamemode, and true game mode of the server"
admin_only = TRUE admin_only = TRUE
var/last_irc_status = 0 var/last_tgs_status = 0
/datum/tgs_chat_command/ircstatus/Run(datum/tgs_chat_user/sender, params) /datum/tgs_chat_command/tgsstatus/Run(datum/tgs_chat_user/sender, params)
var/rtod = REALTIMEOFDAY var/rtod = REALTIMEOFDAY
if(rtod - last_irc_status < IRC_STATUS_THROTTLE) if(rtod - last_tgs_status < TGS_STATUS_THROTTLE)
return return
last_irc_status = rtod last_tgs_status = rtod
var/list/adm = get_admin_counts() var/list/adm = get_admin_counts()
var/list/allmins = adm["total"] var/list/allmins = adm["total"]
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"])]). " 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"])]). "
status += "Players: [GLOB.clients.len] (Active: [get_active_player_count(0,1,0)]). Mode: [SSticker.mode ? SSticker.mode.name : "Not started"]." status += "Players: [GLOB.clients.len] (Active: [get_active_player_count(0,1,0)]). Mode: [SSticker.mode ? SSticker.mode.name : "Not started"]."
return status return status
/datum/tgs_chat_command/irccheck /datum/tgs_chat_command/tgscheck
name = "check" name = "check"
help_text = "Gets the playercount, gamemode, and address of the server" help_text = "Gets the playercount, gamemode, and address of the server"
var/last_irc_check = 0 var/last_tgs_check = 0
/datum/tgs_chat_command/irccheck/Run(datum/tgs_chat_user/sender, params) /datum/tgs_chat_command/tgscheck/Run(datum/tgs_chat_user/sender, params)
var/rtod = REALTIMEOFDAY var/rtod = REALTIMEOFDAY
if(rtod - last_irc_check < IRC_STATUS_THROTTLE) if(rtod - last_tgs_check < TGS_STATUS_THROTTLE)
return return
last_irc_check = rtod last_tgs_check = rtod
var/server = CONFIG_GET(string/server) var/server = CONFIG_GET(string/server)
return "[GLOB.round_id ? "Round #[GLOB.round_id]: " : ""][GLOB.clients.len] players on [SSmapping.config.map_name], Mode: [GLOB.master_mode]; Round [SSticker.HasRoundStarted() ? (SSticker.IsRoundInProgress() ? "Active" : "Finishing") : "Starting"] -- [server ? server : "[world.internet_address]:[world.port]"]" return "[GLOB.round_id ? "Round #[GLOB.round_id]: " : ""][GLOB.clients.len] players on [SSmapping.config.map_name], Mode: [GLOB.master_mode]; Round [SSticker.HasRoundStarted() ? (SSticker.IsRoundInProgress() ? "Active" : "Finishing") : "Starting"] -- [server ? server : "[world.internet_address]:[world.port]"]"
@@ -48,7 +48,7 @@
target = AH.initiator_ckey target = AH.initiator_ckey
else else
return "Ticket #[id] not found!" return "Ticket #[id] not found!"
var/res = IrcPm(target, all_params.Join(" "), sender.friendly_name) var/res = TgsPm(target, all_params.Join(" "), sender.friendly_name)
if(res != "Message Successful") if(res != "Message Successful")
return res return res
@@ -71,7 +71,7 @@
admin_only = TRUE admin_only = TRUE
/datum/tgs_chat_command/adminwho/Run(datum/tgs_chat_user/sender, params) /datum/tgs_chat_command/adminwho/Run(datum/tgs_chat_user/sender, params)
return ircadminwho() return tgsadminwho()
GLOBAL_LIST(round_end_notifiees) GLOBAL_LIST(round_end_notifiees)

View File

@@ -489,7 +489,7 @@
log_admin_private("[kn] [msg][roles_to_ban[1] == "Server" ? "" : " Roles: [roles_to_ban.Join(", ")]"] Reason: [reason]") log_admin_private("[kn] [msg][roles_to_ban[1] == "Server" ? "" : " Roles: [roles_to_ban.Join(", ")]"] Reason: [reason]")
message_admins("[kna] [msg][roles_to_ban[1] == "Server" ? "" : " Roles: [roles_to_ban.Join("\n")]"]\nReason: [reason]") message_admins("[kna] [msg][roles_to_ban[1] == "Server" ? "" : " Roles: [roles_to_ban.Join("\n")]"]\nReason: [reason]")
if(applies_to_admins) if(applies_to_admins)
send2irc("BAN ALERT","[kn] [msg]") send2tgs("BAN ALERT","[kn] [msg]")
if(player_ckey) if(player_ckey)
create_message("note", player_ckey, admin_ckey, note_reason, null, null, 0, 0, null, 0, severity) create_message("note", player_ckey, admin_ckey, note_reason, null, null, 0, 0, null, 0, severity)
var/client/C = GLOB.directory[player_ckey] var/client/C = GLOB.directory[player_ckey]
@@ -726,7 +726,7 @@
log_admin_private("[kn] has edited the [changes_keys_text] of a ban for [old_key ? "[old_key]" : "[old_ip]-[old_cid]"].") //if a ban doesn't have a key it must have an ip and/or a cid to have reached this point normally log_admin_private("[kn] has edited the [changes_keys_text] of a ban for [old_key ? "[old_key]" : "[old_ip]-[old_cid]"].") //if a ban doesn't have a key it must have an ip and/or a cid to have reached this point normally
message_admins("[kna] has edited the [changes_keys_text] of a ban for [old_key ? "[old_key]" : "[old_ip]-[old_cid]"].") message_admins("[kna] has edited the [changes_keys_text] of a ban for [old_key ? "[old_key]" : "[old_ip]-[old_cid]"].")
if(changes["Applies to admins"]) if(changes["Applies to admins"])
send2irc("BAN ALERT","[kn] has edited a ban for [old_key ? "[old_key]" : "[old_ip]-[old_cid]"] to [applies_to_admins ? "" : "not"]affect admins") send2tgs("BAN ALERT","[kn] has edited a ban for [old_key ? "[old_key]" : "[old_ip]-[old_cid]"] to [applies_to_admins ? "" : "not"]affect admins")
var/client/C = GLOB.directory[old_key] var/client/C = GLOB.directory[old_key]
if(C) if(C)
build_ban_cache(C) build_ban_cache(C)

View File

@@ -542,7 +542,7 @@
qdel(query_message_read) qdel(query_message_read)
if("watchlist entry") if("watchlist entry")
message_admins("<font color='red'><B>Notice: </B></font><font color='blue'>[key_name_admin(target_ckey)] has been on the watchlist since [timestamp] and has just connected - Reason: [text]</font>") message_admins("<font color='red'><B>Notice: </B></font><font color='blue'>[key_name_admin(target_ckey)] has been on the watchlist since [timestamp] and has just connected - Reason: [text]</font>")
send2irc_adminless_only("Watchlist", "[key_name(target_ckey)] is on the watchlist and has just connected - Reason: [text]") send2tgs_adminless_only("Watchlist", "[key_name(target_ckey)] is on the watchlist and has just connected - Reason: [text]")
if("memo") if("memo")
output += "<span class='memo'>Memo by <span class='prefix'>[admin_key]</span> on [timestamp]" output += "<span class='memo'>Memo by <span class='prefix'>[admin_key]</span> on [timestamp]"
if(editor_key) if(editor_key)

View File

@@ -195,11 +195,11 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
else else
MessageNoRecipient(msg) MessageNoRecipient(msg)
//send it to irc if nobody is on and tell us how many were on //send it to TGS if nobody is on and tell us how many were on
var/admin_number_present = send2irc_adminless_only(initiator_ckey, "Ticket #[id]: [name]") var/admin_number_present = send2tgs_adminless_only(initiator_ckey, "Ticket #[id]: [name]")
log_admin_private("Ticket #[id]: [key_name(initiator)]: [name] - heard by [admin_number_present] non-AFK admins who have +BAN.") log_admin_private("Ticket #[id]: [key_name(initiator)]: [name] - heard by [admin_number_present] non-AFK admins who have +BAN.")
if(admin_number_present <= 0) if(admin_number_present <= 0)
to_chat(C, "<span class='notice'>No active admins are online, your adminhelp was sent to the admin irc.</span>") to_chat(C, "<span class='notice'>No active admins are online, your adminhelp was sent through TGS to admins who are available. This may use IRC or Discord.</span>")
heard_by_no_admins = TRUE heard_by_no_admins = TRUE
GLOB.ahelp_tickets.active_tickets += src GLOB.ahelp_tickets.active_tickets += src
@@ -213,7 +213,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
/datum/admin_help/proc/AddInteraction(formatted_message) /datum/admin_help/proc/AddInteraction(formatted_message)
if(heard_by_no_admins && usr && usr.ckey != initiator_ckey) if(heard_by_no_admins && usr && usr.ckey != initiator_ckey)
heard_by_no_admins = FALSE heard_by_no_admins = FALSE
send2irc(initiator_ckey, "Ticket #[id]: Answered by [key_name(usr)]") send2tgs(initiator_ckey, "Ticket #[id]: Answered by [key_name(usr)]")
_interactions += "[time_stamp()]: [formatted_message]" _interactions += "[time_stamp()]: [formatted_message]"
//Removes the ahelp verb and returns it after 2 minutes //Removes the ahelp verb and returns it after 2 minutes
@@ -251,7 +251,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
return "<A HREF='?_src_=holder;[HrefToken(TRUE)];ahelp=[ref_src];ahelp_action=[action]'>[msg]</A>" return "<A HREF='?_src_=holder;[HrefToken(TRUE)];ahelp=[ref_src];ahelp_action=[action]'>[msg]</A>"
//message from the initiator without a target, all admins will see this //message from the initiator without a target, all admins will see this
//won't bug irc //won't bug irc/discord
/datum/admin_help/proc/MessageNoRecipient(msg) /datum/admin_help/proc/MessageNoRecipient(msg)
var/ref_src = "[REF(src)]" var/ref_src = "[REF(src)]"
//Message to be sent to all admins //Message to be sent to all admins
@@ -554,7 +554,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
else else
.["present"] += X .["present"] += X
/proc/send2irc_adminless_only(source, msg, requiredflags = R_BAN) /proc/send2tgs_adminless_only(source, msg, requiredflags = R_BAN)
var/list/adm = get_admin_counts(requiredflags) var/list/adm = get_admin_counts(requiredflags)
var/list/activemins = adm["present"] var/list/activemins = adm["present"]
. = activemins.len . = activemins.len
@@ -568,11 +568,11 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
final = "[msg] - No admins online" final = "[msg] - No admins online"
else else
final = "[msg] - All admins stealthed\[[english_list(stealthmins)]\], AFK\[[english_list(afkmins)]\], or lacks +BAN\[[english_list(powerlessmins)]\]! Total: [allmins.len] " final = "[msg] - All admins stealthed\[[english_list(stealthmins)]\], AFK\[[english_list(afkmins)]\], or lacks +BAN\[[english_list(powerlessmins)]\]! Total: [allmins.len] "
send2irc(source,final) send2tgs(source,final)
send2otherserver(source,final) send2otherserver(source,final)
/proc/send2irc(msg,msg2) /proc/send2tgs(msg,msg2)
msg = replacetext(replacetext(msg, "\proper", ""), "\improper", "") msg = replacetext(replacetext(msg, "\proper", ""), "\improper", "")
msg2 = replacetext(replacetext(msg2, "\proper", ""), "\improper", "") msg2 = replacetext(replacetext(msg2, "\proper", ""), "\improper", "")
world.TgsTargetedChatBroadcast("[msg] | [msg2]", TRUE) world.TgsTargetedChatBroadcast("[msg] | [msg2]", TRUE)
@@ -593,7 +593,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
world.Export("[servers[I]]?[list2params(message)]") world.Export("[servers[I]]?[list2params(message)]")
/proc/ircadminwho() /proc/tgsadminwho()
var/list/message = list("Admins: ") var/list/message = list("Admins: ")
var/list/admin_keys = list() var/list/admin_keys = list()
for(var/adm in GLOB.admins) for(var/adm in GLOB.admins)
@@ -608,7 +608,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
return jointext(message, "") return jointext(message, "")
/proc/keywords_lookup(msg,irc) /proc/keywords_lookup(msg,external)
//This is a list of words which are ignored by the parser when comparing message contents for names. MUST BE IN LOWER CASE! //This is a list of words which are ignored by the parser when comparing message contents for names. MUST BE IN LOWER CASE!
var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","alien","as", "i") var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","alien","as", "i")
@@ -671,7 +671,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
msg += "[original_word]<font size='1' color='[is_antag ? "red" : "black"]'>(<A HREF='?_src_=holder;[HrefToken(TRUE)];adminmoreinfo=[REF(found)]'>?</A>|<A HREF='?_src_=holder;[HrefToken(TRUE)];adminplayerobservefollow=[REF(found)]'>F</A>)</font> " msg += "[original_word]<font size='1' color='[is_antag ? "red" : "black"]'>(<A HREF='?_src_=holder;[HrefToken(TRUE)];adminmoreinfo=[REF(found)]'>?</A>|<A HREF='?_src_=holder;[HrefToken(TRUE)];adminplayerobservefollow=[REF(found)]'>F</A>)</font> "
continue continue
msg += "[original_word] " msg += "[original_word] "
if(irc) if(external)
if(founds == "") if(founds == "")
return "Search Failed" return "Search Failed"
else else

View File

@@ -1,5 +1,4 @@
#define IRCREPLYCOUNT 2 #define EXTERNALREPLYCOUNT 2
//allows right clicking mobs to send an admin PM to their client, forwards the selected mob's client to cmd_admin_pm //allows right clicking mobs to send an admin PM to their client, forwards the selected mob's client to cmd_admin_pm
/client/proc/cmd_admin_pm_context(mob/M in GLOB.mob_list) /client/proc/cmd_admin_pm_context(mob/M in GLOB.mob_list)
@@ -74,20 +73,20 @@
return return
var/client/recipient var/client/recipient
var/irc = 0 var/external = 0
if(istext(whom)) if(istext(whom))
if(cmptext(copytext(whom,1,2),"@")) if(cmptext(copytext(whom,1,2),"@"))
whom = findStealthKey(whom) whom = findStealthKey(whom)
if(whom == "IRCKEY") if(whom == "IRCKEY")
irc = 1 external = 1
else else
recipient = GLOB.directory[whom] recipient = GLOB.directory[whom]
else if(istype(whom, /client)) else if(istype(whom, /client))
recipient = whom recipient = whom
if(irc) if(external)
if(!ircreplyamount) //to prevent people from spamming irc if(!externalreplyamount) //to prevent people from spamming irc/discord
return return
if(!msg) if(!msg)
msg = input(src,"Message:", "Private message to Administrator") as message|null msg = input(src,"Message:", "Private message to Administrator") as message|null
@@ -95,7 +94,7 @@
if(!msg) if(!msg)
return return
if(holder) if(holder)
to_chat(src, "<span class='danger'>Error: Use the admin IRC channel, nerd.</span>") to_chat(src, "<span class='danger'>Error: Use the admin IRC/Discord channel, nerd.</span>")
return return
@@ -132,7 +131,7 @@
return return
//clean the message if it's not sent by a high-rank admin //clean the message if it's not sent by a high-rank admin
if(!check_rights(R_SERVER|R_DEBUG,0)||irc)//no sending html to the poor bots if(!check_rights(R_SERVER|R_DEBUG,0)||external)//no sending html to the poor bots
msg = trim(sanitize(copytext(msg,1,MAX_MESSAGE_LEN))) msg = trim(sanitize(copytext(msg,1,MAX_MESSAGE_LEN)))
if(!msg) if(!msg)
return return
@@ -144,11 +143,11 @@
var/keywordparsedmsg = keywords_lookup(msg) var/keywordparsedmsg = keywords_lookup(msg)
if(irc) if(external)
to_chat(src, "<span class='notice'>PM to-<b>Admins</b>: <span class='linkify'>[rawmsg]</span></span>") to_chat(src, "<span class='notice'>PM to-<b>Admins</b>: <span class='linkify'>[rawmsg]</span></span>")
var/datum/admin_help/AH = admin_ticket_log(src, "<font color='red'>Reply PM from-<b>[key_name(src, TRUE, TRUE)]</b> to <i>IRC</i>: [keywordparsedmsg]</font>") var/datum/admin_help/AH = admin_ticket_log(src, "<font color='red'>Reply PM from-<b>[key_name(src, TRUE, TRUE)]</b> to <i>External</i>: [keywordparsedmsg]</font>")
ircreplyamount-- externalreplyamount--
send2irc("[AH ? "#[AH.id] " : ""]Reply: [ckey]", rawmsg) send2tgs("[AH ? "#[AH.id] " : ""]Reply: [ckey]", rawmsg)
else else
if(recipient.holder) if(recipient.holder)
if(holder) //both are admins if(holder) //both are admins
@@ -194,10 +193,10 @@
to_chat(src, "<span class='danger'>Error: Admin-PM: Non-admin to non-admin PM communication is forbidden.</span>") to_chat(src, "<span class='danger'>Error: Admin-PM: Non-admin to non-admin PM communication is forbidden.</span>")
return return
if(irc) if(external)
log_admin_private("PM: [key_name(src)]->IRC: [rawmsg]") log_admin_private("PM: [key_name(src)]->External: [rawmsg]")
for(var/client/X in GLOB.admins) for(var/client/X in GLOB.admins)
to_chat(X, "<span class='notice'><B>PM: [key_name(src, X, 0)]-&gt;IRC:</B> [keywordparsedmsg]</span>") to_chat(X, "<span class='notice'><B>PM: [key_name(src, X, 0)]-&gt;External:</B> [keywordparsedmsg]</span>")
else else
window_flash(recipient, ignorepref = TRUE) window_flash(recipient, ignorepref = TRUE)
log_admin_private("PM: [key_name(src)]->[key_name(recipient)]: [rawmsg]") log_admin_private("PM: [key_name(src)]->[key_name(recipient)]: [rawmsg]")
@@ -216,34 +215,34 @@
else else
adminhelp(reply) //sender has left, adminhelp instead adminhelp(reply) //sender has left, adminhelp instead
#define IRC_AHELP_USAGE "Usage: ticket <close|resolve|icissue|reject|reopen \[ticket #\]|list>" #define TGS_AHELP_USAGE "Usage: ticket <close|resolve|icissue|reject|reopen \[ticket #\]|list>"
/proc/IrcPm(target,msg,sender) /proc/TgsPm(target,msg,sender)
target = ckey(target) target = ckey(target)
var/client/C = GLOB.directory[target] var/client/C = GLOB.directory[target]
var/datum/admin_help/ticket = C ? C.current_ticket : GLOB.ahelp_tickets.CKey2ActiveTicket(target) var/datum/admin_help/ticket = C ? C.current_ticket : GLOB.ahelp_tickets.CKey2ActiveTicket(target)
var/compliant_msg = trim(lowertext(msg)) var/compliant_msg = trim(lowertext(msg))
var/irc_tagged = "[sender](IRC)" var/tgs_tagged = "[sender](TGS/External)"
var/list/splits = splittext(compliant_msg, " ") var/list/splits = splittext(compliant_msg, " ")
if(splits.len && splits[1] == "ticket") if(splits.len && splits[1] == "ticket")
if(splits.len < 2) if(splits.len < 2)
return IRC_AHELP_USAGE return TGS_AHELP_USAGE
switch(splits[2]) switch(splits[2])
if("close") if("close")
if(ticket) if(ticket)
ticket.Close(irc_tagged) ticket.Close(tgs_tagged)
return "Ticket #[ticket.id] successfully closed" return "Ticket #[ticket.id] successfully closed"
if("resolve") if("resolve")
if(ticket) if(ticket)
ticket.Resolve(irc_tagged) ticket.Resolve(tgs_tagged)
return "Ticket #[ticket.id] successfully resolved" return "Ticket #[ticket.id] successfully resolved"
if("icissue") if("icissue")
if(ticket) if(ticket)
ticket.ICIssue(irc_tagged) ticket.ICIssue(tgs_tagged)
return "Ticket #[ticket.id] successfully marked as IC issue" return "Ticket #[ticket.id] successfully marked as IC issue"
if("reject") if("reject")
if(ticket) if(ticket)
ticket.Reject(irc_tagged) ticket.Reject(tgs_tagged)
return "Ticket #[ticket.id] successfully rejected" return "Ticket #[ticket.id] successfully rejected"
if("reopen") if("reopen")
if(ticket) if(ticket)
@@ -252,7 +251,7 @@
if(!isnull(fail)) if(!isnull(fail))
fail = text2num(splits[3]) fail = text2num(splits[3])
if(isnull(fail)) if(isnull(fail))
return "Error: No/Invalid ticket id specified. [IRC_AHELP_USAGE]" return "Error: No/Invalid ticket id specified. [TGS_AHELP_USAGE]"
var/datum/admin_help/AH = GLOB.ahelp_tickets.TicketByID(fail) var/datum/admin_help/AH = GLOB.ahelp_tickets.TicketByID(fail)
if(!AH) if(!AH)
return "Error: Ticket #[fail] not found" return "Error: Ticket #[fail] not found"
@@ -274,41 +273,41 @@
. += "#[AH.id]" . += "#[AH.id]"
return return
else else
return IRC_AHELP_USAGE return TGS_AHELP_USAGE
return "Error: Ticket could not be found" return "Error: Ticket could not be found"
var/static/stealthkey var/static/stealthkey
var/adminname = CONFIG_GET(flag/show_irc_name) ? irc_tagged : "Administrator" var/adminname = CONFIG_GET(flag/show_irc_name) ? tgs_tagged : "Administrator"
if(!C) if(!C)
return "Error: No client" return "Error: No client"
if(!stealthkey) if(!stealthkey)
stealthkey = GenIrcStealthKey() stealthkey = GenTgsStealthKey()
msg = sanitize(copytext(msg,1,MAX_MESSAGE_LEN)) msg = sanitize(copytext(msg,1,MAX_MESSAGE_LEN))
if(!msg) if(!msg)
return "Error: No message" return "Error: No message"
message_admins("IRC message from [sender] to [key_name_admin(C)] : [msg]") message_admins("External message from [sender] to [key_name_admin(C)] : [msg]")
log_admin_private("IRC PM: [sender] -> [key_name(C)] : [msg]") log_admin_private("External PM: [sender] -> [key_name(C)] : [msg]")
msg = emoji_parse(msg) msg = emoji_parse(msg)
to_chat(C, "<font color='red' size='4'><b>-- Administrator private message --</b></font>") to_chat(C, "<font color='red' size='4'><b>-- Administrator private message --</b></font>")
to_chat(C, "<span class='adminsay'>Admin PM from-<b><a href='?priv_msg=[stealthkey]'>[adminname]</A></b>: [msg]</span>") to_chat(C, "<span class='adminsay'>Admin PM from-<b><a href='?priv_msg=[stealthkey]'>[adminname]</A></b>: [msg]</span>")
to_chat(C, "<span class='adminsay'><i>Click on the administrator's name to reply.</i></span>") to_chat(C, "<span class='adminsay'><i>Click on the administrator's name to reply.</i></span>")
admin_ticket_log(C, "<font color='purple'>PM From [irc_tagged]: [msg]</font>") admin_ticket_log(C, "<font color='purple'>PM From [tgs_tagged]: [msg]</font>")
window_flash(C, ignorepref = TRUE) window_flash(C, ignorepref = TRUE)
//always play non-admin recipients the adminhelp sound //always play non-admin recipients the adminhelp sound
SEND_SOUND(C, 'sound/effects/adminhelp.ogg') SEND_SOUND(C, 'sound/effects/adminhelp.ogg')
C.ircreplyamount = IRCREPLYCOUNT C.externalreplyamount = EXTERNALREPLYCOUNT
return "Message Successful" return "Message Successful"
/proc/GenIrcStealthKey() /proc/GenTgsStealthKey()
var/num = (rand(0,1000)) var/num = (rand(0,1000))
var/i = 0 var/i = 0
while(i == 0) while(i == 0)
@@ -321,4 +320,4 @@
GLOB.stealthminID["IRCKEY"] = stealth GLOB.stealthminID["IRCKEY"] = stealth
return stealth return stealth
#undef IRCREPLYCOUNT #undef EXTERNALREPLYCOUNT

View File

@@ -24,8 +24,8 @@
var/total_message_count = 0 var/total_message_count = 0
///Next tick to reset the total message counter ///Next tick to reset the total message counter
var/total_count_reset = 0 var/total_count_reset = 0
///Internal counter for clients sending irc relay messages via ahelp to prevent spamming. Set to a number every time an admin reply is sent, decremented for every client send. ///Internal counter for clients sending external (IRC/Discord) relay messages via ahelp to prevent spamming. Set to a number every time an admin reply is sent, decremented for every client send.
var/ircreplyamount = 0 var/externalreplyamount = 0
///////// /////////
//OTHER// //OTHER//

View File

@@ -384,7 +384,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls)
if (nnpa >= 0) if (nnpa >= 0)
message_admins("New user: [key_name_admin(src)] is connecting here for the first time.") message_admins("New user: [key_name_admin(src)] is connecting here for the first time.")
if (CONFIG_GET(flag/irc_first_connection_alert)) if (CONFIG_GET(flag/irc_first_connection_alert))
send2irc_adminless_only("New-user", "[key_name(src)] is connecting for the first time!") send2tgs_adminless_only("New-user", "[key_name(src)] is connecting for the first time!")
else if (isnum(cached_player_age) && cached_player_age < nnpa) else if (isnum(cached_player_age) && cached_player_age < nnpa)
message_admins("New user: [key_name_admin(src)] just connected with an age of [cached_player_age] day[(player_age==1?"":"s")]") message_admins("New user: [key_name_admin(src)] just connected with an age of [cached_player_age] day[(player_age==1?"":"s")]")
if(CONFIG_GET(flag/use_account_age_for_jobs) && account_age >= 0) if(CONFIG_GET(flag/use_account_age_for_jobs) && account_age >= 0)
@@ -392,7 +392,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls)
if(account_age >= 0 && account_age < nnpa) if(account_age >= 0 && account_age < nnpa)
message_admins("[key_name_admin(src)] (IP: [address], ID: [computer_id]) is a new BYOND account [account_age] day[(account_age==1?"":"s")] old, created on [account_join_date].") message_admins("[key_name_admin(src)] (IP: [address], ID: [computer_id]) is a new BYOND account [account_age] day[(account_age==1?"":"s")] old, created on [account_join_date].")
if (CONFIG_GET(flag/irc_first_connection_alert)) if (CONFIG_GET(flag/irc_first_connection_alert))
send2irc_adminless_only("new_byond_user", "[key_name(src)] (IP: [address], ID: [computer_id]) is a new BYOND account [account_age] day[(account_age==1?"":"s")] old, created on [account_join_date].") send2tgs_adminless_only("new_byond_user", "[key_name(src)] (IP: [address], ID: [computer_id]) is a new BYOND account [account_age] day[(account_age==1?"":"s")] old, created on [account_join_date].")
get_message_output("watchlist entry", ckey) get_message_output("watchlist entry", ckey)
check_ip_intel() check_ip_intel()
validate_key_in_db() validate_key_in_db()
@@ -476,7 +476,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls)
"Forever alone :("\ "Forever alone :("\
) )
send2irc("Server", "[cheesy_message] (No admins online)") send2tgs("Server", "[cheesy_message] (No admins online)")
GLOB.ahelp_tickets.ClientLogout(src) GLOB.ahelp_tickets.ClientLogout(src)
GLOB.directory -= ckey GLOB.directory -= ckey
@@ -679,7 +679,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls)
if (!cidcheck_failedckeys[ckey]) if (!cidcheck_failedckeys[ckey])
message_admins("<span class='adminnotice'>[key_name(src)] has been detected as using a cid randomizer. Connection rejected.</span>") message_admins("<span class='adminnotice'>[key_name(src)] has been detected as using a cid randomizer. Connection rejected.</span>")
send2irc_adminless_only("CidRandomizer", "[key_name(src)] has been detected as using a cid randomizer. Connection rejected.") send2tgs_adminless_only("CidRandomizer", "[key_name(src)] has been detected as using a cid randomizer. Connection rejected.")
cidcheck_failedckeys[ckey] = TRUE cidcheck_failedckeys[ckey] = TRUE
note_randomizer_user() note_randomizer_user()
@@ -690,7 +690,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls)
else else
if (cidcheck_failedckeys[ckey]) if (cidcheck_failedckeys[ckey])
message_admins("<span class='adminnotice'>[key_name_admin(src)] has been allowed to connect after showing they removed their cid randomizer</span>") message_admins("<span class='adminnotice'>[key_name_admin(src)] has been allowed to connect after showing they removed their cid randomizer</span>")
send2irc_adminless_only("CidRandomizer", "[key_name(src)] has been allowed to connect after showing they removed their cid randomizer.") send2tgs_adminless_only("CidRandomizer", "[key_name(src)] has been allowed to connect after showing they removed their cid randomizer.")
cidcheck_failedckeys -= ckey cidcheck_failedckeys -= ckey
if (cidcheck_spoofckeys[ckey]) if (cidcheck_spoofckeys[ckey])
message_admins("<span class='adminnotice'>[key_name_admin(src)] has been allowed to connect after appearing to have attempted to spoof a cid randomizer check because it <i>appears</i> they aren't spoofing one this time</span>") message_admins("<span class='adminnotice'>[key_name_admin(src)] has been allowed to connect after appearing to have attempted to spoof a cid randomizer check because it <i>appears</i> they aren't spoofing one this time</span>")

View File

@@ -84,6 +84,6 @@
continue //Don't show afk admins to adminwho continue //Don't show afk admins to adminwho
if(!C.holder.fakekey) if(!C.holder.fakekey)
msg += "\t[C] is a [C.holder.rank]\n" msg += "\t[C] is a [C.holder.rank]\n"
msg += "<span class='info'>Adminhelps are also sent to IRC. If no admins are available in game adminhelp anyways and an admin on IRC will see it and respond.</span>" msg += "<span class='info'>Adminhelps are also sent through TGS to services like IRC and Discord. If no admins are available in game adminhelp anyways and an admin will see it and respond.</span>"
to_chat(src, msg) to_chat(src, msg)

View File

@@ -258,7 +258,7 @@
- limbs (stores as the limb name and whether it is removed/fine, organic/robotic) - limbs (stores as the limb name and whether it is removed/fine, organic/robotic)
These procs only store limbs as to increase the number of matching icon_render_keys These procs only store limbs as to increase the number of matching icon_render_keys
This cache exists because drawing 6/7 icons for humans constantly is quite a waste This cache exists because drawing 6/7 icons for humans constantly is quite a waste
See RemieRichards on irc.rizon.net #coderbus See RemieRichards on irc.rizon.net #coderbus (RIP remie :sob:)
*/ */
//produces a key based on the mob's limbs //produces a key based on the mob's limbs

View File

@@ -13,7 +13,7 @@
break break
var/msg = "[ADMIN_LOOKUPFLW(src)] was found to have no .loc with an attached client, if the cause is unknown it would be wise to ask how this was accomplished." var/msg = "[ADMIN_LOOKUPFLW(src)] was found to have no .loc with an attached client, if the cause is unknown it would be wise to ask how this was accomplished."
message_admins(msg) message_admins(msg)
send2irc_adminless_only("Mob", msg, R_ADMIN) send2tgs_adminless_only("Mob", msg, R_ADMIN)
log_game("[key_name(src)] was found to have no .loc with an attached client.") log_game("[key_name(src)] was found to have no .loc with an attached client.")
// This is a temporary error tracker to make sure we've caught everything // This is a temporary error tracker to make sure we've caught everything

View File

@@ -315,7 +315,7 @@
return return
mode = SHUTTLE_DOCKED mode = SHUTTLE_DOCKED
setTimer(SSshuttle.emergencyDockTime) setTimer(SSshuttle.emergencyDockTime)
send2irc("Server", "The Emergency Shuttle has docked with the station.") send2tgs("Server", "The Emergency Shuttle has docked with the station.")
priority_announce("The Emergency Shuttle has docked with the station. You have [timeLeft(600)] minutes to board the Emergency Shuttle.", null, 'sound/ai/shuttledock.ogg', "Priority") priority_announce("The Emergency Shuttle has docked with the station. You have [timeLeft(600)] minutes to board the Emergency Shuttle.", null, 'sound/ai/shuttledock.ogg', "Priority")
ShuttleDBStuff() ShuttleDBStuff()