forked from pothtonswer/discordmuffin
feat(MessageReference): add Type
(#1595)
https://discord.com/developers/docs/resources/message#message-reference-types
This commit is contained in:
parent
33ffff21d3
commit
00db80a651
2 changed files with 83 additions and 7 deletions
31
message.go
31
message.go
|
@ -471,16 +471,28 @@ type MessageApplication struct {
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MessageReferenceType is a type of MessageReference
|
||||||
|
type MessageReferenceType int
|
||||||
|
|
||||||
|
// Known valid MessageReferenceType values
|
||||||
|
// https://discord.com/developers/docs/resources/message#message-reference-types
|
||||||
|
const (
|
||||||
|
MessageReferenceTypeDefault MessageReferenceType = 0
|
||||||
|
MessageReferenceTypeForward MessageReferenceType = 1
|
||||||
|
)
|
||||||
|
|
||||||
// MessageReference contains reference data sent with crossposted messages
|
// MessageReference contains reference data sent with crossposted messages
|
||||||
type MessageReference struct {
|
type MessageReference struct {
|
||||||
MessageID string `json:"message_id"`
|
Type MessageReferenceType `json:"type,omitempty"`
|
||||||
ChannelID string `json:"channel_id,omitempty"`
|
MessageID string `json:"message_id"`
|
||||||
GuildID string `json:"guild_id,omitempty"`
|
ChannelID string `json:"channel_id,omitempty"`
|
||||||
FailIfNotExists *bool `json:"fail_if_not_exists,omitempty"`
|
GuildID string `json:"guild_id,omitempty"`
|
||||||
|
FailIfNotExists *bool `json:"fail_if_not_exists,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Message) reference(failIfNotExists bool) *MessageReference {
|
func (m *Message) reference(refType MessageReferenceType, failIfNotExists bool) *MessageReference {
|
||||||
return &MessageReference{
|
return &MessageReference{
|
||||||
|
Type: refType,
|
||||||
GuildID: m.GuildID,
|
GuildID: m.GuildID,
|
||||||
ChannelID: m.ChannelID,
|
ChannelID: m.ChannelID,
|
||||||
MessageID: m.ID,
|
MessageID: m.ID,
|
||||||
|
@ -490,13 +502,18 @@ func (m *Message) reference(failIfNotExists bool) *MessageReference {
|
||||||
|
|
||||||
// Reference returns a MessageReference of the given message.
|
// Reference returns a MessageReference of the given message.
|
||||||
func (m *Message) Reference() *MessageReference {
|
func (m *Message) Reference() *MessageReference {
|
||||||
return m.reference(true)
|
return m.reference(MessageReferenceTypeDefault, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SoftReference returns a MessageReference of the given message.
|
// SoftReference returns a MessageReference of the given message.
|
||||||
// If the message doesn't exist it will instead be sent as a non-reply message.
|
// If the message doesn't exist it will instead be sent as a non-reply message.
|
||||||
func (m *Message) SoftReference() *MessageReference {
|
func (m *Message) SoftReference() *MessageReference {
|
||||||
return m.reference(false)
|
return m.reference(MessageReferenceTypeDefault, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Forward returns a MessageReference for a forwarded message.
|
||||||
|
func (m *Message) Forward() *MessageReference {
|
||||||
|
return m.reference(MessageReferenceTypeForward, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ContentWithMentionsReplaced will replace all @<id> mentions with the
|
// ContentWithMentionsReplaced will replace all @<id> mentions with the
|
||||||
|
|
|
@ -50,3 +50,62 @@ func TestGettingEmojisFromMessage(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestMessage_Reference(t *testing.T) {
|
||||||
|
m := &Message{
|
||||||
|
ID: "811736565172011001",
|
||||||
|
GuildID: "811736565172011002",
|
||||||
|
ChannelID: "811736565172011003",
|
||||||
|
}
|
||||||
|
|
||||||
|
ref := m.Reference()
|
||||||
|
|
||||||
|
if ref.Type != 0 {
|
||||||
|
t.Error("Default reference type should be 0")
|
||||||
|
}
|
||||||
|
|
||||||
|
if ref.MessageID != m.ID {
|
||||||
|
t.Error("Message ID should be the same")
|
||||||
|
}
|
||||||
|
|
||||||
|
if ref.GuildID != m.GuildID {
|
||||||
|
t.Error("Guild ID should be the same")
|
||||||
|
}
|
||||||
|
|
||||||
|
if ref.ChannelID != m.ChannelID {
|
||||||
|
t.Error("Channel ID should be the same")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestMessage_Forward(t *testing.T) {
|
||||||
|
m := &Message{
|
||||||
|
ID: "811736565172011001",
|
||||||
|
GuildID: "811736565172011002",
|
||||||
|
ChannelID: "811736565172011003",
|
||||||
|
}
|
||||||
|
|
||||||
|
ref := m.Forward()
|
||||||
|
|
||||||
|
if ref.Type != MessageReferenceTypeForward {
|
||||||
|
t.Error("Reference type should be 1 (forward)")
|
||||||
|
}
|
||||||
|
|
||||||
|
if ref.MessageID != m.ID {
|
||||||
|
t.Error("Message ID should be the same")
|
||||||
|
}
|
||||||
|
|
||||||
|
if ref.GuildID != m.GuildID {
|
||||||
|
t.Error("Guild ID should be the same")
|
||||||
|
}
|
||||||
|
|
||||||
|
if ref.ChannelID != m.ChannelID {
|
||||||
|
t.Error("Channel ID should be the same")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestMessageReference_DefaultTypeIsDefault(t *testing.T) {
|
||||||
|
r := MessageReference{}
|
||||||
|
if r.Type != MessageReferenceTypeDefault {
|
||||||
|
t.Error("Default message type should be MessageReferenceTypeDefault")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue