steamutils 1.2.77 → 1.2.79
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 +52 -46
- package/index.js +15 -5
- package/package.json +1 -1
package/SteamClient.js
CHANGED
@@ -168,7 +168,7 @@ function SteamClient({
|
|
168
168
|
delete e.callback
|
169
169
|
}
|
170
170
|
})
|
171
|
-
_.remove(_events, e => e
|
171
|
+
_.remove(_events, e => !e || e?.once)
|
172
172
|
}
|
173
173
|
|
174
174
|
function onEvent(name, callback, once, timeout) {
|
@@ -1079,51 +1079,6 @@ function SteamClient({
|
|
1079
1079
|
"avatar_pending_review": null
|
1080
1080
|
}
|
1081
1081
|
},
|
1082
|
-
async friendMessage(data) {
|
1083
|
-
if (!data) return
|
1084
|
-
data.message_no_bbcode = data.message_no_bbcode?.replaceAll(`ː`, `:`)
|
1085
|
-
data.message = data.message?.replaceAll(`ː`, `:`)
|
1086
|
-
const example = {
|
1087
|
-
"steamid_friend": {
|
1088
|
-
"universe": 1,
|
1089
|
-
"type": 1,
|
1090
|
-
"instance": 1,
|
1091
|
-
"accountid": 1080136620
|
1092
|
-
},
|
1093
|
-
"chat_entry_type": 1,
|
1094
|
-
"from_limited_account": false,
|
1095
|
-
"message": "xxx",
|
1096
|
-
"ordinal": 0,
|
1097
|
-
"local_echo": false,
|
1098
|
-
"message_no_bbcode": "xxx",
|
1099
|
-
"low_priority": false,
|
1100
|
-
"server_timestamp": "2023-05-14T09:26:25.000Z",
|
1101
|
-
"message_bbcode_parsed": [
|
1102
|
-
"xxx"
|
1103
|
-
]
|
1104
|
-
}
|
1105
|
-
const timestamp = new Date(data.server_timestamp).getTime()
|
1106
|
-
const steamId = data.steamid_friend.getSteamID64()
|
1107
|
-
const personas = await getPersonas([steamId])
|
1108
|
-
const player_name = personas.find(p => p.id == steamId)?.player_name || ''
|
1109
|
-
const invite = [`Invited you to play a game!`, `Đã mời bạn chơi một trò chơi!`].includes(data.message_no_bbcode || data.message)
|
1110
|
-
const emotion = (data.message_no_bbcode || '').split(' ').find(m => m.startsWith(':') && m.endsWith(':'))
|
1111
|
-
|
1112
|
-
callEvent(events.friendMessage, {
|
1113
|
-
player_name,
|
1114
|
-
message: data.message_no_bbcode,
|
1115
|
-
invite,
|
1116
|
-
steamId,
|
1117
|
-
timestamp,
|
1118
|
-
from_limited_account: data.from_limited_account,
|
1119
|
-
emotion,
|
1120
|
-
})
|
1121
|
-
},
|
1122
|
-
async friendTyping(steamId, message) {
|
1123
|
-
callEvent(events.friendTyping, {
|
1124
|
-
steamId, message
|
1125
|
-
})
|
1126
|
-
},
|
1127
1082
|
async playingState(playing_blocked, playing_app) {
|
1128
1083
|
playingBlocked = playing_blocked
|
1129
1084
|
if (playing_app === 0) {
|
@@ -1184,6 +1139,53 @@ function SteamClient({
|
|
1184
1139
|
}
|
1185
1140
|
}
|
1186
1141
|
|
1142
|
+
const chatEvents = {
|
1143
|
+
async friendMessage(data) {
|
1144
|
+
if (!data) return
|
1145
|
+
data.message_no_bbcode = data.message_no_bbcode?.replaceAll(`ː`, `:`)
|
1146
|
+
data.message = data.message?.replaceAll(`ː`, `:`)
|
1147
|
+
const example = {
|
1148
|
+
"steamid_friend": {
|
1149
|
+
"universe": 1,
|
1150
|
+
"type": 1,
|
1151
|
+
"instance": 1,
|
1152
|
+
"accountid": 1080136620
|
1153
|
+
},
|
1154
|
+
"chat_entry_type": 1,
|
1155
|
+
"from_limited_account": false,
|
1156
|
+
"message": "xxx",
|
1157
|
+
"ordinal": 0,
|
1158
|
+
"local_echo": false,
|
1159
|
+
"message_no_bbcode": "xxx",
|
1160
|
+
"low_priority": false,
|
1161
|
+
"server_timestamp": "2023-05-14T09:26:25.000Z",
|
1162
|
+
"message_bbcode_parsed": [
|
1163
|
+
"xxx"
|
1164
|
+
]
|
1165
|
+
}
|
1166
|
+
const timestamp = new Date(data.server_timestamp).getTime()
|
1167
|
+
const steamId = data.steamid_friend.getSteamID64()
|
1168
|
+
const personas = await getPersonas([steamId])
|
1169
|
+
const player_name = personas.find(p => p.id == steamId)?.player_name || ''
|
1170
|
+
const invite = [`Invited you to play a game!`, `Đã mời bạn chơi một trò chơi!`].includes(data.message_no_bbcode || data.message)
|
1171
|
+
const emotion = (data.message_no_bbcode || '').split(' ').find(m => m.startsWith(':') && m.endsWith(':'))
|
1172
|
+
|
1173
|
+
callEvent(events.friendMessage, {
|
1174
|
+
player_name,
|
1175
|
+
message: data.message_no_bbcode,
|
1176
|
+
invite,
|
1177
|
+
steamId,
|
1178
|
+
timestamp,
|
1179
|
+
from_limited_account: data.from_limited_account,
|
1180
|
+
emotion,
|
1181
|
+
})
|
1182
|
+
},
|
1183
|
+
async friendTyping(steamId, message) {
|
1184
|
+
callEvent(events.friendTyping, {
|
1185
|
+
steamId, message
|
1186
|
+
})
|
1187
|
+
},
|
1188
|
+
}
|
1187
1189
|
|
1188
1190
|
// steamClient.on('lobbyInvite', (inviterID, lobbyID ) => {
|
1189
1191
|
// joinLobby(lobbyID)
|
@@ -1226,6 +1228,10 @@ function SteamClient({
|
|
1226
1228
|
for (const name in events) {
|
1227
1229
|
steamClient.on(name, events[name])
|
1228
1230
|
}
|
1231
|
+
|
1232
|
+
for (const name in chatEvents) {
|
1233
|
+
steamClient.chat.on(name, chatEvents[name])
|
1234
|
+
}
|
1229
1235
|
}
|
1230
1236
|
|
1231
1237
|
function getFriendList() {
|
package/index.js
CHANGED
@@ -15,7 +15,7 @@ import {getTableHasHeaders, table2json} from './cheerio.js'
|
|
15
15
|
import {getJSObjectFronXML} from './xml2json.js'
|
16
16
|
import axios from 'axios'
|
17
17
|
import url from 'url'
|
18
|
-
import * as
|
18
|
+
import * as cheerio from "cheerio";
|
19
19
|
import fs from "fs";
|
20
20
|
import FormData from "form-data";
|
21
21
|
|
@@ -2427,7 +2427,7 @@ class SteamUser {
|
|
2427
2427
|
}
|
2428
2428
|
|
2429
2429
|
_parsePendingFriendList(html, selector) {
|
2430
|
-
const $ =
|
2430
|
+
const $ = cheerio.load(html || '')
|
2431
2431
|
const data = []
|
2432
2432
|
$(selector).each(function () {
|
2433
2433
|
const el = $(this)
|
@@ -5691,7 +5691,7 @@ class SteamUser {
|
|
5691
5691
|
|
5692
5692
|
async getTradeURL() {
|
5693
5693
|
const result = await this._httpRequest(`${this.getMyProfileURL()}/tradeoffers/privacy`)
|
5694
|
-
const $ =
|
5694
|
+
const $ = cheerio.load(result?.data || '')
|
5695
5695
|
const trade_offer_access_url = $('#trade_offer_access_url').attr('value')
|
5696
5696
|
return trade_offer_access_url
|
5697
5697
|
}
|
@@ -5825,9 +5825,19 @@ class SteamUser {
|
|
5825
5825
|
}
|
5826
5826
|
const partnerSteamId = partner.split(`',`)[0].trim()
|
5827
5827
|
let partnerName = partner.split(`', "`)[1].trim();
|
5828
|
+
const playerAvatar = $1.find('.playerAvatar')
|
5829
|
+
const avatar = playerAvatar.find('img')?.attr('src')
|
5830
|
+
const link = playerAvatar.find('a')?.attr('href')
|
5831
|
+
const header = $1.find('.tradeoffer_header').text().replaceAll(/\t/g, ' ').replaceAll(/\s+/g, ' ').trim()
|
5832
|
+
const active = $1.find('.tradeoffer_items_ctn').hasClass("active")
|
5833
|
+
|
5828
5834
|
tradeOffers.push({
|
5829
5835
|
tradeofferid, partner: {
|
5830
|
-
steamId: partnerSteamId,
|
5836
|
+
steamId: partnerSteamId,
|
5837
|
+
name: partnerName,
|
5838
|
+
avatar,
|
5839
|
+
link,
|
5840
|
+
header,
|
5831
5841
|
},
|
5832
5842
|
})
|
5833
5843
|
}
|
@@ -6061,7 +6071,7 @@ class SteamUser {
|
|
6061
6071
|
url: `market/mylistings/render/?count=100`,
|
6062
6072
|
}))?.data
|
6063
6073
|
if (result?.success === true) {
|
6064
|
-
const $ =
|
6074
|
+
const $ = cheerio.load(result.results_html)
|
6065
6075
|
const list = []
|
6066
6076
|
$('.market_listing_row').each(function () {
|
6067
6077
|
try {
|