This commit is contained in:
JustArchi
2016-12-04 20:41:01 +01:00
parent 065d29177a
commit 1a917a668c
3 changed files with 21 additions and 12 deletions

View File

@@ -1182,7 +1182,7 @@ namespace ArchiSteamFarm {
}
// Sometimes Steam won't send us our own PersonaStateCallback, so request it explicitly
SteamFriends.RequestFriendInfo(callback.ClientSteamID, EClientPersonaStateFlag.Presence);
SteamFriends.RequestFriendInfo(callback.ClientSteamID, EClientPersonaStateFlag.PlayerName | EClientPersonaStateFlag.Presence);
if (BotDatabase.MobileAuthenticator == null) {
// Support and convert SDA files
@@ -1662,7 +1662,7 @@ namespace ArchiSteamFarm {
return "Trade offer failed due to error!";
}
await Task.Delay(1000).ConfigureAwait(false); // Sometimes we can be too fast for Steam servers to generate confirmations, wait a short moment
await Task.Delay(3000).ConfigureAwait(false); // Sometimes we can be too fast for Steam servers to generate confirmations, wait a short moment
await AcceptConfirmations(true, Steam.ConfirmationDetails.EType.Trade, BotConfig.SteamMasterID).ConfigureAwait(false);
return "Trade offer sent successfully!";
}

View File

@@ -24,6 +24,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using SteamKit2;
@@ -37,6 +38,7 @@ namespace ArchiSteamFarm {
private string LastAvatarHash;
private DateTime LastHeartBeat = DateTime.MinValue;
private string LastNickname;
private bool ShouldSendHeartBeats;
internal Statistics(Bot bot) {
@@ -108,32 +110,39 @@ namespace ArchiSteamFarm {
return;
}
if ((callback.AvatarHash == null) || (callback.AvatarHash.Length == 0)) {
return;
string nickname = callback.Name ?? "";
string avatarHash = "";
if ((callback.AvatarHash != null) && (callback.AvatarHash.Length > 0) && callback.AvatarHash.Any(singleByte => singleByte != 0)) {
avatarHash = BitConverter.ToString(callback.AvatarHash).Replace("-", "").ToLowerInvariant();
if (avatarHash.Equals("0000000000000000000000000000000000000000")) {
avatarHash = "";
}
}
string avatarHash = BitConverter.ToString(callback.AvatarHash).Replace("-", "").ToLowerInvariant();
if (string.IsNullOrEmpty(avatarHash) || (!string.IsNullOrEmpty(LastAvatarHash) && avatarHash.Equals(LastAvatarHash))) {
if (!string.IsNullOrEmpty(LastNickname) && nickname.Equals(LastNickname) && !string.IsNullOrEmpty(LastAvatarHash) && avatarHash.Equals(LastAvatarHash)) {
return;
}
await Semaphore.WaitAsync().ConfigureAwait(false);
try {
if (!string.IsNullOrEmpty(LastAvatarHash) && avatarHash.Equals(LastAvatarHash)) {
if (!string.IsNullOrEmpty(LastNickname) && nickname.Equals(LastNickname) && !string.IsNullOrEmpty(LastAvatarHash) && avatarHash.Equals(LastAvatarHash)) {
return;
}
const string request = SharedInfo.StatisticsServer + "/api/PersonaState";
Dictionary<string, string> data = new Dictionary<string, string>(2) {
Dictionary<string, string> data = new Dictionary<string, string>(3) {
{ "SteamID", Bot.SteamID.ToString() },
{ "Nickname", nickname },
{ "AvatarHash", avatarHash }
};
LastAvatarHash = avatarHash;
// We don't need retry logic here
await Program.WebBrowser.UrlPost(request, data).ConfigureAwait(false);
if (await Program.WebBrowser.UrlPost(request, data).ConfigureAwait(false)) {
LastNickname = nickname;
LastAvatarHash = avatarHash;
}
} finally {
Semaphore.Release();
}

View File

@@ -110,7 +110,7 @@ namespace ArchiSteamFarm {
if (Bot.HasMobileAuthenticator) {
HashSet<ulong> acceptedWithItemLoseTradeIDs = new HashSet<ulong>(results.Where(result => (result != null) && (result.Result == ParseTradeResult.EResult.AcceptedWithItemLose)).Select(result => result.TradeID));
if (acceptedWithItemLoseTradeIDs.Count > 0) {
await Task.Delay(1000).ConfigureAwait(false); // Sometimes we can be too fast for Steam servers to generate confirmations, wait a short moment
await Task.Delay(3000).ConfigureAwait(false); // Sometimes we can be too fast for Steam servers to generate confirmations, wait a short moment
await Bot.AcceptConfirmations(true, Steam.ConfirmationDetails.EType.Trade, 0, acceptedWithItemLoseTradeIDs).ConfigureAwait(false);
}
}