Used a Get method instead of a property to be consistent with GetAvatarUrl and other GetUrl methods. The `"https://discordapp.com/"` can be exchanged with `DiscordConfig.CDNUrl` and the links work fine still. Except this removes the embed preview from the links. This has been tested in both dms and guilds by checking the value of `GetJumpUrl()` on received and sent messages. I think I got all occurrences of where this should be implemented.pull/1098/head
@@ -1,4 +1,4 @@ | |||||
using System; | |||||
using System; | |||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
namespace Discord | namespace Discord | ||||
@@ -15,6 +15,8 @@ namespace Discord | |||||
bool IsPinned { get; } | bool IsPinned { get; } | ||||
/// <summary> Returns the content for this message. </summary> | /// <summary> Returns the content for this message. </summary> | ||||
string Content { get; } | string Content { get; } | ||||
/// <summary> Returns a jump url for this message. </summary> | |||||
string GetJumpUrl(); | |||||
/// <summary> Gets the time this message was sent. </summary> | /// <summary> Gets the time this message was sent. </summary> | ||||
DateTimeOffset Timestamp { get; } | DateTimeOffset Timestamp { get; } | ||||
/// <summary> Gets the time of this message's last edit, if any. </summary> | /// <summary> Gets the time of this message's last edit, if any. </summary> | ||||
@@ -93,6 +93,12 @@ namespace Discord.Rest | |||||
await client.ApiClient.RemovePinAsync(msg.Channel.Id, msg.Id, options).ConfigureAwait(false); | await client.ApiClient.RemovePinAsync(msg.Channel.Id, msg.Id, options).ConfigureAwait(false); | ||||
} | } | ||||
public static string GetJumpUrl(IMessage msg) | |||||
{ | |||||
var channel = msg.Channel; | |||||
return $"https://discordapp.com/channels/{(channel is IDMChannel ? "@me" : $"{(channel as IGuildChannel).GuildId}")}/{channel.Id}/{msg.Id}"; | |||||
} | |||||
public static ImmutableArray<ITag> ParseTags(string text, IMessageChannel channel, IGuild guild, IReadOnlyCollection<IUser> userMentions) | public static ImmutableArray<ITag> ParseTags(string text, IMessageChannel channel, IGuild guild, IReadOnlyCollection<IUser> userMentions) | ||||
{ | { | ||||
var tags = ImmutableArray.CreateBuilder<ITag>(); | var tags = ImmutableArray.CreateBuilder<ITag>(); | ||||
@@ -1,4 +1,4 @@ | |||||
using System; | |||||
using System; | |||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Collections.Immutable; | using System.Collections.Immutable; | ||||
using System.Linq; | using System.Linq; | ||||
@@ -63,6 +63,8 @@ namespace Discord.Rest | |||||
public override string ToString() => Content; | public override string ToString() => Content; | ||||
public string GetJumpUrl() => MessageHelper.GetJumpUrl(this); | |||||
MessageType IMessage.Type => MessageType.Default; | MessageType IMessage.Type => MessageType.Default; | ||||
IUser IMessage.Author => Author; | IUser IMessage.Author => Author; | ||||
IReadOnlyCollection<IAttachment> IMessage.Attachments => Attachments; | IReadOnlyCollection<IAttachment> IMessage.Attachments => Attachments; | ||||
@@ -1,4 +1,4 @@ | |||||
using Discord.Rest; | |||||
using Discord.Rest; | |||||
using System; | using System; | ||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Collections.Immutable; | using System.Collections.Immutable; | ||||
@@ -58,6 +58,9 @@ namespace Discord.WebSocket | |||||
=> MessageHelper.DeleteAsync(this, Discord, options); | => MessageHelper.DeleteAsync(this, Discord, options); | ||||
public override string ToString() => Content; | public override string ToString() => Content; | ||||
public string GetJumpUrl() => MessageHelper.GetJumpUrl(this); | |||||
internal SocketMessage Clone() => MemberwiseClone() as SocketMessage; | internal SocketMessage Clone() => MemberwiseClone() as SocketMessage; | ||||
//IMessage | //IMessage | ||||