39 lines
771 B
Go
39 lines
771 B
Go
package discord
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"git.sapphic.engineer/roleypoly/v4/types"
|
|
"git.sapphic.engineer/roleypoly/v4/utils"
|
|
)
|
|
|
|
type IGuild interface {
|
|
GetMember(memberID string) (IMember, error)
|
|
}
|
|
|
|
type Guild struct {
|
|
types.DiscordGuild
|
|
|
|
Client IDiscordClient `json:"-"`
|
|
}
|
|
|
|
func (g *Guild) GetMember(memberID string) (*Member, error) {
|
|
guildID := g.ID
|
|
req := NewRequest("GET", utils.J("guilds", guildID, "members", memberID))
|
|
g.Client.BotAuth(req)
|
|
|
|
resp, err := g.Client.Do(req)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("Guild.GetMember: request failed: %w", err)
|
|
}
|
|
|
|
member := &Member{
|
|
Client: g.Client,
|
|
}
|
|
err = OutputResponse(resp, member)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("Guild.GetMember: response decode failed: %w", err)
|
|
}
|
|
|
|
return member, nil
|
|
}
|