add img send method
This commit is contained in:
parent
5685ff99cf
commit
8aa0d37ed3
80
chat.js
80
chat.js
@ -1,10 +1,9 @@
|
|||||||
client = require("./client")
|
const client = require("./client")
|
||||||
|
const axios = require('axios');
|
||||||
const http = require('http');
|
const http = require('http');
|
||||||
const { once } = require("node:events");
|
const { once } = require("node:events");
|
||||||
|
|
||||||
const server = http.createServer(async (req, res) => {
|
async function sendMsg(req, res) {
|
||||||
try {
|
|
||||||
let body = '';
|
let body = '';
|
||||||
req.on('data', chunk => {
|
req.on('data', chunk => {
|
||||||
body += chunk.toString(); // 将Buffer转换为字符串
|
body += chunk.toString(); // 将Buffer转换为字符串
|
||||||
@ -14,8 +13,7 @@ const server = http.createServer(async (req, res) => {
|
|||||||
|
|
||||||
let requests = JSON.parse(body);
|
let requests = JSON.parse(body);
|
||||||
|
|
||||||
console.log(requests.id)
|
console.log(requests)
|
||||||
console.log(requests.msg)
|
|
||||||
|
|
||||||
client.steamUser.chat.sendFriendMessage(requests.id, requests.msg, (err, response) => {
|
client.steamUser.chat.sendFriendMessage(requests.id, requests.msg, (err, response) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
@ -30,11 +28,81 @@ const server = http.createServer(async (req, res) => {
|
|||||||
res.setHeader('Content-Type', 'text/plain');
|
res.setHeader('Content-Type', 'text/plain');
|
||||||
res.end('Success\n');
|
res.end('Success\n');
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
async function sendImg(req, res) {
|
||||||
|
let body = '';
|
||||||
|
req.on('data', chunk => {
|
||||||
|
body += chunk.toString(); // 将Buffer转换为字符串
|
||||||
|
});
|
||||||
|
|
||||||
|
await once(req, 'end');
|
||||||
|
|
||||||
|
let requests = JSON.parse(body);
|
||||||
|
|
||||||
|
console.log(requests)
|
||||||
|
|
||||||
|
if (requests.url) {
|
||||||
|
img = await readUrlAsBuffer(requests.url)
|
||||||
|
} else if (requests.img) {
|
||||||
|
img = Buffer.from(requests.img, 'base64');
|
||||||
|
} else {
|
||||||
|
res.statusCode = 400;
|
||||||
|
res.setHeader('Content-Type', 'text/plain');
|
||||||
|
res.end('Bad Request\n');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
client.steamCommunity.sendImageToUser(requests.id, img, function (err, imageUrl) {
|
||||||
|
if (err) {
|
||||||
|
logger.error("an error occurred while sending image: ", err);
|
||||||
|
res.statusCode = 500;
|
||||||
|
res.setHeader('Content-Type', 'text/plain');
|
||||||
|
res.end('Internal Server Error\n');
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
res.statusCode = 200;
|
||||||
|
res.setHeader('Content-Type', 'text/plain');
|
||||||
|
res.end('Success\n');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const server = http.createServer(async (req, res) => {
|
||||||
|
try {
|
||||||
|
if (req.url == "/img") {
|
||||||
|
await sendImg(req, res);
|
||||||
|
} else {
|
||||||
|
await sendMsg(req, res);
|
||||||
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error("An error occurred while processing the request: ", e);
|
console.error("An error occurred while processing the request: ", e);
|
||||||
|
res.statusCode = 500;
|
||||||
|
res.setHeader('Content-Type', 'text/plain');
|
||||||
|
res.end('Internal Server Error\n');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
async function readUrlAsBuffer(url) {
|
||||||
|
try {
|
||||||
|
const response = await axios.get(url, { responseType: 'arraybuffer' });
|
||||||
|
return Buffer.from(response.data);
|
||||||
|
} catch (err) {
|
||||||
|
throw new Error(`Failed to fetch URL: ${err.message}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function readFileAsBuffer(filePath) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
fs.readFile(filePath, (err, data) => {
|
||||||
|
if (err) {
|
||||||
|
return reject(err);
|
||||||
|
}
|
||||||
|
resolve(data);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
server.listen(3000, '0.0.0.0', () => {
|
server.listen(3000, '0.0.0.0', () => {
|
||||||
console.log('Server running at http://0.0.0.0:3000/');
|
console.log('Server running at http://0.0.0.0:3000/');
|
||||||
});
|
});
|
||||||
|
17
client.js
17
client.js
@ -1,6 +1,7 @@
|
|||||||
SteamID = require('steamid');
|
const SteamID = require('steamid');
|
||||||
SteamUser = require('steam-user');
|
const SteamUser = require('steam-user');
|
||||||
SteamTotp = require('steam-totp');
|
const SteamTotp = require('steam-totp');
|
||||||
|
const SteamCommunity = require('steamcommunity');
|
||||||
fs = require('fs');
|
fs = require('fs');
|
||||||
winston = require("winston");
|
winston = require("winston");
|
||||||
|
|
||||||
@ -16,6 +17,7 @@ logger = winston.createLogger({
|
|||||||
const users = {};
|
const users = {};
|
||||||
|
|
||||||
const steamUser = new SteamUser();
|
const steamUser = new SteamUser();
|
||||||
|
const steamCommunity = new SteamCommunity();
|
||||||
|
|
||||||
steamUser.setOption("renewRefreshTokens", true);
|
steamUser.setOption("renewRefreshTokens", true);
|
||||||
steamUser.on("refreshToken", (refreshToken) => {
|
steamUser.on("refreshToken", (refreshToken) => {
|
||||||
@ -53,8 +55,14 @@ try {
|
|||||||
steamID: config.steamID,
|
steamID: config.steamID,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
steamUser.on('loggedOn', () => {
|
steamUser.on('loggedOn', async () => {
|
||||||
logger.info(`login to Steam as ${steamUser.steamID}`);
|
logger.info(`login to Steam as ${steamUser.steamID}`);
|
||||||
|
|
||||||
|
steamUser.webLogOn();
|
||||||
|
});
|
||||||
|
steamUser.on('webSession', async (sessionID, cookies) => {
|
||||||
|
steamCommunity.setCookies(cookies);
|
||||||
|
steamCommunity.startConfirmationChecker(10000, config.identitySecret);
|
||||||
});
|
});
|
||||||
|
|
||||||
async function getUserInfo(steamID, onUserInfoReceived) {
|
async function getUserInfo(steamID, onUserInfoReceived) {
|
||||||
@ -85,6 +93,7 @@ async function getUserInfo(steamID, onUserInfoReceived) {
|
|||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
steamUser: steamUser,
|
steamUser: steamUser,
|
||||||
|
steamCommunity: steamCommunity,
|
||||||
getUserInfo: getUserInfo,
|
getUserInfo: getUserInfo,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
52
package-lock.json
generated
52
package-lock.json
generated
@ -10,6 +10,7 @@
|
|||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@matteo.collina/dateformat": "^5.0.1",
|
"@matteo.collina/dateformat": "^5.0.1",
|
||||||
|
"axios": "^1.7.7",
|
||||||
"steam-totp": "^2.1.2",
|
"steam-totp": "^2.1.2",
|
||||||
"steam-user": "^5.0.8",
|
"steam-user": "^5.0.8",
|
||||||
"steamcommunity": "^3.48.2",
|
"steamcommunity": "^3.48.2",
|
||||||
@ -223,6 +224,31 @@
|
|||||||
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz",
|
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz",
|
||||||
"integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg=="
|
"integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg=="
|
||||||
},
|
},
|
||||||
|
"node_modules/axios": {
|
||||||
|
"version": "1.7.7",
|
||||||
|
"resolved": "https://mvn.tursom.cn:20080/repository/npm/axios/-/axios-1.7.7.tgz",
|
||||||
|
"integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"follow-redirects": "^1.15.6",
|
||||||
|
"form-data": "^4.0.0",
|
||||||
|
"proxy-from-env": "^1.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/axios/node_modules/form-data": {
|
||||||
|
"version": "4.0.1",
|
||||||
|
"resolved": "https://mvn.tursom.cn:20080/repository/npm/form-data/-/form-data-4.0.1.tgz",
|
||||||
|
"integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"asynckit": "^0.4.0",
|
||||||
|
"combined-stream": "^1.0.8",
|
||||||
|
"mime-types": "^2.1.12"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 6"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/bcrypt-pbkdf": {
|
"node_modules/bcrypt-pbkdf": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
|
||||||
@ -511,6 +537,26 @@
|
|||||||
"resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
|
||||||
"integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="
|
"integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="
|
||||||
},
|
},
|
||||||
|
"node_modules/follow-redirects": {
|
||||||
|
"version": "1.15.9",
|
||||||
|
"resolved": "https://mvn.tursom.cn:20080/repository/npm/follow-redirects/-/follow-redirects-1.15.9.tgz",
|
||||||
|
"integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "individual",
|
||||||
|
"url": "https://github.com/sponsors/RubenVerborgh"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4.0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"debug": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/forever-agent": {
|
"node_modules/forever-agent": {
|
||||||
"version": "0.6.1",
|
"version": "0.6.1",
|
||||||
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
|
||||||
@ -891,6 +937,12 @@
|
|||||||
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
|
||||||
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
|
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
|
||||||
},
|
},
|
||||||
|
"node_modules/proxy-from-env": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://mvn.tursom.cn:20080/repository/npm/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
|
||||||
|
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/psl": {
|
"node_modules/psl": {
|
||||||
"version": "1.9.0",
|
"version": "1.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@matteo.collina/dateformat": "^5.0.1",
|
"@matteo.collina/dateformat": "^5.0.1",
|
||||||
|
"axios": "^1.7.7",
|
||||||
"steam-totp": "^2.1.2",
|
"steam-totp": "^2.1.2",
|
||||||
"steam-user": "^5.0.8",
|
"steam-user": "^5.0.8",
|
||||||
"steamcommunity": "^3.48.2",
|
"steamcommunity": "^3.48.2",
|
||||||
|
Loading…
Reference in New Issue
Block a user