fetch

package
v0.0.0-...-eb18d79 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 7, 2024 License: MIT Imports: 5 Imported by: 0

Documentation

Overview

Package fetch provides functionalities to fetch roles, channels, members and users by so called resolavbles. That means, these functions try to match a member, role or channel by their names, displaynames, IDs or mentions as greedy as prossible.

Index

Constants

This section is empty.

Variables

View Source
var (
	RoleCheckFuncs = []func(*discordgo.Role, string) bool{

		func(r *discordgo.Role, resolvable string) bool {
			return r.ID == resolvable
		},

		func(r *discordgo.Role, resolvable string) bool {
			return r.Name == resolvable
		},

		func(r *discordgo.Role, resolvable string) bool {
			return strings.EqualFold(r.Name, resolvable)
		},

		func(r *discordgo.Role, resolvable string) bool {
			return strings.HasPrefix(strings.ToLower(r.Name), strings.ToLower(resolvable))
		},

		func(r *discordgo.Role, resolvable string) bool {
			return strings.Contains(strings.ToLower(r.Name), strings.ToLower(resolvable))
		},
	}

	MemberCheckFuncs = []func(*discordgo.Member, string) bool{

		func(r *discordgo.Member, resolvable string) bool {
			return r.User.ID == resolvable
		},

		func(r *discordgo.Member, resolvable string) bool {
			return r.User.Username == resolvable
		},

		func(r *discordgo.Member, resolvable string) bool {
			return strings.EqualFold(r.User.Username, resolvable)
		},

		func(r *discordgo.Member, resolvable string) bool {
			return strings.HasPrefix(strings.ToLower(r.User.Username), strings.ToLower(resolvable))

		},

		func(r *discordgo.Member, resolvable string) bool {
			return strings.Contains(strings.ToLower(r.User.Username), strings.ToLower(resolvable))
		},

		func(r *discordgo.Member, resolvable string) bool {
			return r.Nick == resolvable
		},

		func(r *discordgo.Member, resolvable string) bool {
			return r.Nick != "" && strings.EqualFold(r.Nick, resolvable)
		},

		func(r *discordgo.Member, resolvable string) bool {
			return r.Nick != "" && strings.HasPrefix(strings.ToLower(r.Nick), strings.ToLower(resolvable))
		},

		func(r *discordgo.Member, resolvable string) bool {
			return r.Nick != "" && strings.Contains(strings.ToLower(r.Nick), strings.ToLower(resolvable))
		},
	}

	ChannelCheckFuncs = []func(*discordgo.Channel, string) bool{

		func(r *discordgo.Channel, resolvable string) bool {
			return r.ID == resolvable
		},

		func(r *discordgo.Channel, resolvable string) bool {
			l := len(resolvable)
			return l > 3 && r.ID == resolvable[2:l-1]
		},

		func(r *discordgo.Channel, resolvable string) bool {
			return r.Name == resolvable
		},

		func(r *discordgo.Channel, resolvable string) bool {
			return strings.EqualFold(r.Name, resolvable)
		},

		func(r *discordgo.Channel, resolvable string) bool {
			return strings.HasPrefix(strings.ToLower(r.Name), strings.ToLower(resolvable))
		},

		func(r *discordgo.Channel, resolvable string) bool {
			return strings.Contains(strings.ToLower(r.Name), strings.ToLower(resolvable))
		},
	}

	GuildCheckFuncs = []func(*discordgo.Guild, string) bool{

		func(r *discordgo.Guild, resolvable string) bool {
			return r.ID == resolvable
		},

		func(r *discordgo.Guild, resolvable string) bool {
			l := len(resolvable)
			return l > 3 && r.ID == resolvable[2:l-1]
		},

		func(r *discordgo.Guild, resolvable string) bool {
			return r.Name == resolvable
		},

		func(r *discordgo.Guild, resolvable string) bool {
			return strings.EqualFold(r.Name, resolvable)
		},

		func(r *discordgo.Guild, resolvable string) bool {
			return strings.HasPrefix(strings.ToLower(r.Name), strings.ToLower(resolvable))
		},

		func(r *discordgo.Guild, resolvable string) bool {
			return strings.Contains(strings.ToLower(r.Name), strings.ToLower(resolvable))
		},
	}
)
View Source
var (
	// ErrNotFound is returned when an object could
	// not be found
	ErrNotFound = errors.New("not found")
)

Functions

func FetchChannel

func FetchChannel(s DataOutlet, guildID, resolvable string, condition ...func(*discordgo.Channel) bool) (*discordgo.Channel, error)

FetchChannel tries to fetch a channel on the specified guild by given resolvable and returns this channel, when found. You can pass a condition function which ignores the result if this functions returns false on the given object. If no object was found, ErrNotFound is returned. If any other unexpected error occurs during fetching, this error is returned as well.

func FetchMember

func FetchMember(s DataOutlet, guildID, resolvable string, condition ...func(*discordgo.Member) bool) (*discordgo.Member, error)

FetchMember tries to fetch a member on the specified guild by given resolvable and returns this member, when found. You can pass a condition function which ignores the result if this functions returns false on the given object. If no object was found, ErrNotFound is returned. If any other unexpected error occurs during fetching, this error is returned as well.

func FetchRole

func FetchRole(s DataOutlet, guildID, resolvable string, condition ...func(*discordgo.Role) bool) (*discordgo.Role, error)

FetchRole tries to fetch a role on the specified guild by given resolvable and returns this role, when found. You can pass a condition function which ignores the result if this functions returns false on the given object. If no object was found, ErrNotFound is returned. If any other unexpected error occurs during fetching, this error is returned as well.

Types

type DataOutlet

type DataOutlet interface {
	GuildRoles(guildID string, options ...discordgo.RequestOption) ([]*discordgo.Role, error)
	GuildMembers(guildID string, after string, limit int, options ...discordgo.RequestOption) (st []*discordgo.Member, err error)
	GuildChannels(guildID string, options ...discordgo.RequestOption) (st []*discordgo.Channel, err error)
}

type DgrsDataOutlet

type DgrsDataOutlet struct {
	// contains filtered or unexported fields
}

func WrapDrgs

func WrapDrgs(state *dgrs.State, forceFetch ...bool) DgrsDataOutlet

func (DgrsDataOutlet) GuildChannels

func (o DgrsDataOutlet) GuildChannels(guildID string, options ...discordgo.RequestOption) (st []*discordgo.Channel, err error)

func (DgrsDataOutlet) GuildMembers

func (o DgrsDataOutlet) GuildMembers(guildID string, _ string, _ int, options ...discordgo.RequestOption) (st []*discordgo.Member, err error)

func (DgrsDataOutlet) GuildRoles

func (o DgrsDataOutlet) GuildRoles(guildID string, options ...discordgo.RequestOption) ([]*discordgo.Role, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL