mirror of
https://github.com/JustArchiNET/ArchiSteamFarm.git
synced 2026-01-01 22:20:52 +00:00
@@ -41,9 +41,11 @@ namespace ArchiSteamFarm {
|
||||
|
||||
internal sealed class NotificationsCallback : CallbackMsg {
|
||||
internal sealed class Notification {
|
||||
internal enum ENotificationType {
|
||||
internal enum ENotificationType : uint {
|
||||
Unknown = 0,
|
||||
Trading = 1,
|
||||
// Only custom below, different than ones available as user_notification_type
|
||||
Items = 514
|
||||
}
|
||||
|
||||
internal ENotificationType NotificationType { get; set; }
|
||||
@@ -65,6 +67,17 @@ namespace ArchiSteamFarm {
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
internal NotificationsCallback(JobID jobID, CMsgClientItemAnnouncements msg) {
|
||||
JobID = jobID;
|
||||
|
||||
if (msg == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Notifications = new List<Notification>();
|
||||
Notifications.Add(new Notification { NotificationType = Notification.ENotificationType.Items });
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed class OfflineMessageCallback : CallbackMsg {
|
||||
@@ -233,6 +246,9 @@ namespace ArchiSteamFarm {
|
||||
case EMsg.ClientFSOfflineMessageNotification:
|
||||
HandleFSOfflineMessageNotification(packetMsg);
|
||||
break;
|
||||
case EMsg.ClientItemAnnouncements:
|
||||
HandleItemAnnouncements(packetMsg);
|
||||
break;
|
||||
case EMsg.ClientPurchaseResponse:
|
||||
HandlePurchaseResponse(packetMsg);
|
||||
break;
|
||||
@@ -251,6 +267,15 @@ namespace ArchiSteamFarm {
|
||||
Client.PostCallback(new OfflineMessageCallback(packetMsg.TargetJobID, response.Body));
|
||||
}
|
||||
|
||||
private void HandleItemAnnouncements(IPacketMsg packetMsg) {
|
||||
if (packetMsg == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
var response = new ClientMsgProtobuf<CMsgClientItemAnnouncements>(packetMsg);
|
||||
Client.PostCallback(new NotificationsCallback(packetMsg.TargetJobID, response.Body));
|
||||
}
|
||||
|
||||
private void HandlePurchaseResponse(IPacketMsg packetMsg) {
|
||||
if (packetMsg == null) {
|
||||
return;
|
||||
|
||||
@@ -419,6 +419,24 @@ namespace ArchiSteamFarm {
|
||||
return htmlDocument;
|
||||
}
|
||||
|
||||
internal async Task<bool> MarkInventory() {
|
||||
if (SteamID == 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
HttpResponseMessage response = null;
|
||||
for (byte i = 0; i < WebBrowser.MaxRetries && response == null; i++) {
|
||||
response = await WebBrowser.UrlGet("https://steamcommunity.com/profiles/" + SteamID + "/inventory/", Cookie).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
if (response == null) {
|
||||
Logging.LogGenericWTF("Request failed even after " + WebBrowser.MaxRetries + " tries", Bot.BotName);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private async Task UnlockParentalAccount(string parentalPin) {
|
||||
if (string.IsNullOrEmpty(parentalPin) || parentalPin.Equals("0")) {
|
||||
return;
|
||||
|
||||
@@ -1260,14 +1260,18 @@ namespace ArchiSteamFarm {
|
||||
}
|
||||
}
|
||||
|
||||
private void OnNotifications(ArchiHandler.NotificationsCallback callback) {
|
||||
if (callback == null) {
|
||||
private async void OnNotifications(ArchiHandler.NotificationsCallback callback) {
|
||||
if (callback == null || callback.Notifications == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
bool checkTrades = false;
|
||||
bool markInventory = false;
|
||||
foreach (var notification in callback.Notifications) {
|
||||
switch (notification.NotificationType) {
|
||||
case ArchiHandler.NotificationsCallback.Notification.ENotificationType.Items:
|
||||
markInventory = true;
|
||||
break;
|
||||
case ArchiHandler.NotificationsCallback.Notification.ENotificationType.Trading:
|
||||
checkTrades = true;
|
||||
break;
|
||||
@@ -1277,6 +1281,10 @@ namespace ArchiSteamFarm {
|
||||
if (checkTrades) {
|
||||
Trading.CheckTrades();
|
||||
}
|
||||
|
||||
if (markInventory) {
|
||||
await ArchiWebHandler.MarkInventory().ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnOfflineMessage(ArchiHandler.OfflineMessageCallback callback) {
|
||||
|
||||
Reference in New Issue
Block a user