package discord import ( "fmt" "git.sapphic.engineer/roleypoly/v4/utils" ) type IGuildService interface { Client() IDiscordClient GetGuild(guildID string) (IGuild, error) } type GuildService struct { client IDiscordClient } func NewGuildService(client IDiscordClient) *GuildService { return &GuildService{ client: client, } } func (gs *GuildService) Client() IDiscordClient { return gs.client } func (gs *GuildService) GetGuild(guildID string) (*Guild, error) { req := NewRequest("GET", utils.J("guilds", guildID)) gs.client.BotAuth(req) resp, err := gs.client.Do(req) if err != nil { return nil, fmt.Errorf("GuildService.GetGuild: request failed: %w", err) } guild := &Guild{ Client: gs.client, } err = OutputResponse(resp, guild) if err != nil { return nil, fmt.Errorf("GuildService.GetGuild: response decode failed: %w", err) } return guild, nil }