diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm
index dce3f86c6b9..9a41733e8a2 100644
--- a/code/modules/client/client procs.dm
+++ b/code/modules/client/client procs.dm
@@ -572,9 +572,13 @@
if(ip_intel >= config.ipintel_rating_bad)
var/detailsurl = config.ipintel_detailsurl ? "(IP Info)" : ""
if(config.ipintel_whitelist)
- message_admins("IPIntel: [key_name_admin(src)] on IP [address] was rejected. [detailsurl]")
- // Don't send them a message. They won't see it at this stage. Instead, they see a message when they try to reconnect.
- qdel(src)
+ spawn(40) // This is necessary because without it, they won't see the message, and addtimer cannot be used because the timer system may not have initialized yet
+ message_admins("IPIntel: [key_name_admin(src)] on IP [address] was rejected. [detailsurl]")
+ var/blockmsg = "Error: proxy/VPN detected. Proxy/VPN use is not allowed here. Deactivate it before you reconnect."
+ if(config.banappeals)
+ blockmsg += "\nIf you are not actually using a proxy/VPN, or have no choice but to use one, request whitelisting at: [config.banappeals]"
+ to_chat(src, blockmsg)
+ qdel(src)
else
message_admins("IPIntel: [key_name_admin(src)] on IP [address] is likely to be using a Proxy/VPN. [detailsurl]")