mirror of
https://github.com/JustArchiNET/ArchiSteamFarm.git
synced 2026-01-01 06:00:46 +00:00
Misc
This commit is contained in:
@@ -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!";
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user