events

package
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: Apr 13, 2024 License: GPL-3.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var AwardsAddHandler = &framework.EventListener{
	Name: "Award Add",
	HandlerConstructor: func(h *framework.Hanamaru) interface{} {
		return func(s *discordgo.Session, r *discordgo.MessageReactionAdd) {
			award := AwardType(r.Emoji.Name)
			m, _ := s.ChannelMessage(r.ChannelID, r.MessageID)
			if name, err := award.Name(); err == nil {
				hdb.MutateAwardCount(h.Db, r.GuildID, m.Author.ID, name, hdb.AwardIncrement)
			}
		}
	},
}
View Source
var AwardsRemoveHandler = &framework.EventListener{
	Name: "Award Remove",
	HandlerConstructor: func(h *framework.Hanamaru) interface{} {
		return func(s *discordgo.Session, r *discordgo.MessageReactionRemove) {
			award := AwardType(r.Emoji.Name)
			m, _ := s.ChannelMessage(r.ChannelID, r.MessageID)
			if name, err := award.Name(); err == nil {
				hdb.MutateAwardCount(h.Db, r.GuildID, m.Author.ID, name, hdb.AwardDecrement)
			}
		}
	},
}
View Source
var BigEmoji = &framework.EventListener{
	Name: "BigEmoji",
	HandlerConstructor: func(h *framework.Hanamaru) interface{} {
		return func(s *discordgo.Session, m *discordgo.MessageCreate) {
			if m.Author.Bot {
				return
			}
			emojis := util.ParseEmojis(m.Content)
			if len(emojis) == 1 && isSingleEmoji(m.Content) {
				s.ChannelMessageSendEmbed(m.ChannelID, constructEmojiEmbed(emojis[0], m.Author))
				s.ChannelMessageDelete(m.ChannelID, m.Message.ID)
			}
		}
	},
}
View Source
var (
	ErrInvalidAwardType = errors.New("invalid award type")
)
View Source
var Nhentai = &framework.EventListener{
	Name: "NHentai",
	HandlerConstructor: func(h *framework.Hanamaru) interface{} {
		return func(s *discordgo.Session, m *discordgo.MessageCreate) {
			content := m.Content
			if m.Author.Bot || len(m.Mentions) > 0 {
				return
			}
			if strings.HasPrefix(m.Content, h.Prefix) {
				return
			}
			if channel, _ := s.Channel(m.ChannelID); channel != nil && !channel.NSFW {
				return
			}
			content = strings.TrimSpace(content)
			matches, err := ParseStringWithSixDigits(content)
			if err != nil {
				return
			}

			for _, match := range matches {
				n, err := util.ParseNhentai(match)
				if err != nil {
					s.ChannelMessageSend(m.ChannelID, strconv.Itoa(match)+": Not Found")
				}
				_, err = s.ChannelMessageSendEmbed(m.ChannelID, ConstructEmbed(n))
				if err != nil {
					s.ChannelMessageSend(m.ChannelID, err.Error())
				}
			}
		}
	},
}
View Source
var ReactionExpansion = &framework.EventListener{
	Name: "Reaction Expansion",
	HandlerConstructor: func(h *framework.Hanamaru) interface{} {
		return func(s *discordgo.Session, r *discordgo.MessageReactionAdd) {
			if expansion, ok := expansionMap[r.Emoji.Name]; ok {
				s.MessageReactionRemove(r.ChannelID, r.MessageID, r.Emoji.APIName(), r.UserID)

				for _, emojiId := range expansion {
					s.MessageReactionAdd(r.ChannelID, r.MessageID, emojiId)
				}
			}
		}
	},
}
View Source
var Roboragi = &framework.EventListener{
	Name: "Roboragi",
	HandlerConstructor: func(h *framework.Hanamaru) interface{} {
		return func(s *discordgo.Session, m *discordgo.MessageCreate) {
			if m.Author.Bot {
				return
			}
			if strings.HasPrefix(m.Content, h.Prefix) {
				return
			}
			for _, regex := range regexes {
				if matches := regex.FindAllStringSubmatch(m.Content, -1); len(matches) > 0 {
					var err error
					var media util.ALMedia
					if regex == animeRegex {
						media, err = util.GetAnimeInfoFromTitle(matches[0][1])
					}
					if regex == mangaRegex {
						media, err = util.GetMangaInfoFromTitle(matches[0][1])
					}
					if err != nil {
						return
					}
					_, err = s.ChannelMessageSendEmbed(m.ChannelID, roboragiEmbed(media))
					if err != nil {
						s.ChannelMessageSend(m.ChannelID, err.Error())
						return
					}
					return
				}
			}
		}
	},
}

Functions

func ConstructEmbed

func ConstructEmbed(n util.NHentai) *discordgo.MessageEmbed

func ParseStringWithSixDigits

func ParseStringWithSixDigits(msg string) ([]int, error)

Types

type AwardType

type AwardType string

func (AwardType) IsValid

func (a AwardType) IsValid() bool

func (AwardType) MustName

func (a AwardType) MustName() string

func (AwardType) Name

func (a AwardType) Name() (string, error)

Jump to

Keyboard shortcuts

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