partially fixed references
This commit is contained in:
parent
73b0d3f39c
commit
a691813b90
|
@ -64,26 +64,26 @@ func (msgr *Messenger) JoinServer(ctx context.Context, ct cchat.MessagesContaine
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
m, err := msgr.Messages()
|
messages, err := msgr.Messages()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// TODO: log
|
// TODO: log
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
g, err := msgr.Guild()
|
guild, err := msgr.Guild()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Loop over all messages and replace the author. The latest
|
// Loop over all messages and replace the author. The latest
|
||||||
// messages are in front.
|
// messages are in front.
|
||||||
for _, msg := range m {
|
for _, msg := range messages {
|
||||||
for _, member := range c.Members {
|
for _, m := range c.Members {
|
||||||
if msg.Author.ID != member.User.ID {
|
if msg.Author.ID != m.User.ID {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
ct.UpdateMessage(message.NewMessageUpdateAuthor(msg, member, *g, msgr.State))
|
ct.UpdateMessage(message.NewMessageUpdateAuthor(msg, m, *guild, msgr.State))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
|
|
|
@ -135,22 +135,22 @@ func (a *Author) addAuthorReference(msgref discord.Message, s *state.Instance) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddMessageReference adds a message reference to the author.
|
// AddMessageReference adds a message reference to the author.
|
||||||
func (a *Author) AddMessageReference(msgref discord.Message, s *state.Instance) {
|
func (a *Author) AddMessageReference(ref discord.Message, s *state.Instance) {
|
||||||
if !msgref.GuildID.IsValid() {
|
if !ref.GuildID.IsValid() {
|
||||||
a.addAuthorReference(msgref, s)
|
a.addAuthorReference(ref, s)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
g, err := s.Cabinet.Guild(msgref.GuildID)
|
g, err := s.Cabinet.Guild(ref.GuildID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.addAuthorReference(msgref, s)
|
a.addAuthorReference(ref, s)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
m, err := s.Cabinet.Member(g.ID, msgref.Author.ID)
|
m, err := s.Cabinet.Member(g.ID, ref.Author.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.addAuthorReference(msgref, s)
|
a.addAuthorReference(ref, s)
|
||||||
s.MemberState.RequestMember(msgref.GuildID, msgref.Author.ID)
|
s.MemberState.RequestMember(g.ID, ref.Author.ID)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -158,6 +158,6 @@ func (a *Author) AddMessageReference(msgref discord.Message, s *state.Instance)
|
||||||
start, end := richMember(&a.name, *m, *g, s)
|
start, end := richMember(&a.name, *m, *g, s)
|
||||||
|
|
||||||
a.name.Segments = append(a.name.Segments,
|
a.name.Segments = append(a.name.Segments,
|
||||||
reference.NewMessageSegment(start, end, msgref.ID),
|
reference.NewMessageSegment(start, end, ref.ID),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -174,7 +174,7 @@ func NewMessage(m discord.Message, s *state.Instance, author Author) Message {
|
||||||
|
|
||||||
content.Content = strings.ReplaceAll(refmsg, "\n", " ") + "\n"
|
content.Content = strings.ReplaceAll(refmsg, "\n", " ") + "\n"
|
||||||
content.Segments = []text.Segment{
|
content.Segments = []text.Segment{
|
||||||
reference.NewMessageSegment(0, len(refmsg), ref.ID),
|
reference.NewMessageSegment(0, len(content.Content), ref.ID),
|
||||||
}
|
}
|
||||||
|
|
||||||
author.AddMessageReference(*ref, s)
|
author.AddMessageReference(*ref, s)
|
||||||
|
@ -186,22 +186,20 @@ func NewMessage(m discord.Message, s *state.Instance, author Author) Message {
|
||||||
// Request members in mentions if we're in a guild.
|
// Request members in mentions if we're in a guild.
|
||||||
if m.GuildID.IsValid() {
|
if m.GuildID.IsValid() {
|
||||||
for _, segment := range content.Segments {
|
for _, segment := range content.Segments {
|
||||||
if mention, ok := segment.(*mention.Segment); ok {
|
mention, ok := segment.(*mention.Segment)
|
||||||
// If this is not a user mention, then skip.
|
if !ok {
|
||||||
if mention.User == nil {
|
continue
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
// If we already have a member, then skip. We could check this
|
|
||||||
// using the timestamp, as we might have a user set into the
|
|
||||||
// member field
|
|
||||||
if mention.User.Member.Joined.IsValid() {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
// Request the member.
|
|
||||||
s.MemberState.RequestMember(m.GuildID, mention.User.Member.User.ID)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If this is not a user mention, then skip. If we already have a
|
||||||
|
// member, then skip. We could check this using the timestamp, as we
|
||||||
|
// might have a user set into the member field.
|
||||||
|
if mention.User == nil || mention.User.Member.Joined.IsValid() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// Request the member.
|
||||||
|
s.MemberState.RequestMember(m.GuildID, mention.User.Member.User.ID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -233,15 +231,26 @@ func (m Message) Mentioned() bool {
|
||||||
|
|
||||||
// ReferencedMessage searches for the referenced message if needed.
|
// ReferencedMessage searches for the referenced message if needed.
|
||||||
func ReferencedMessage(m discord.Message, s *state.Instance, wait bool) (reply *discord.Message) {
|
func ReferencedMessage(m discord.Message, s *state.Instance, wait bool) (reply *discord.Message) {
|
||||||
if m.ReferencedMessage != nil {
|
|
||||||
return m.ReferencedMessage
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deleted or does not exist.
|
// Deleted or does not exist.
|
||||||
if m.Reference == nil || !m.Reference.MessageID.IsValid() {
|
if m.Reference == nil || !m.Reference.MessageID.IsValid() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check these in case.
|
||||||
|
if !m.Reference.ChannelID.IsValid() {
|
||||||
|
m.Reference.ChannelID = m.ChannelID
|
||||||
|
}
|
||||||
|
if !m.Reference.GuildID.IsValid() {
|
||||||
|
m.Reference.GuildID = m.GuildID
|
||||||
|
}
|
||||||
|
|
||||||
|
if m.ReferencedMessage != nil {
|
||||||
|
// Set these in case Discord acts dumb.
|
||||||
|
m.ReferencedMessage.GuildID = m.Reference.GuildID
|
||||||
|
m.ReferencedMessage.ChannelID = m.Reference.ChannelID
|
||||||
|
return m.ReferencedMessage
|
||||||
|
}
|
||||||
|
|
||||||
if !wait {
|
if !wait {
|
||||||
reply, _ = s.Cabinet.Message(m.Reference.ChannelID, m.Reference.MessageID)
|
reply, _ = s.Cabinet.Message(m.Reference.ChannelID, m.Reference.MessageID)
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue