steamutils 1.2.87 → 1.2.89
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SteamClient.js +206 -173
- package/index.js +2 -2
- package/package.json +1 -1
package/SteamClient.js
CHANGED
|
@@ -78,9 +78,9 @@ const appid = 730
|
|
|
78
78
|
export let CSGO_VER = 13960
|
|
79
79
|
const FreeAppList = JSON.parse(fs.readFileSync(path.join(__dirname, 'free_packages.json'))).packages
|
|
80
80
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
81
|
+
SteamUtils.getAppVersion(appid).then(function (ver) {
|
|
82
|
+
CSGO_VER = ver
|
|
83
|
+
})
|
|
84
84
|
|
|
85
85
|
const PersonasCache = []
|
|
86
86
|
|
|
@@ -105,7 +105,7 @@ function SteamClient({
|
|
|
105
105
|
let sendMessageTimestamp = 0
|
|
106
106
|
let lastTimePartyRegister = 0
|
|
107
107
|
let lastTimePartySearch = 0
|
|
108
|
-
|
|
108
|
+
const appsPlayed = []
|
|
109
109
|
|
|
110
110
|
const onAnyCallbacks = []
|
|
111
111
|
|
|
@@ -373,9 +373,9 @@ function SteamClient({
|
|
|
373
373
|
prime = false,
|
|
374
374
|
game_type = 'Competitive',
|
|
375
375
|
rank = 'Silver Elite',
|
|
376
|
-
timeout =
|
|
376
|
+
timeout = 5000,
|
|
377
377
|
} = {}) {
|
|
378
|
-
|
|
378
|
+
const players = await new Promise(resolve => {
|
|
379
379
|
steamClient.sendToGC(appid, Protos.csgo.ECsgoGCMsg.k_EMsgGCCStrike15_v2_Party_Search, {}, protoEncode(Protos.csgo.CMsgGCCStrike15_v2_Party_Search, {
|
|
380
380
|
ver: CSGO_VER,
|
|
381
381
|
apr: prime ? 1 : 0,
|
|
@@ -387,6 +387,17 @@ function SteamClient({
|
|
|
387
387
|
lastTimePartySearch = new Date().getTime()
|
|
388
388
|
pushGCCallback('partySearch', resolve, timeout)
|
|
389
389
|
})
|
|
390
|
+
if (Array.isArray(players) && players.length) {
|
|
391
|
+
const personas = await getPersonas(players.map(p => p.steamId))
|
|
392
|
+
for (const player of players) {
|
|
393
|
+
const persona = personas.find(p => p.id == player.steamId)
|
|
394
|
+
if (persona) {
|
|
395
|
+
player.player_name = persona.player_name
|
|
396
|
+
player.avatar_hash = persona.avatar_hash
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
return players
|
|
390
401
|
}
|
|
391
402
|
|
|
392
403
|
async function createLobby() {
|
|
@@ -568,13 +579,13 @@ function SteamClient({
|
|
|
568
579
|
const result = protoDecode(Protos.csgo.CSOPersonaDataPublic, object_data);
|
|
569
580
|
obj.PersonaDataPublic = result
|
|
570
581
|
const example = {
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
582
|
+
player_level: 4,
|
|
583
|
+
commendation: {
|
|
584
|
+
cmd_friendly: 149,
|
|
585
|
+
cmd_teaching: 108,
|
|
586
|
+
cmd_leader: 115
|
|
576
587
|
},
|
|
577
|
-
|
|
588
|
+
elevated_state: true
|
|
578
589
|
}
|
|
579
590
|
break
|
|
580
591
|
}
|
|
@@ -585,11 +596,11 @@ function SteamClient({
|
|
|
585
596
|
case 7: {
|
|
586
597
|
const CSOEconGameAccountClient = protoDecode(Protos.csgo.CSOEconGameAccountClient, object_data);
|
|
587
598
|
const CSOEconGameAccountClientExample = {
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
599
|
+
additional_backpack_slots: 0,
|
|
600
|
+
bonus_xp_timestamp_refresh: 1688518800,//Wednesday 1:00:00 AM every week
|
|
601
|
+
bonus_xp_usedflags: 19,
|
|
602
|
+
elevated_state: 5,
|
|
603
|
+
elevated_timestamp: 5
|
|
593
604
|
} //1688518800
|
|
594
605
|
if ((CSOEconGameAccountClient.bonus_xp_usedflags & 16) != 0) { // EXPBonusFlag::PrestigeEarned
|
|
595
606
|
prime = true
|
|
@@ -637,10 +648,10 @@ function SteamClient({
|
|
|
637
648
|
case 43: {
|
|
638
649
|
const result = protoDecode(Protos.csgo.CSOEconDefaultEquippedDefinitionInstanceClient, object_data);
|
|
639
650
|
const example = {
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
651
|
+
account_id: 1080136620,
|
|
652
|
+
item_definition: 61,
|
|
653
|
+
class_id: 3,
|
|
654
|
+
slot_id: 2
|
|
644
655
|
}
|
|
645
656
|
break
|
|
646
657
|
}
|
|
@@ -811,73 +822,68 @@ function SteamClient({
|
|
|
811
822
|
const result = protoDecode(Protos.csgo.CMsgGCCStrike15_v2_Party_SearchResults, payload)
|
|
812
823
|
const entries = _.uniqBy(result.entries, 'id')
|
|
813
824
|
//{
|
|
814
|
-
//
|
|
815
|
-
//
|
|
816
|
-
//
|
|
817
|
-
//
|
|
818
|
-
//
|
|
819
|
-
//
|
|
820
|
-
//
|
|
825
|
+
// id: 144900402,
|
|
826
|
+
// grp: 0,
|
|
827
|
+
// game_type: 8,
|
|
828
|
+
// apr: 1,
|
|
829
|
+
// ark: 17,
|
|
830
|
+
// loc: 20041,
|
|
831
|
+
// accountid: 0
|
|
821
832
|
// }
|
|
822
833
|
|
|
823
|
-
const players = []
|
|
824
834
|
|
|
825
|
-
const steamIDs = entries
|
|
826
|
-
.map(p => SteamID.fromIndividualAccountID(p.id).getSteamID64())
|
|
827
|
-
const personas = await getPersonas(steamIDs)
|
|
828
835
|
//{
|
|
829
|
-
//
|
|
830
|
-
//
|
|
831
|
-
//
|
|
832
|
-
//
|
|
833
|
-
//
|
|
834
|
-
//
|
|
835
|
-
//
|
|
836
|
-
//
|
|
837
|
-
//
|
|
838
|
-
//
|
|
839
|
-
//
|
|
840
|
-
//
|
|
841
|
-
//
|
|
842
|
-
//
|
|
843
|
-
//
|
|
844
|
-
//
|
|
845
|
-
//
|
|
846
|
-
//
|
|
847
|
-
//
|
|
848
|
-
//
|
|
849
|
-
//
|
|
850
|
-
//
|
|
851
|
-
//
|
|
852
|
-
//
|
|
853
|
-
//
|
|
854
|
-
//
|
|
855
|
-
//
|
|
856
|
-
//
|
|
857
|
-
//
|
|
858
|
-
//
|
|
859
|
-
//
|
|
860
|
-
//
|
|
861
|
-
//
|
|
862
|
-
//
|
|
836
|
+
// id: "76561199265943339",
|
|
837
|
+
// rich_presence: [],
|
|
838
|
+
// persona_state: null,
|
|
839
|
+
// game_played_app_id: null,
|
|
840
|
+
// game_server_ip: null,
|
|
841
|
+
// game_server_port: null,
|
|
842
|
+
// persona_state_flags: null,
|
|
843
|
+
// online_session_instances: null,
|
|
844
|
+
// persona_set_by_user: null,
|
|
845
|
+
// player_name: "杀人不见血",
|
|
846
|
+
// query_port: null,
|
|
847
|
+
// steamid_source: null,
|
|
848
|
+
// avatar_hash: "33994e26f1fe7e2093f8c7dee66c1ac91531050d",
|
|
849
|
+
// last_logoff: null,
|
|
850
|
+
// last_logon: null,
|
|
851
|
+
// last_seen_online: null,
|
|
852
|
+
// clan_rank: null,
|
|
853
|
+
// game_name: null,
|
|
854
|
+
// gameid: null,
|
|
855
|
+
// game_data_blob: null,
|
|
856
|
+
// clan_data: null,
|
|
857
|
+
// clan_tag: null,
|
|
858
|
+
// broadcast_id: null,
|
|
859
|
+
// game_lobby_id: null,
|
|
860
|
+
// watching_broadcast_accountid: null,
|
|
861
|
+
// watching_broadcast_appid: null,
|
|
862
|
+
// watching_broadcast_viewers: null,
|
|
863
|
+
// watching_broadcast_title: null,
|
|
864
|
+
// is_community_banned: null,
|
|
865
|
+
// player_name_pending_review: null,
|
|
866
|
+
// avatar_pending_review: null,
|
|
867
|
+
// avatar_url_icon: "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/33/33994e26f1fe7e2093f8c7dee66c1ac91531050d.jpg",
|
|
868
|
+
// avatar_url_medium: "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/33/33994e26f1fe7e2093f8c7dee66c1ac91531050d_medium.jpg",
|
|
869
|
+
// avatar_url_full: "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/33/33994e26f1fe7e2093f8c7dee66c1ac91531050d_full.jpg"
|
|
863
870
|
// }
|
|
871
|
+
|
|
872
|
+
const players = []
|
|
864
873
|
for (const player of entries) {
|
|
865
874
|
try {
|
|
866
875
|
const prime = player.apr === 1 ? 'PRIME' : 'NON-PRIME'
|
|
867
876
|
const loc = LOCS[player.loc] || player.loc
|
|
868
877
|
const steamId = SteamID.fromIndividualAccountID(player.id).getSteamID64()
|
|
869
|
-
const persona = personas.find(p => p.id == steamId)
|
|
870
878
|
const friendCode = FriendCode.encode(steamId)
|
|
871
879
|
|
|
872
880
|
// if ((LOCS[player.loc] == 'VN' || !LOCS[player.loc])) {
|
|
873
881
|
players.push({
|
|
874
882
|
prime,
|
|
875
|
-
player_name: persona.player_name,
|
|
876
883
|
rank: RANKS[player.ark] !== undefined ? RANKS[player.ark] : player.ark,
|
|
877
|
-
loc
|
|
884
|
+
loc,
|
|
878
885
|
steamId,
|
|
879
886
|
friendCode,
|
|
880
|
-
avatar_hash: persona.avatar_hash,
|
|
881
887
|
})
|
|
882
888
|
// }
|
|
883
889
|
} catch (e) {
|
|
@@ -940,8 +946,8 @@ function SteamClient({
|
|
|
940
946
|
if (player) {
|
|
941
947
|
player.prime = !!(player.ranking?.account_id || player.player_level || player.player_cur_xp)
|
|
942
948
|
player.steamId = SteamID.fromIndividualAccountID(player.account_id).getSteamID64()
|
|
949
|
+
callGCCallback('PlayersProfile_' + player.account_id, player)
|
|
943
950
|
}
|
|
944
|
-
callGCCallback('PlayersProfile' + player?.account_id, player)
|
|
945
951
|
callEvent(events.playersProfile, player)
|
|
946
952
|
break
|
|
947
953
|
}
|
|
@@ -978,66 +984,66 @@ function SteamClient({
|
|
|
978
984
|
async user(steamId, data) {
|
|
979
985
|
callEvent(events.user, {steamId: steamId.getSteamID64(), data})
|
|
980
986
|
const dataExample = {
|
|
981
|
-
|
|
987
|
+
rich_presence: [
|
|
982
988
|
{
|
|
983
|
-
|
|
984
|
-
|
|
989
|
+
key: "status",
|
|
990
|
+
value: "Competitive Mirage [ 3 : 6 ]"
|
|
985
991
|
},
|
|
986
992
|
{
|
|
987
|
-
|
|
988
|
-
|
|
993
|
+
key: "version",
|
|
994
|
+
value: "13875"
|
|
989
995
|
},
|
|
990
996
|
{
|
|
991
|
-
|
|
992
|
-
|
|
997
|
+
key: "game:state",
|
|
998
|
+
value: "game"
|
|
993
999
|
},
|
|
994
1000
|
{
|
|
995
|
-
|
|
996
|
-
|
|
1001
|
+
key: "steam_display",
|
|
1002
|
+
value: "#display_GameKnownMapScore"
|
|
997
1003
|
},
|
|
998
1004
|
{
|
|
999
|
-
|
|
1000
|
-
|
|
1005
|
+
key: "game:mode",
|
|
1006
|
+
value: "competitive"
|
|
1001
1007
|
},
|
|
1002
1008
|
{
|
|
1003
|
-
|
|
1004
|
-
|
|
1009
|
+
key: "game:mapgroupname",
|
|
1010
|
+
value: "mg_de_mirage"
|
|
1005
1011
|
},
|
|
1006
1012
|
{
|
|
1007
|
-
|
|
1008
|
-
|
|
1013
|
+
key: "game:map",
|
|
1014
|
+
value: "de_mirage"
|
|
1009
1015
|
},
|
|
1010
1016
|
{
|
|
1011
|
-
|
|
1012
|
-
|
|
1017
|
+
key: "game:server",
|
|
1018
|
+
value: "kv"
|
|
1013
1019
|
},
|
|
1014
1020
|
{
|
|
1015
|
-
|
|
1016
|
-
|
|
1021
|
+
key: "watch",
|
|
1022
|
+
value: "1"
|
|
1017
1023
|
},
|
|
1018
1024
|
{
|
|
1019
|
-
|
|
1020
|
-
|
|
1025
|
+
key: "steam_player_group",
|
|
1026
|
+
value: "2134948645"
|
|
1021
1027
|
},
|
|
1022
1028
|
{
|
|
1023
|
-
|
|
1024
|
-
|
|
1029
|
+
key: "game:score",
|
|
1030
|
+
value: "[ 3 : 6 ]"
|
|
1025
1031
|
}
|
|
1026
1032
|
],
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1033
|
+
friendid: "76561199405834425",
|
|
1034
|
+
persona_state: 1,
|
|
1035
|
+
game_played_app_id: 730,
|
|
1036
|
+
game_server_ip: null,
|
|
1037
|
+
game_server_port: null,
|
|
1038
|
+
persona_state_flags: 1,
|
|
1039
|
+
online_session_instances: 1,
|
|
1040
|
+
persona_set_by_user: null,
|
|
1041
|
+
player_name: "quỷ súng",
|
|
1042
|
+
query_port: null,
|
|
1043
|
+
steamid_source: "0",
|
|
1044
|
+
avatar_hash: {
|
|
1045
|
+
type: "Buffer",
|
|
1046
|
+
data: [
|
|
1041
1047
|
23,
|
|
1042
1048
|
163,
|
|
1043
1049
|
216,
|
|
@@ -1060,27 +1066,27 @@ function SteamClient({
|
|
|
1060
1066
|
205
|
|
1061
1067
|
]
|
|
1062
1068
|
},
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1069
|
+
last_logoff: 1683950268,
|
|
1070
|
+
last_logon: 1683950281,
|
|
1071
|
+
last_seen_online: 1683950268,
|
|
1072
|
+
clan_rank: null,
|
|
1073
|
+
game_name: "",
|
|
1074
|
+
gameid: "730",
|
|
1075
|
+
game_data_blob: {
|
|
1076
|
+
type: "Buffer",
|
|
1077
|
+
data: []
|
|
1072
1078
|
},
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1079
|
+
clan_data: null,
|
|
1080
|
+
clan_tag: null,
|
|
1081
|
+
broadcast_id: "0",
|
|
1082
|
+
game_lobby_id: "0",
|
|
1083
|
+
watching_broadcast_accountid: null,
|
|
1084
|
+
watching_broadcast_appid: null,
|
|
1085
|
+
watching_broadcast_viewers: null,
|
|
1086
|
+
watching_broadcast_title: null,
|
|
1087
|
+
is_community_banned: null,
|
|
1088
|
+
player_name_pending_review: null,
|
|
1089
|
+
avatar_pending_review: null
|
|
1084
1090
|
}
|
|
1085
1091
|
},
|
|
1086
1092
|
async playingState(playing_blocked, playing_app) {
|
|
@@ -1150,21 +1156,21 @@ function SteamClient({
|
|
|
1150
1156
|
data.message_no_bbcode = data.message_no_bbcode?.replaceAll(`ː`, `:`)
|
|
1151
1157
|
data.message = data.message?.replaceAll(`ː`, `:`)
|
|
1152
1158
|
const example = {
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1159
|
+
steamid_friend: {
|
|
1160
|
+
universe: 1,
|
|
1161
|
+
type: 1,
|
|
1162
|
+
instance: 1,
|
|
1163
|
+
accountid: 1080136620
|
|
1158
1164
|
},
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1165
|
+
chat_entry_type: 1,
|
|
1166
|
+
from_limited_account: false,
|
|
1167
|
+
message: "xxx",
|
|
1168
|
+
ordinal: 0,
|
|
1169
|
+
local_echo: false,
|
|
1170
|
+
message_no_bbcode: "xxx",
|
|
1171
|
+
low_priority: false,
|
|
1172
|
+
server_timestamp: "2023-05-14T09:26:25.000Z",
|
|
1173
|
+
message_bbcode_parsed: [
|
|
1168
1174
|
"xxx"
|
|
1169
1175
|
]
|
|
1170
1176
|
}
|
|
@@ -1252,18 +1258,19 @@ function SteamClient({
|
|
|
1252
1258
|
/*
|
|
1253
1259
|
* usually take 400 -> 800 miliseconds
|
|
1254
1260
|
* */
|
|
1255
|
-
function getPlayersProfile(
|
|
1261
|
+
function getPlayersProfile(steamId) {
|
|
1262
|
+
const accountid = new SteamID(steamId).accountid
|
|
1256
1263
|
steamClient.sendToGC(730, Protos.csgo.ECsgoGCMsg.k_EMsgGCCStrike15_v2_ClientRequestPlayersProfile, {}, protoEncode(Protos.csgo.CMsgGCCStrike15_v2_ClientRequestPlayersProfile, {
|
|
1257
1264
|
account_id: accountid, // account_id: new SteamID('76561199184696945').accountid,
|
|
1258
1265
|
request_level: 32
|
|
1259
1266
|
}))
|
|
1260
1267
|
return new Promise(resolve => {
|
|
1261
|
-
pushGCCallback('
|
|
1268
|
+
pushGCCallback('PlayersProfile_' + accountid, resolve, 2000)
|
|
1262
1269
|
})
|
|
1263
1270
|
}
|
|
1264
1271
|
|
|
1265
|
-
async function checkPlayerPrimeStatus(
|
|
1266
|
-
const profile = await getPlayersProfile(
|
|
1272
|
+
async function checkPlayerPrimeStatus(steamId) {
|
|
1273
|
+
const profile = await getPlayersProfile(steamId)
|
|
1267
1274
|
if (!profile) return false
|
|
1268
1275
|
|
|
1269
1276
|
if (profile.ranking?.account_id) {
|
|
@@ -1446,10 +1453,10 @@ function SteamClient({
|
|
|
1446
1453
|
}
|
|
1447
1454
|
|
|
1448
1455
|
async function autoRequestFreeLicense(shouldLog = false, max = 10) {
|
|
1449
|
-
const mCookies = await getCookiesWait()
|
|
1450
|
-
if (!mCookies) return
|
|
1451
|
-
const
|
|
1452
|
-
const recommendedApps = _.shuffle(
|
|
1456
|
+
// const mCookies = await getCookiesWait()
|
|
1457
|
+
// if (!mCookies) return
|
|
1458
|
+
const freeAppList = Array.isArray(steamClient.licenses) ? FreeAppList.filter(appId => steamClient.licenses.every(({package_id}) => package_id !== appId)) : FreeAppList;
|
|
1459
|
+
const recommendedApps = _.shuffle(freeAppList)
|
|
1453
1460
|
if (max) {
|
|
1454
1461
|
recommendedApps.length = Math.min(recommendedApps.length, max)
|
|
1455
1462
|
}
|
|
@@ -1477,12 +1484,12 @@ function SteamClient({
|
|
|
1477
1484
|
// }
|
|
1478
1485
|
// }
|
|
1479
1486
|
|
|
1480
|
-
if (shouldLog) {
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
}
|
|
1487
|
+
// if (shouldLog) {
|
|
1488
|
+
// await sleep(20000)
|
|
1489
|
+
// const ownedAppsCount2 = (await steamUtils.getDynamicStoreUserData())?.rgOwnedApps?.length || 0
|
|
1490
|
+
// const increaseNumber = ownedAppsCount2 - ownedAppsCount;
|
|
1491
|
+
// log(`OwnedApps length ${ownedAppsCount2}, increase ${increaseNumber}`)
|
|
1492
|
+
// }
|
|
1486
1493
|
}
|
|
1487
1494
|
|
|
1488
1495
|
async function playCSGO() {
|
|
@@ -1581,7 +1588,10 @@ function SteamClient({
|
|
|
1581
1588
|
if (!Array.isArray(apps)) {
|
|
1582
1589
|
apps = [apps]
|
|
1583
1590
|
}
|
|
1584
|
-
|
|
1591
|
+
|
|
1592
|
+
appsPlayed.length = 0
|
|
1593
|
+
appsPlayed.push(...apps)
|
|
1594
|
+
|
|
1585
1595
|
if (apps.length) {
|
|
1586
1596
|
state = 'InGame'
|
|
1587
1597
|
} else {
|
|
@@ -1610,28 +1620,28 @@ function SteamClient({
|
|
|
1610
1620
|
/*
|
|
1611
1621
|
users
|
|
1612
1622
|
* {
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1623
|
+
rich_presence: [],
|
|
1624
|
+
player_name: "Kei #SkinsMonkey",
|
|
1625
|
+
avatar_hash: [123,4543],
|
|
1626
|
+
last_logoff: "2023-05-20T05:00:42.000Z",
|
|
1627
|
+
last_logon: "2023-05-20T05:02:16.000Z",
|
|
1628
|
+
last_seen_online: "2023-05-20T05:00:42.000Z",
|
|
1629
|
+
avatar_url_icon: "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/3e/3e9da0b107ac2ec384759544368a8a977359537a.jpg",
|
|
1630
|
+
avatar_url_medium: "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/3e/3e9da0b107ac2ec384759544368a8a977359537a_medium.jpg",
|
|
1631
|
+
avatar_url_full: "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/3e/3e9da0b107ac2ec384759544368a8a977359537a_full.jpg"
|
|
1622
1632
|
}
|
|
1623
1633
|
*
|
|
1624
1634
|
|
|
1625
1635
|
myFriends
|
|
1626
1636
|
{
|
|
1627
|
-
|
|
1628
|
-
|
|
1637
|
+
76561198365087582: 3,
|
|
1638
|
+
76561199490395123: 3
|
|
1629
1639
|
}
|
|
1630
1640
|
* */
|
|
1631
1641
|
/*steamClient._send({
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1642
|
+
msg: 151,
|
|
1643
|
+
proto: {
|
|
1644
|
+
target_job_name: methodName
|
|
1635
1645
|
}
|
|
1636
1646
|
}, Buffer.alloc(0), function (body, hdr) {
|
|
1637
1647
|
const result = hdr.proto.eresult
|
|
@@ -1671,9 +1681,9 @@ function SteamClient({
|
|
|
1671
1681
|
return steamClient
|
|
1672
1682
|
},
|
|
1673
1683
|
getAccountInfoName,
|
|
1674
|
-
async getPlayersProfile(
|
|
1684
|
+
async getPlayersProfile(steamId, retry = 3){
|
|
1675
1685
|
for (let i = 0; i < retry; i++) {
|
|
1676
|
-
const profile = await getPlayersProfile(
|
|
1686
|
+
const profile = await getPlayersProfile(steamId)
|
|
1677
1687
|
if(profile){
|
|
1678
1688
|
return profile
|
|
1679
1689
|
}
|
|
@@ -1764,6 +1774,29 @@ function SteamClient({
|
|
|
1764
1774
|
},
|
|
1765
1775
|
getLastTimePartySearch(){
|
|
1766
1776
|
return lastTimePartySearch
|
|
1777
|
+
},
|
|
1778
|
+
getLicenses(){
|
|
1779
|
+
return steamClient.licenses
|
|
1780
|
+
const exampleLicenses = [{
|
|
1781
|
+
package_id: 303386,
|
|
1782
|
+
time_created: 1680491335,
|
|
1783
|
+
time_next_process: 0,
|
|
1784
|
+
minute_limit: 0,
|
|
1785
|
+
minutes_used: 0,
|
|
1786
|
+
payment_method: 1024,
|
|
1787
|
+
flags: 512,
|
|
1788
|
+
purchase_country_code: "VN",
|
|
1789
|
+
license_type: 1,
|
|
1790
|
+
territory_code: 0,
|
|
1791
|
+
change_number: 20615891,
|
|
1792
|
+
owner_id: 1530068060,
|
|
1793
|
+
initial_period: 0,
|
|
1794
|
+
initial_time_unit: 0,
|
|
1795
|
+
renewal_period: 0,
|
|
1796
|
+
renewal_time_unit: 0,
|
|
1797
|
+
access_token: "8049398090486337961",
|
|
1798
|
+
master_package_id: null
|
|
1799
|
+
}]
|
|
1767
1800
|
}
|
|
1768
1801
|
}
|
|
1769
1802
|
}
|
package/index.js
CHANGED
|
@@ -1319,8 +1319,8 @@ class SteamUser {
|
|
|
1319
1319
|
}
|
|
1320
1320
|
}
|
|
1321
1321
|
|
|
1322
|
-
static async
|
|
1323
|
-
for (let i = 0; i <
|
|
1322
|
+
static async getAppVersion(appID) {
|
|
1323
|
+
for (let i = 0; i < 3; i++) {
|
|
1324
1324
|
try {
|
|
1325
1325
|
return (await request(
|
|
1326
1326
|
`https://api.steampowered.com/ISteamApps/UpToDateCheck/v1/?format=json&appid=${appID}&version=0`)).data.response.required_version
|