This commit is contained in:
Brandon Sturgeon 2022-01-19 04:58:48 -08:00
parent fded1b5379
commit 24f4437ce2
5 changed files with 55 additions and 21 deletions

View File

@ -1,6 +1,7 @@
require "gwsockets"
require "logger"
import Read from file
import GetColor from team
import TableToJSON from util
@ -41,7 +42,9 @@ hook.Add "Think", loadHook, ->
ChatTransit.Send = (data) =>
logger\info "Sending '#{data.Type}'"
data.Realm = @Realm\GetString!
data.Data.SteamId or= ""
@WebSocket\write TableToJSON data

View File

@ -1,8 +1,15 @@
ChatTransit.PlayerAuthed = (ply, steamId) =>
-- TODO: Send a preliminary avatarservice link that will be backfilled when they fully connect
ChatTransit.PlayerConnect = (data) =>
:bot, :name, networkid: steamId = data
bot = tobool bot
steamId = nil if bot
@Send
Type: "connect"
Data:
SteamName: ply\Nick!
SteamName: name
SteamId: steamId
ChatTransit.PlayerInitialSpawn = (ply) =>
@ -28,5 +35,6 @@ ChatTransit.PlayerInitialSpawn = (ply) =>
sendMessage!
hook.Add "PlayerAuthed", "CFC_ChatTransit_SpawnListener", ChatTransit\PlayerAuthed
gameevent.Listen "player_connect"
hook.Add "player_connect", "CFC_ChatTransit_SpawnListener", ChatTransit\PlayerConnect
hook.Add "PlayerInitialSpawn", "CFC_ChatTransit_SpawnListener", ChatTransit\PlayerInitialSpawn

View File

@ -1,11 +1,21 @@
ChatTransit.PlayerDisconnected = (ply) =>
avatar = ply.SteamLookup.PlayerSummary.response.players[1].avatarfull
import GetBySteamID from player
import SteamIDTo64 from util
ChatTransit.PlayerDisconnected = (data) =>
:name, :reason, networkid: steamId = data
ply = GetBySteamID steamId
summary = ply and ply.SteamLookup and ply.SteamLookup.PlayerSummary
avatar = summary and summary.response.players[1].avatarfull
@Send
Type: "disconnect"
Data:
Avatar: avatar
SteamName: ply\Nick!
SteamId: ply\SteamID64!
SteamName: ply and ply\Nick! or name
SteamId: ply and ply\SteamID64! or SteamIDTo64 steamId
Content: reason
hook.Add "PlayerDisconnected", "CFC_ChatTransit_DisconnectListener", ChatTransit\PlayerDisconnected
gameevent.Listen "player_disconnect"
hook.Add "player_disconnect", "CFC_ChatTransit_DisconnectListener", ChatTransit\PlayerDisconnected

View File

@ -16,7 +16,7 @@ ChatTransit.ReceiveULXAction = (msg) =>
M = (...) ->
_Msg ...
ChatTransit.ReceiveULXAction ...
ChatTransit\ReceiveULXAction ...
hook.Add "InitPostEntity", "ChatTransit_WrapUlxLog", ->
return unless ulx

View File

@ -14,8 +14,8 @@ import (
var discord *discordgo.Session
type EventStruct struct {
Type string
Data EventData
Type string
Realm string
}
@ -36,10 +36,17 @@ var WebhookSecret string = os.Getenv("WEBHOOK_SECRET")
const urlRegexString = `https?:\/\/[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)`
const (
JOIN_EMOJI = "<:green_cross_cir:654105378933571594>"
LEAVE_EMOJI = "<:circle_red:855605697978957854>"
HALTED_EMOJI = "<:halted:398133588010336259>"
COP_EMOJI = "👮"
EMOJI_JOIN = "<:green_cross_cir:654105378933571594>"
EMOJI_LEAVE = "<:circle_red:855605697978957854>"
EMOJI_HALTED = "<:halted:398133588010336259>"
EMOJI_CONNECT = "📡"
EMOJI_ULX = "⌨️"
COLOR_RED = 0xE7373E
COLOR_GREEN = 0x37E73E
COLOR_ORANGE = 0xE78837
COLOR_BLUE = 0x3796E7
COLOR_YELLOW = 0xE7E037
)
var urlPattern = regexp.MustCompile(urlRegexString)
@ -49,7 +56,13 @@ func escapeUrl(message string) string {
}
func steamLinkMessage(event EventStruct, message string) string {
steamLink := "https://steamid.io/lookup/" + event.Data.SteamId
steamId := event.Data.SteamId
if steamId == "" {
return message
}
steamLink := "https://steamid.io/lookup/" + steamId
return "[" + message + "](" + steamLink + ")"
}
@ -96,12 +109,12 @@ func sendEvent(discord *discordgo.Session, event EventStruct, eventText string,
func sendConnectMessage(discord *discordgo.Session, event EventStruct) {
message := steamLinkMessage(event, "Connected to the server")
sendEvent(discord, event, message, 0x009900, JOIN_EMOJI)
sendEvent(discord, event, message, COLOR_GREEN, EMOJI_CONNECT)
}
func sendSpawnMessage(discord *discordgo.Session, event EventStruct) {
message := steamLinkMessage(event, "Spawned in the server")
sendEvent(discord, event, message, 0x009900, JOIN_EMOJI)
sendEvent(discord, event, message, COLOR_GREEN, EMOJI_JOIN)
}
func sendDisconnectMessage(discord *discordgo.Session, event EventStruct) {
@ -114,15 +127,15 @@ func sendDisconnectMessage(discord *discordgo.Session, event EventStruct) {
message = message + " (" + reason + ")"
}
sendEvent(discord, event, message, 0x990000, LEAVE_EMOJI)
sendEvent(discord, event, message, COLOR_ORANGE, EMOJI_LEAVE)
}
func sendAnticrashMessage(discord *discordgo.Session, event EventStruct) {
sendEvent(discord, event, event.Data.Content, 0xE7373E, HALTED_EMOJI)
sendEvent(discord, event, event.Data.Content, COLOR_RED, EMOJI_HALTED)
}
func sendUlxAction(discord *discordgo.Session, event EventStruct) {
sendEvent(discord, event, event.Data.Content, 0xE7373E, COP_EMOJI)
sendEvent(discord, event, event.Data.Content, COLOR_BLUE, EMOJI_ULX)
}
func queueGroomer() {
@ -155,7 +168,7 @@ func queueGroomer() {
case "connect":
sendConnectMessage(discord, message)
case "spawn":
sendConnectMessage(discord, message)
sendSpawnMessage(discord, message)
case "disconnect":
sendDisconnectMessage(discord, message)
case "anticrash_event":