mirror of
https://github.com/diamondburned/cchat-discord.git
synced 2025-04-01 23:35:11 +00:00
Fixed several bugs related to channel orders and message edits
This commit is contained in:
parent
1e137df6de
commit
5b88b577fb
|
@ -254,7 +254,7 @@ func (ch *Channel) JoinServer(ctx context.Context, ct cchat.MessagesContainer) (
|
||||||
ch.session.AddHandler(func(m *gateway.MessageUpdateEvent) {
|
ch.session.AddHandler(func(m *gateway.MessageUpdateEvent) {
|
||||||
// If the updated content is empty. TODO: add embed support.
|
// If the updated content is empty. TODO: add embed support.
|
||||||
if m.ChannelID == ch.id && m.Content != "" {
|
if m.ChannelID == ch.id && m.Content != "" {
|
||||||
ct.UpdateMessage(NewMessageUpdateContent(m.Message))
|
ct.UpdateMessage(NewMessageUpdateContent(m.Message, ch.session))
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
ch.session.AddHandler(func(m *gateway.MessageDeleteEvent) {
|
ch.session.AddHandler(func(m *gateway.MessageDeleteEvent) {
|
||||||
|
|
8
guild.go
8
guild.go
|
@ -158,10 +158,16 @@ func (g *Guild) Servers(container cchat.ServersContainer) error {
|
||||||
// Only get top-level channels (those with category ID being null).
|
// Only get top-level channels (those with category ID being null).
|
||||||
var toplevels = filterAccessible(g.session, filterCategory(c, discord.NullSnowflake))
|
var toplevels = filterAccessible(g.session, filterCategory(c, discord.NullSnowflake))
|
||||||
|
|
||||||
sort.Slice(toplevels, func(i, j int) bool {
|
// Sort so that positions are correct.
|
||||||
|
sort.SliceStable(toplevels, func(i, j int) bool {
|
||||||
return toplevels[i].Position < toplevels[j].Position
|
return toplevels[i].Position < toplevels[j].Position
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// Sort so that channels are before categories.
|
||||||
|
sort.SliceStable(toplevels, func(i, _ int) bool {
|
||||||
|
return toplevels[i].Type != discord.GuildCategory
|
||||||
|
})
|
||||||
|
|
||||||
var chs = make([]cchat.Server, 0, len(toplevels))
|
var chs = make([]cchat.Server, 0, len(toplevels))
|
||||||
|
|
||||||
for _, ch := range toplevels {
|
for _, ch := range toplevels {
|
||||||
|
|
13
message.go
13
message.go
|
@ -121,10 +121,19 @@ type Message struct {
|
||||||
mentioned bool
|
mentioned bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewMessageUpdateContent(msg discord.Message) Message {
|
func NewMessageUpdateContent(msg discord.Message, s *Session) Message {
|
||||||
|
// Check if content is empty.
|
||||||
|
if msg.Content == "" {
|
||||||
|
// Then grab the content from the state.
|
||||||
|
m, err := s.Store.Message(msg.ChannelID, msg.ID)
|
||||||
|
if err == nil {
|
||||||
|
msg.Content = m.Content
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return Message{
|
return Message{
|
||||||
messageHeader: newHeader(msg),
|
messageHeader: newHeader(msg),
|
||||||
content: text.Rich{Content: msg.Content},
|
content: segments.ParseMessage(&msg, s.Store),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue