All Activity
- Last week
-
Dr. McKay reacted to a post in a topic: Is it possible I installed the wrong node-steamcommunity module?
-
MichalM reacted to a post in a topic: Is it possible I installed the wrong node-steamcommunity module?
-
Is it possible I installed the wrong node-steamcommunity module?
MichalM replied to MichalM's topic in node-steamcommunity
-
Sounds to me like you probably aren't properly sending your cookies in your requests. The sessionid cookie is just a CSRF token; it can be anything at all.
-
i have some code that logs into steam so one of my bots can accept a trade, first it gets the rsa key using a bots username then it encrypts a password and sends a request to dologin. i get the cookies back in the response however it is only steamauth, loginsecure, and steam country i get a 403 on trying to do pretty much anything because i have no session id how can i get one? i currently am using this: let sessionid = require('crypto').randomBytes(12).toString('hex'); and then pushing it to the array of cookies however i still get 403 is there a different way i should be doing it?
-
ElonMusk changed their profile photo
-
Is it possible I installed the wrong node-steamcommunity module?
Dr. McKay replied to MichalM's topic in node-steamcommunity
I don't see any reason why that would happen unless you installed a really old version somehow. Could you paste the contents of node_modules/steamcommunity/package.json? -
MichalM joined the community
-
Proper way of setting cookies for controlling bot by POST requests
Dr. McKay replied to Fabro's topic in node-steam-user
There's no list of the order that events get emitted in because it isn't really defined. loggedOn happens first, unless steamGuard happens before you log on. Once you're logged on, everything else happens as Steam sees fit. Obviously, once you're disconnected (disconnected and error events) then further events stop. You could add an event listener inside of another event listener, but unless you use user.once or manually remove the listener every time, then your event handler will start getting called multiple times when the event fires. -
Proper way of setting cookies for controlling bot by POST requests
Fabro replied to Fabro's topic in node-steam-user
Hello. Thank you for your help. I have moved the offer inside webSession and now the error has gone, nonetheless, I am waiting the 7 days cooldown because of new device, but I think it will work as expected inside webSession. About keeping it logged, the few times I have tested trying to keep the bot logged, it randomly asked for SteamGuard code in the console, but it might be something I messed up because of me not being familiar with the events and the order they are fired, since there are events concerning keeping the bot logged. I have searched the wiki, but I wasn't able to find a "list" of events in order of firing. I will keep digging the source code and look for them and try to understand better the way they work, I am doing that but since I am new to Node.JS it takes me a while to understand the syntax. By they way, can you listen an event, inside an already listened event? For instance, can you listed for a chat message inside the callback of listened to a offer recieved? Or events cannot be nested inside each other? Once again, thank you for your help. -
Proper way of setting cookies for controlling bot by POST requests
Dr. McKay replied to Fabro's topic in node-steam-user
webSession will be emitted some time after loggedOn. loggedOn is the first event to be emitted after you log on; everything follows from there. Send your trade inside the webSession event and you should be good to go. Also, there's nothing that says you couldn't keep the bot logged on between requests, avoiding the need to log back on every time. -
Fabro started following Proper way of setting cookies for controlling bot by POST requests
-
Hello. I am quite new to Node.JS so I need a little help sorting some things out. I am trying to make the bot controlled by POST request by using Express for the URL routing, so the bot only responds to specific requests made from specific domain to specific endpoints. I am able to login to SteamUser, but I am not able to share the cookies to SteamCommunity. I wasn't able to find a way to keep the bot logged in across different endpoints, I am assuming that it comes from the fact that every request is unique and they are not sharing data between them, so, I have to make the bot log in on each request, and that's fine with me. The problem comes when I try to share the cookies from webSession event, and send a trade on the loggedOn event. It appears that when logged on event fires, cookies are not yet configured. What approach should I use to perform the login on the SteamCommunity module? Here is my current code, that rejects my trade offer, because cookies are not yet configured. app.get('/lero', async (req, res) => { res.send('Loaded'); const SteamUser = require('steam-user'); const SteamCommunity = require('steamcommunity'); const SteamTotp = require('steam-totp'); const TradeOfferManager = require('steam-tradeoffer-manager'); const FS = require('fs'); let client = new SteamUser(); let manager = new TradeOfferManager({ "steam": client, "domain": "bot.test", "language": "es" }); let community = new SteamCommunity(); // Steam logon options let logOnOptions = { "accountName": "censored", "password": "censored", "twoFactorCode": SteamTotp.getAuthCode("censored"), }; if (FS.existsSync('polldata.json')) { manager.pollData = JSON.parse(FS.readFileSync('polldata.json').toString('utf8')); } client.logOn(logOnOptions); const { Sequelize, Op, Model, DataType, DataTypes } = require('sequelize'); const sequelize = new Sequelize('cendsored', 'censored', 'censored', { host: 'localhost', dialect: 'mysql', define: { underscored: true, createdAt: 'created_at', updatedAt: 'updated_at' , deletedAt: 'deleted_at', } }); const initModels = require('./models/init-models'); const models = initModels(sequelize); client.on('webSession', (sessionID, cookies) => { community.setCookies(cookies); manager.setCookies(cookies); console.log(cookies); // console logs this after the error, meaning trade is sent before this }); client.on('loggedOn', async () => { console.log("Logged into Steam"); const su = await models.steam_users.findOne({ where: { steam_personaname: 'censored', }, include: [{ model: models.users, as: 'user', }], }).then((r) => { client.chat.sendFriendMessage(r.steam_steamidmodern, "Sending trade in a moment"); let offer = manager.createOffer('censored'); console.log(offer); console.log(community); let item = { assetid: 'censored', appid: '730', contextid: '2', amount: 1, }; if (offer.addTheirItem(item)) { offer.send((err, status) => { if (err) { console.log(err); } else { console.log(status); } }); } }); }); }); I am familiar with events, since in PHP I have worked with OpenCart, Wordpress and Laravel, but I cannot find the right order of events here, to correctly log in both modules. Any help will be very much appreciated.
-
Fabro joined the community
-
Properly handling .logOn() in a non-stdin environment
Dr. McKay replied to ElijahPepe's topic in node-steam-user
- Earlier
-
Properly handling .logOn() in a non-stdin environment
ElijahPepe replied to ElijahPepe's topic in node-steam-user
How would I make the log in process asynchronous, then? I looked at the README but couldn't find anything. -
Properly handling .logOn() in a non-stdin environment
Dr. McKay replied to ElijahPepe's topic in node-steam-user
Your promise is getting resolved synchronously before anything actually happens. -
Properly handling .logOn() in a non-stdin environment
ElijahPepe replied to ElijahPepe's topic in node-steam-user
Here's the full code: return new Promise(resolve => { if (!username || !password || typeof username !== 'string' || typeof password !== 'string') { throw new Error('Invalid username or password provided.'); } this.steamUser.logOn({ accountName: username, password: password, twoFactorCode: twoFactorCode }); console.log(this.steamUser); this.steamUser.on('loggedOn', details => { console.log(details) this.steamUser.getEncryptedAppTicket(1818750, async (err, appTicket) => { console.log(appTicket); if (err) { throw new Error(err); } const data = await this.info(appTicket.toString('hex')); console.log(data); this.accessToken = data.token; }); }); resolve(this); }); this.steamUser is a construct of SteamUser. Any of the console.logs don't seem to work, although on rare occasions this.steamUser and details are logged to the console. -
Properly handling .logOn() in a non-stdin environment
Dr. McKay replied to ElijahPepe's topic in node-steam-user
Where are you logging accessToken? After the promise is resolved? If that's the case, you need to move your resolve(this) line after when the access token is set. I need to see all relevant code, along with debugging output (add console.log statements in places) to provide any further help. -
Properly handling .logOn() in a non-stdin environment
ElijahPepe replied to ElijahPepe's topic in node-steam-user
I'm not getting any output. When I console.log accessToken, null is returned. -
Properly handling .logOn() in a non-stdin environment
Dr. McKay replied to ElijahPepe's topic in node-steam-user
What output are you getting, if any? -
Properly handling .logOn() in a non-stdin environment
ElijahPepe replied to ElijahPepe's topic in node-steam-user
I've set twoFactorCode to the current value in my Steam app, but the steamGuard event doesn't seem to emit and the .logOn() function doesn't seem to properly log the user in. -
Properly handling .logOn() in a non-stdin environment
Dr. McKay replied to ElijahPepe's topic in node-steam-user
It looks like you're passing the same code to the steamGuard event as you used in the logOn method. If it didn't work the first time, it's not going to work a second time. You likely need to wait 30 seconds for the next code to come round, or add 30 seconds to your time offset. -
ElijahPepe started following Properly handling .logOn() in a non-stdin environment
-
I'm using steam-user in a project where I can't get a Steam Guard code from a user through stdin. I'm using the following code, but it's inconsistent: this.steamUser.logOn({ accountName: username, password: password, twoFactorCode: twoFactorCode }); this.steamUser.on('steamGuard', (_domain, callback) => { callback(twoFactorCode); }); this.steamUser.on('loggedOn', () => { this.steamUser.getEncryptedAppTicket(1818750, async (err, appTicket) => { if (err) { throw new Error(err); } const data = await this.info(appTicket.toString('hex')); this.accessToken = data.token; }); }); resolve(this); The above code works occasionally, but in the few times that it does work, nothing in the .getEncryptedAppTicket() block is executed. What am I doing wrong?
-
ElijahPepe joined the community
-
scriptieKid joined the community
-
@Dr. McKay I seem to have the same problem. I tried opening new ticket, and it didn't open so im posting it here: module.exports = function(accountDetails, accountSettings, nickname, accountID, games){ this.client = new SteamUser(); this.community = new SteamCommunity(); let csgo = new GlobalOffensive(this.client); this.logOnOptions = { accountName: accountDetails.login, password: accountDetails.password, rememberPassword: true, machineName: machineName, clientOS: 16, dontRememberMachine: false, rememberPassword: true } if(accountDetails.sharedSecret) this.logOnOptions.twoFactorCode = SteamTotp.generateAuthCode(accountDetails.sharedSecret); this.client.setOption("promptSteamGuardCode", false); this.client.setOption("autoRelogin", true); this.client.logOn(this.logOnOptions); this.client.on('loggedOn', () => { ... }); this.client.on('webSession', (sessionId, cookies) => { log(`webSession found.`, this.login); this.community.setCookies(cookies); log(`Cookies set.`, this.login); if(identitySecret){ this.community.startConfirmationChecker(10000, accountDetails.identitySecret); log(`Confirmation checker started.`, this.login); } }); } And all I get is:
-
TheM changed their profile photo
-
Giving less offers to csgoempire
Dr. McKay replied to Symbiosis's topic in node-steam-tradeoffer-manager
Sounds like it's crashing. Not much that can be done to help you without a stack trace. -
Symbiosis changed their profile photo
-
In the process of locating and offering to buy on csgoempire, my program is unexpectedly closing in an average of 30 minutes, giving much less offers on the listed items (same as a friend's list). I tested 3 different types of internet connection and none proved to be effective, is this usually related to the internet connection? I'm not very experienced with the files so if you can point me to a repair guide or log, I'd be grateful.
-
Symbiosis joined the community
-
i have the very same issue w/ steam mobile app authorization. there is no way you can authorize w/ 2fa enabled on your account so...
-
lounya joined the community
-
get accountData from the player that writes me (node-globaloffensive)
Tom replied to Tom's topic in node-steam-user
Got it running if anyone else needs it user.on('friendMessage', (steamID, message) => { if (message == 'stats') { if (csgo.haveGCSession) { const steamid = new SteamID(steamID.toString()); const final = steamid.accountid.toString(); csgo.requestPlayersProfile(steamid, function(data) { // console.log(data); user.chatMessage(steamID, 'Wins in Matchmaking: ' + data.ranking.wins + '\n' + 'Wins in Wingman: ' + data.rankings[0].wins + '\n' + 'Wins in Dangerzone: ' + data.rankings[1].wins); }); }else { user.chatMessage(steamID, 'Nö'); } } }); -
Tom started following get accountData from the player that writes me (node-globaloffensive)
-
Hey, im pretty new to JS and i don't know on how to get the accountData from a specific user. i know that this works, but it just gets me the accountData of my logged in account. csgo.on('accountData', (accountData) => { console.log(accountData); console.log(accountData.player_level); }); How would i make a function to call the accountData of a specific player? Like if someone writes the bot stats it gets the accountData from the player that requested it.