Added MessagesBefore

This commit is contained in:
diamondburned 2020-08-19 16:20:51 -07:00
parent 528f40bb72
commit b9d06fade5
8 changed files with 39 additions and 10 deletions

View File

@ -28,7 +28,7 @@ func NewCategory(s *Session, ch discord.Channel) *Category {
}
}
func (c *Category) ID() string {
func (c *Category) ID() cchat.ID {
return c.id.String()
}

View File

@ -71,6 +71,7 @@ var (
_ cchat.ServerNickname = (*Channel)(nil)
_ cchat.ServerMessageEditor = (*Channel)(nil)
_ cchat.ServerMessageActioner = (*Channel)(nil)
_ cchat.ServerMessageBacklogger = (*Channel)(nil)
_ cchat.ServerMessageTypingIndicator = (*Channel)(nil)
_ cchat.ServerMessageUnreadIndicator = (*Channel)(nil)
)
@ -115,7 +116,7 @@ func (ch *Channel) guild() (*discord.Guild, error) {
return nil, errors.New("channel not in a guild")
}
func (ch *Channel) ID() string {
func (ch *Channel) ID() cchat.ID {
return ch.id.String()
}
@ -287,6 +288,32 @@ func (ch *Channel) JoinServer(ctx context.Context, ct cchat.MessagesContainer) (
return joinCancels(addcancel()), nil
}
func (ch *Channel) MessagesBefore(ctx context.Context, b cchat.ID, c cchat.MessagePrepender) error {
p, err := discord.ParseSnowflake(b)
if err != nil {
return errors.Wrap(err, "Failed to parse snowflake")
}
s := ch.session.WithContext(ctx)
m, err := s.MessagesBefore(ch.id, discord.MessageID(p), uint(ch.session.MaxMessages()))
if err != nil {
return errors.Wrap(err, "Failed to get messages")
}
// Create the backlog without any member information.
g, err := s.Guild(ch.guildID)
if err != nil {
return errors.Wrap(err, "Failed to get guild")
}
for _, m := range m {
c.PrependMessage(NewBacklogMessage(m, ch.session, *g))
}
return nil
}
// MessageEditable returns true if the given message ID belongs to the current
// user.
func (ch *Channel) MessageEditable(id string) bool {

View File

@ -135,7 +135,7 @@ func NewListMember(ch *Channel, it gateway.GuildMemberListOpItem) *ListMember {
}
}
func (l *ListMember) ID() string {
func (l *ListMember) ID() cchat.ID {
return l.userID.String()
}
@ -305,7 +305,7 @@ func NewListSection(listID string, ch *Channel, group gateway.GuildMemberListGro
}
}
func (s *ListSection) ID() string {
func (s *ListSection) ID() cchat.ID {
return s.id
// return fmt.Sprintf("%s-%s", s.listID, s.name)
}

2
go.mod
View File

@ -4,7 +4,7 @@ go 1.14
require (
github.com/diamondburned/arikawa v1.2.0
github.com/diamondburned/cchat v0.0.48
github.com/diamondburned/cchat v0.0.49
github.com/diamondburned/ningen v0.1.1-0.20200818185419-0d3e89f25ee1
github.com/dustin/go-humanize v1.0.0
github.com/go-test/deep v1.0.6

2
go.sum
View File

@ -67,6 +67,8 @@ github.com/diamondburned/cchat v0.0.47 h1:qU2TNeXlqru8za4qAgMPWTw6k8HGGOyic08GPP
github.com/diamondburned/cchat v0.0.47/go.mod h1:+zXktogE45A0om4fT6B/z6Ii7FXNafjxsNspI0rlhbU=
github.com/diamondburned/cchat v0.0.48 h1:MAzGzKY20JBh/LnirOZVPwbMq07xfqu4Lb4XsV9/sXQ=
github.com/diamondburned/cchat v0.0.48/go.mod h1:+zXktogE45A0om4fT6B/z6Ii7FXNafjxsNspI0rlhbU=
github.com/diamondburned/cchat v0.0.49 h1:zP6QvjdRU3UqDZt3rEqjkR/5M68XRVms7htHfE9tLOc=
github.com/diamondburned/cchat v0.0.49/go.mod h1:+zXktogE45A0om4fT6B/z6Ii7FXNafjxsNspI0rlhbU=
github.com/diamondburned/ningen v0.1.1-0.20200621014632-6babb812b249 h1:yP7kJ+xCGpDz6XbcfACJcju4SH1XDPwlrvbofz3lP8I=
github.com/diamondburned/ningen v0.1.1-0.20200621014632-6babb812b249/go.mod h1:xW9hpBZsGi8KpAh10TyP+YQlYBo+Xc+2w4TR6N0951A=
github.com/diamondburned/ningen v0.1.1-0.20200708085949-b64e350f3b8c h1:3h/kyk6HplYZF3zLi106itjYJWjbuMK/twijeGLEy2M=

View File

@ -44,7 +44,7 @@ func NewGuildFolder(s *Session, gf gateway.GuildFolder) *GuildFolder {
}
}
func (gf *GuildFolder) ID() string {
func (gf *GuildFolder) ID() cchat.ID {
return strconv.FormatInt(int64(gf.GuildFolder.ID), 10)
}
@ -115,7 +115,7 @@ func (g *Guild) selfState() (*discord.Guild, error) {
return g.session.Store.Guild(g.id)
}
func (g *Guild) ID() string {
func (g *Guild) ID() cchat.ID {
return g.id.String()
}

View File

@ -44,7 +44,7 @@ func NewHeaderDelete(d *gateway.MessageDeleteEvent) messageHeader {
}
}
func (m messageHeader) ID() string {
func (m messageHeader) ID() cchat.ID {
return m.id.String()
}
@ -125,7 +125,7 @@ func RenderMemberName(m discord.Member, g discord.Guild, s *Session) text.Rich {
return name
}
func (a Author) ID() string {
func (a Author) ID() cchat.ID {
return a.id.String()
}

View File

@ -117,7 +117,7 @@ func NewSession(s *state.State) (*Session, error) {
}, nil
}
func (s *Session) ID() string {
func (s *Session) ID() cchat.ID {
return s.userID.String()
}