diff --git a/src/Discord.Net.Core/Entities/Users/Game.cs b/src/Discord.Net.Core/Entities/Users/Activity.cs similarity index 61% rename from src/Discord.Net.Core/Entities/Users/Game.cs rename to src/Discord.Net.Core/Entities/Users/Activity.cs index 3405b0dd4..07a2fbe2c 100644 --- a/src/Discord.Net.Core/Entities/Users/Game.cs +++ b/src/Discord.Net.Core/Entities/Users/Activity.cs @@ -3,20 +3,20 @@ namespace Discord { [DebuggerDisplay(@"{DebuggerDisplay,nq}")] - public struct Game + public struct Activity { public string Name { get; } public string StreamUrl { get; } - public StreamType StreamType { get; } + public ActivityType Type { get; } - public Game(string name, string streamUrl, StreamType type) + public Activity(string name, string streamUrl, ActivityType type) { Name = name; StreamUrl = streamUrl; - StreamType = type; + Type = type; } - private Game(string name) - : this(name, null, StreamType.NotStreaming) { } + private Activity(string name) + : this(name, null, ActivityType.Playing) { } public override string ToString() => Name; private string DebuggerDisplay => StreamUrl != null ? $"{Name} ({StreamUrl})" : Name; diff --git a/src/Discord.Net.Core/Entities/Users/ActivityType.cs b/src/Discord.Net.Core/Entities/Users/ActivityType.cs new file mode 100644 index 000000000..2aae1edb9 --- /dev/null +++ b/src/Discord.Net.Core/Entities/Users/ActivityType.cs @@ -0,0 +1,10 @@ +namespace Discord +{ + public enum ActivityType + { + Playing = 0, + Streaming = 1, + ListeningTo = 2, + Watching = 3 + } +} diff --git a/src/Discord.Net.Core/Entities/Users/IPresence.cs b/src/Discord.Net.Core/Entities/Users/IPresence.cs index 7f182241b..85d9698dd 100644 --- a/src/Discord.Net.Core/Entities/Users/IPresence.cs +++ b/src/Discord.Net.Core/Entities/Users/IPresence.cs @@ -3,7 +3,7 @@ public interface IPresence { /// Gets the game this user is currently playing, if any. - Game? Game { get; } + Activity? Activity { get; } /// Gets the current status of this user. UserStatus Status { get; } } diff --git a/src/Discord.Net.Core/Entities/Users/StreamType.cs b/src/Discord.Net.Core/Entities/Users/StreamType.cs deleted file mode 100644 index 7622e3d6e..000000000 --- a/src/Discord.Net.Core/Entities/Users/StreamType.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Discord -{ - public enum StreamType - { - NotStreaming = 0, - Twitch = 1 - } -} diff --git a/src/Discord.Net.Rest/API/Common/Game.cs b/src/Discord.Net.Rest/API/Common/Activity.cs similarity index 85% rename from src/Discord.Net.Rest/API/Common/Game.cs rename to src/Discord.Net.Rest/API/Common/Activity.cs index a499d83b0..e7855c487 100644 --- a/src/Discord.Net.Rest/API/Common/Game.cs +++ b/src/Discord.Net.Rest/API/Common/Activity.cs @@ -5,14 +5,14 @@ using System.Runtime.Serialization; namespace Discord.API { - internal class Game + internal class Activity { [JsonProperty("name")] public string Name { get; set; } [JsonProperty("url")] public Optional StreamUrl { get; set; } [JsonProperty("type")] - public Optional StreamType { get; set; } + public Optional Type { get; set; } [OnError] internal void OnError(StreamingContext context, ErrorContext errorContext) diff --git a/src/Discord.Net.Rest/API/Common/Presence.cs b/src/Discord.Net.Rest/API/Common/Presence.cs index 2902b7ce3..acbb65d4d 100644 --- a/src/Discord.Net.Rest/API/Common/Presence.cs +++ b/src/Discord.Net.Rest/API/Common/Presence.cs @@ -12,7 +12,7 @@ namespace Discord.API [JsonProperty("status")] public UserStatus Status { get; set; } [JsonProperty("game")] - public Game Game { get; set; } + public Activity Activity { get; set; } [JsonProperty("roles")] public Optional Roles { get; set; } diff --git a/src/Discord.Net.Rest/Entities/Users/RestUser.cs b/src/Discord.Net.Rest/Entities/Users/RestUser.cs index d8ade3a6b..6d8fab0c3 100644 --- a/src/Discord.Net.Rest/Entities/Users/RestUser.cs +++ b/src/Discord.Net.Rest/Entities/Users/RestUser.cs @@ -16,7 +16,7 @@ namespace Discord.Rest public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id); public string Discriminator => DiscriminatorValue.ToString("D4"); public string Mention => MentionUtils.MentionUser(Id); - public virtual Game? Game => null; + public virtual Activity? Activity => null; public virtual UserStatus Status => UserStatus.Offline; public virtual bool IsWebhook => false; diff --git a/src/Discord.Net.Rpc/Entities/Users/RpcUser.cs b/src/Discord.Net.Rpc/Entities/Users/RpcUser.cs index c6b0b2fd8..299063aaf 100644 --- a/src/Discord.Net.Rpc/Entities/Users/RpcUser.cs +++ b/src/Discord.Net.Rpc/Entities/Users/RpcUser.cs @@ -18,7 +18,7 @@ namespace Discord.Rpc public string Discriminator => DiscriminatorValue.ToString("D4"); public string Mention => MentionUtils.MentionUser(Id); public virtual bool IsWebhook => false; - public virtual Game? Game => null; + public virtual Activity? Activity => null; public virtual UserStatus Status => UserStatus.Offline; internal RpcUser(DiscordRpcClient discord, ulong id) diff --git a/src/Discord.Net.WebSocket/API/Gateway/StatusUpdateParams.cs b/src/Discord.Net.WebSocket/API/Gateway/StatusUpdateParams.cs index fc0964c17..521027328 100644 --- a/src/Discord.Net.WebSocket/API/Gateway/StatusUpdateParams.cs +++ b/src/Discord.Net.WebSocket/API/Gateway/StatusUpdateParams.cs @@ -13,6 +13,6 @@ namespace Discord.API.Gateway [JsonProperty("afk")] public bool IsAFK { get; set; } [JsonProperty("game")] - public Game Game { get; set; } + public Activity Activity { get; set; } } } diff --git a/src/Discord.Net.WebSocket/BaseSocketClient.cs b/src/Discord.Net.WebSocket/BaseSocketClient.cs index d248285cd..06e8616e2 100644 --- a/src/Discord.Net.WebSocket/BaseSocketClient.cs +++ b/src/Discord.Net.WebSocket/BaseSocketClient.cs @@ -13,7 +13,7 @@ namespace Discord.WebSocket /// Gets the estimated round-trip latency, in milliseconds, to the gateway server. public abstract int Latency { get; protected set; } public abstract UserStatus Status { get; protected set; } - public abstract Game? Game { get; protected set; } + public abstract Activity? Game { get; protected set; } internal new DiscordSocketApiClient ApiClient => base.ApiClient as DiscordSocketApiClient; @@ -44,7 +44,7 @@ namespace Discord.WebSocket /// public abstract Task StopAsync(); public abstract Task SetStatusAsync(UserStatus status); - public abstract Task SetGameAsync(string name, string streamUrl = null, StreamType streamType = StreamType.NotStreaming); + public abstract Task SetActivityAsync(string name, string streamUrl = null, ActivityType streamType = ActivityType.Playing); public abstract Task DownloadUsersAsync(IEnumerable guilds); /// diff --git a/src/Discord.Net.WebSocket/DiscordShardedClient.cs b/src/Discord.Net.WebSocket/DiscordShardedClient.cs index 6c2a0f3b9..9685398c6 100644 --- a/src/Discord.Net.WebSocket/DiscordShardedClient.cs +++ b/src/Discord.Net.WebSocket/DiscordShardedClient.cs @@ -22,7 +22,7 @@ namespace Discord.WebSocket /// Gets the estimated round-trip latency, in milliseconds, to the gateway server. public override int Latency { get => GetLatency(); protected set { } } public override UserStatus Status { get => _shards[0].Status; protected set { } } - public override Game? Game { get => _shards[0].Game; protected set { } } + public override Activity? Game { get => _shards[0].Game; protected set { } } internal new DiscordSocketApiClient ApiClient => base.ApiClient as DiscordSocketApiClient; public override IReadOnlyCollection Guilds => GetGuilds().ToReadOnlyCollection(() => GetGuildCount()); @@ -238,10 +238,10 @@ namespace Discord.WebSocket for (int i = 0; i < _shards.Length; i++) await _shards[i].SetStatusAsync(status).ConfigureAwait(false); } - public override async Task SetGameAsync(string name, string streamUrl = null, StreamType streamType = StreamType.NotStreaming) + public override async Task SetActivityAsync(string name, string streamUrl = null, ActivityType streamType = ActivityType.Playing) { for (int i = 0; i < _shards.Length; i++) - await _shards[i].SetGameAsync(name, streamUrl, streamType).ConfigureAwait(false); + await _shards[i].SetActivityAsync(name, streamUrl, streamType).ConfigureAwait(false); } private void RegisterEvents(DiscordSocketClient client, bool isPrimary) diff --git a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs index 72781204c..48fb76dae 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs @@ -253,7 +253,7 @@ namespace Discord.API options = RequestOptions.CreateOrClone(options); await SendGatewayAsync(GatewayOpCode.Heartbeat, lastSeq, options: options).ConfigureAwait(false); } - public async Task SendStatusUpdateAsync(UserStatus status, bool isAFK, long? since, Game game, RequestOptions options = null) + public async Task SendStatusUpdateAsync(UserStatus status, bool isAFK, long? since, Activity game, RequestOptions options = null) { options = RequestOptions.CreateOrClone(options); var args = new StatusUpdateParams @@ -261,7 +261,7 @@ namespace Discord.API Status = status, IdleSince = since, IsAFK = isAFK, - Game = game + Activity = game }; await SendGatewayAsync(GatewayOpCode.StatusUpdate, args, options: options).ConfigureAwait(false); } diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index d152bbc03..c81d86a8e 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -16,7 +16,7 @@ using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; -using GameModel = Discord.API.Game; +using GameModel = Discord.API.Activity; namespace Discord.WebSocket { @@ -48,7 +48,7 @@ namespace Discord.WebSocket /// public override int Latency { get; protected set; } public override UserStatus Status { get; protected set; } = UserStatus.Online; - public override Game? Game { get; protected set; } + public override Activity? Game { get; protected set; } //From DiscordSocketConfig internal int TotalShards { get; private set; } @@ -326,10 +326,10 @@ namespace Discord.WebSocket _statusSince = null; await SendStatusAsync().ConfigureAwait(false); } - public override async Task SetGameAsync(string name, string streamUrl = null, StreamType streamType = StreamType.NotStreaming) + public override async Task SetActivityAsync(string name, string streamUrl = null, ActivityType streamType = ActivityType.Playing) { if (name != null) - Game = new Game(name, streamUrl, streamType); + Game = new Activity(name, streamUrl, streamType); else Game = null; await SendStatusAsync().ConfigureAwait(false); @@ -346,10 +346,10 @@ namespace Discord.WebSocket GameModel gameModel; if (game != null) { - gameModel = new API.Game + gameModel = new API.Activity { Name = game.Value.Name, - StreamType = game.Value.StreamType, + Type = game.Value.Type, StreamUrl = game.Value.StreamUrl }; } diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketPresence.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketPresence.cs index 00d4b4bbc..9d52a797c 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketPresence.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketPresence.cs @@ -8,20 +8,20 @@ namespace Discord.WebSocket public struct SocketPresence : IPresence { public UserStatus Status { get; } - public Game? Game { get; } + public Activity? Activity { get; } - internal SocketPresence(UserStatus status, Game? game) + internal SocketPresence(UserStatus status, Activity? game) { Status = status; - Game = game; + Activity = game; } internal static SocketPresence Create(Model model) { - return new SocketPresence(model.Status, model.Game != null ? model.Game.ToEntity() : (Game?)null); + return new SocketPresence(model.Status, model.Activity != null ? model.Activity.ToEntity() : (Activity?)null); } public override string ToString() => Status.ToString(); - private string DebuggerDisplay => $"{Status}{(Game != null ? $", {Game.Value.Name} ({Game.Value.StreamType})" : "")}"; + private string DebuggerDisplay => $"{Status}{(Activity != null ? $", {Activity.Value.Name} ({Activity.Value.Type})" : "")}"; internal SocketPresence Clone() => this; } diff --git a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs index a0c78b93f..9f76ba182 100644 --- a/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs +++ b/src/Discord.Net.WebSocket/Entities/Users/SocketUser.cs @@ -18,7 +18,7 @@ namespace Discord.WebSocket public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id); public string Discriminator => DiscriminatorValue.ToString("D4"); public string Mention => MentionUtils.MentionUser(Id); - public Game? Game => Presence.Game; + public Activity? Activity => Presence.Activity; public UserStatus Status => Presence.Status; internal SocketUser(DiscordSocketClient discord, ulong id) diff --git a/src/Discord.Net.WebSocket/Extensions/EntityExtensions.cs b/src/Discord.Net.WebSocket/Extensions/EntityExtensions.cs index 636ef68f4..3996a8725 100644 --- a/src/Discord.Net.WebSocket/Extensions/EntityExtensions.cs +++ b/src/Discord.Net.WebSocket/Extensions/EntityExtensions.cs @@ -2,11 +2,11 @@ { internal static class EntityExtensions { - public static Game ToEntity(this API.Game model) + public static Activity ToEntity(this API.Activity model) { - return new Game(model.Name, + return new Activity(model.Name, model.StreamUrl.GetValueOrDefault(null), - model.StreamType.GetValueOrDefault(null) ?? StreamType.NotStreaming); + model.Type.GetValueOrDefault(null) ?? ActivityType.Playing); } } }