Open grahamhawes opened 8 years ago
Concerning the servers, fairly sure it's outdated IPs rather than anything internal.
Try using ConnectTo() [https://godoc.org/github.com/Philipp15b/go-steam#Client.ConnectTo] to connect to a specified server; there's an event that returns (working, I assume?) server IPs.
https://godoc.org/github.com/Philipp15b/go-steam#ClientCMListEvent
Agreed that the IPs changed - but I don't understand why I can try connecting to a server four times, time out on every attempt, and then have it work on the fifth try. Any idea whats up with that?
Thanks for the info
Just to add to this, I looked at the statuses coming and found this error: "missing required parameter". No successful, non-error status is ever received.
Does this mean there's a problem with my cookies? A problem with the formatting/contents of the POST? I'm not sure how to debug this further.
Does anyone have trading working?
For connect try using InitializeSteamDirectory and then Connect.
Never heard of anyone using trade for gambling site. Why not tradeoffer?
It is for a jackpot-style site (with a goofy twist), I think that the asynchronous nature of trade offers would detract from the fun.
Regarding connection problems, see @Nefarious- answer and #73. I'll update the server list sometime.
If you've got any time, a pull request for the missing steamLoginSecure
parameter would be appreciated.
I really don't know why trading is not working anymore, but unfortunately there's the trading timeout when logging in with a new computer, so it'll take some time before I can debug the issue myself. What's weird though is that since I uploaded my fixes for the trade
package last year, I can't find any changes in libraries for trading in other languages... SteamDB's SteamTracking project did record some changes in Valve's code, so I'll check those in detail sometime.
In the meantime, did you try trading with actual Steam clients with those accounts? Maybe the client shows some issue go-steam
doesn't handle properly.
Also, trading is not supposed to work when you're in offline mode - that's also true for the Steam client. It is a limitation enforced by the Steam network. Maybe some documentation or assertions in the code would be helpful.
I did confirm that trading works with the account. Didn't encounter any problems when I traded normally through the Steam client.
Is "missing required parameter" more generic than it sounds? I'm wondering if its somehow a problem with the session or any of the cookies, and how I'd even debug that. I printed all the cookies out and they seem okay.
And yeah, for trade invitations failing when you're set to appear offline, I was just suggesting some kind of warning in code/documentation, since it will fail pretty silently if you forget.
I've seen "missing required parameter" because I was missing a HTTP header or when I used invalid cookies, so basically you should read it as "something's wrong". I've made the mistake once to search for hours for bugs in the request parameters only to find the header was missing...
I usually used a mix of Wireshark-ing myself and opening the trade site in a web browser with the cookies from go-steam or the Steam client. After some time, you'll hopefully find the difference between what the Steam client does and what go-steam does.
I updated the internal server list and improved the API somewhat regarding connecting: a995980.
So I started debugging the trading issue and I similarly get no output from Poll()
because apparently the tradeapi
package silently ignores errors from the Steam API which sends responds with status code 200, but sends this:
{"success":false}
I'm not exactly sure what the source of this error actually is, but ignoring errors is at least part of the bug.
I've stumbled against the same problem. Any update on this?
{"success":false,"error":"missing required parameter"}
Maybe a second episode to the tales of sadness? Another header.
I also stumbled upon this problem. I am sure I have it all correct. When I print out each poll, it's just empty and even when I close the trade on my account, the polls keep appearing and they are empty. No one said what solved this guy's problem. Would really appreciate some help too.
Issue sadly still stands. Trading is impossible using go-steam currently :cry:
Hi, I'm working on a trading bot for accepting bets. I had no problem with getting the bot to add my account as a friend, but trading is getting frustrating.
I'm having the bot (which is running on a server) initiate a trade session with my steam account. After I accept the invite that is sent to my personal account, the trade box opens up, but it stalls for a few seconds while displaying "Waiting for BotAccountName" by the bot's inventory, then times out, and I'm sent to the "The trading session has expired." screen.
On the bot's end, TradeResultEvent is caught and handled, then TradeSessionStartEvent is caught and handled (kicking off the trade). The bot polls the event list but never finds anything (even if I send a chat message from my personal account).
All relevant cookies seem to be valid, and the bot calls Web.LogOn() (and waits for a WebSessionIdEvent) beforehand. Btw, I had to update trade.New() to include the SteamLoginSecure cookie as a parameter and to pass it into tradeapi.New(). Want a pull request for that?
Here's the code, please forgive the excessive logging:
After "Handling trade" prints, "Retrieved event list!" loops forever, even after the trade has timed out from the perspective of my personal account. No other events are caught, nothing panics, nothing prints to stdout. Any idea what is going on? Is there any way to debug this further?
Two other observations: 1) After pulling your recent commits, I couldn't connect to the Steam CM servers (via Client.Connect()) despite many, many retries. I switched to Client.ConnectNorthAmerica() and replaced the NA server IPs with those found here: https://github.com/SteamRE/SteamKit/blob/master/SteamKit2/SteamKit2/Networking/Steam3/CMServerList.cs#L200-L233. Still lots of failures but I eventually get through.
2) Sending a trade invite fails if the sender hasn't set himself to appear offline via SetPersonaState(steamlang.EPersonaState_Online). I had commented that line out due to the (now-fixed) internal package issues, which is why I noticed the problem.
Anyway, thanks for all your work on this library, go is a fun language. I was happy to see the updates last week, and if I come across anything I'll submit a pull request. Sorry for the long post.