streaming

package
v2.41.1 Latest Latest
Warning

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

Go to latest
Published: Jul 17, 2024 License: MIT Imports: 27 Imported by: 0

README

Streaming

Extends the built-in streaming status in Discord with some extra utility features.

Redis layout:

Key Type Value
streaming_config:{{guildID}} Json encoded string The config for this server
currenly_streaming:{{guildID}} Set of user ID's Holds all the people yagpdb has currenly found streaming in this guild

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultConfig = &Config{
	Enabled:         false,
	AnnounceMessage: "OH WOWIE! **{{.User.Username}}** is currently streaming! Check it out: {{.URL}}",
}
View Source
var PageHTML string

Functions

func CheckGuildFull

func CheckGuildFull(gs *dstate.GuildSet, fetchMembers bool)

func CheckPresence

func CheckPresence(client radix.Client, config *Config, ms *dstate.MemberState, gs *dstate.GuildSet) error

func CheckPresenceSparse

func CheckPresenceSparse(client radix.Client, config *Config, p *discordgo.Presence, gs *dstate.GuildSet) error

func DisableStreamingRole

func DisableStreamingRole(guildID int64)

func GiveStreamingRole

func GiveStreamingRole(guildID, memberID, streamingRole int64, currentUserRoles []int64)

func HandleGuildCreate

func HandleGuildCreate(evt *eventsystem.EventData)

func HandleGuildMemberUpdate

func HandleGuildMemberUpdate(evt *eventsystem.EventData) (retry bool, err error)

func HandlePostStreaming

func HandlePostStreaming(w http.ResponseWriter, r *http.Request) interface{}

func HandlePresenceUpdate

func HandlePresenceUpdate(evt *eventsystem.EventData) (retry bool, err error)

func HandleUpdateStreaming

func HandleUpdateStreaming(event *pubsub.Event)

YAGPDB event

func KeyCurrentlyStreaming

func KeyCurrentlyStreaming(gID int64) string

func RegisterPlugin

func RegisterPlugin()

func RemoveStreaming

func RemoveStreaming(client radix.Client, config *Config, guildID int64, memberID int64, currentRoles []int64)

func RemoveStreamingRole

func RemoveStreamingRole(guildID, memberID int64, streamingRole int64, currentRoles []int64)

func RemoveStreamingSparse

func RemoveStreamingSparse(client radix.Client, config *Config, guildID int64, memberID int64)

func SendStreamingAnnouncement

func SendStreamingAnnouncement(config *Config, guild *dstate.GuildSet, ms *dstate.MemberState, url string, gameName string, streamTitle string, streamPlatform string)

Types

type ConextKey

type ConextKey int
const (
	ConextKeyConfig ConextKey = iota
)

type Config

type Config struct {
	Enabled bool `json:"enabled" schema:"enabled"` // Wether streaming notifications is enabled or not

	// Give a role to people streaming
	GiveRole int64 `json:"give_role,string" schema:"give_role" valid:"role,true"`
	// Ignores people with this role, requirerole is ignored if this is set
	IgnoreRole int64 `json:"ban_role,string" schema:"ignore_role" valid:"role,true"`
	// Requires people to have this role
	RequireRole int64 `json:"require_role,string" schema:"require_role" valid:"role,true"`

	// Channel to send streaming announcements in
	AnnounceChannel int64 `json:"announce_channel,string" schema:"announce_channel" valid:"channel,true"`
	// The message
	AnnounceMessage string `json:"announce_message" schema:"announce_message" valid:"template,2000"`

	// Match the game name or title against these to filter users out
	GameRegex  string `json:"game_regex" schema:"game_regex" valid:"regex,2000"`
	TitleRegex string `json:"title_regex" schema:"title_regex" valid:"regex,2000"`
}

func BotCachedGetConfig

func BotCachedGetConfig(guildID int64) (*Config, error)

func GetConfig

func GetConfig(guildID int64) (*Config, error)

Returns he guild's conifg, or the defaul one if not set

func (*Config) MeetsRequirements

func (config *Config) MeetsRequirements(roles []int64, activityState, activityDetails string) bool

func (*Config) Save

func (c *Config) Save(guildID int64) error

func (*Config) UnmarshalJSON

func (c *Config) UnmarshalJSON(b []byte) error

type LegacyConfig

type LegacyConfig struct {
	Enabled bool `json:"enabled" schema:"enabled"` // Wether streaming notifications is enabled or not

	// Give a role to people streaming
	GiveRole string `json:"give_role" schema:"give_role" valid:"role,true"`
	// Ignores people with this role, requirerole is ignored if this is set
	IgnoreRole string `json:"ban_role" schema:"ignore_role" valid:"role,true"`
	// Requires people to have this role
	RequireRole string `json:"require_role" schema:"require_role" valid:"role,true"`

	// Channel to send streaming announcements in
	AnnounceChannel string `json:"announce_channel" schema:"announce_channel" valid:"channel,true"`
	// The message
	AnnounceMessage string `json:"announce_message" schema:"announce_message" valid:"template,2000"`

	// Match the game name or title against these to filter users out
	GameRegex  string `json:"game_regex" schema:"game_regex" valid:"regex,2000"`
	TitleRegex string `json:"title_regex" schema:"title_regex" valid:"regex,2000"`
}

type Plugin

type Plugin struct{}

func (*Plugin) AllFeatureFlags

func (p *Plugin) AllFeatureFlags() []string

func (*Plugin) BotInit

func (p *Plugin) BotInit()

func (*Plugin) InitWeb

func (p *Plugin) InitWeb()

func (*Plugin) LoadServerHomeWidget

func (p *Plugin) LoadServerHomeWidget(w http.ResponseWriter, r *http.Request) (web.TemplateData, error)

func (*Plugin) PluginInfo

func (p *Plugin) PluginInfo() *common.PluginInfo

func (*Plugin) UpdateFeatureFlags

func (p *Plugin) UpdateFeatureFlags(guildID int64) ([]string, error)

Jump to

Keyboard shortcuts

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