herald

package
v1.2.1-0...-60470b3 Latest Latest
Warning

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

Go to latest
Published: Sep 1, 2023 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Module = core.Module{
	Name: "Herald",
	OnInit: func() {
		if err := db.Connection.AutoMigrate(&RoleMessageEntity{}, &JoinMessageEntity{}); err != nil {
			log.Fatalf("Unable to migrate messenger entities: %v", err)
		}

		discord.Discord.AddHandler(func(s *discordgo.Session, m *discordgo.GuildMemberUpdate) {
			handleRoleAssign(s, m)
		})

		discord.Discord.AddHandler(func(s *discordgo.Session, m *discordgo.GuildMemberAdd) {
			handleJoin(s, m)
		})
	},
	OnBoot: func() {
		err := interactor.RegisterCommand(&interactor.SlashCommandGroup{
			Name:        "herald",
			Description: "Manage automated messages send by the bot",
			SubCommands: []interactor.CommandOptions{
				roleCommands,
				joinCommands,
			},
		}, &interactor.CommandPermissions{
			DefaultMemberPermissions: ptr[int64](0),
			DMPermission:             ptr(false),
		})

		if err != nil {
			log.Fatalf(err.Error())
		}

		if err := interactor.RegisterMessageComponents(
			editRoleMessageButton,
			deleteRoleMessageButton,
			roleMessageRoleSelect,
			roleMessageChannelSelect,
			editJoinMessageButton,
			deleteJoinMessageButton,
			joinMessageChannelSelect,
		); err != nil {
			log.Fatalf(err.Error())
		}

		if err := interactor.RegisterModals(
			createRoleMessageModal,
			editRoleMessageModal,
			createJoinMessageModal,
			editJoinMessageModal,
		); err != nil {
			log.Fatalf(err.Error())
		}
	},
}

Functions

This section is empty.

Types

type EditJoinMessageParams

type EditJoinMessageParams struct {
	Message string `style:"paragraph" min:"1" max:"3500"`
}

type EditRoleMessageParams

type EditRoleMessageParams struct {
	Message string `style:"paragraph" min:"1" max:"3500"`
}

type JoinMessageEntity

type JoinMessageEntity struct {
	MessageEntity `gorm:"embedded"`
}

type JoinMessageParams

type JoinMessageParams struct {
	Channel *discordgo.Channel `description:"Send message to" channels:"GuildText"`
}

type MessageEntity

type MessageEntity struct {
	ID         uint                `gorm:"primaryKey"`
	GuildID    string              `gorm:"not null;index:,unique,composite:umc"`
	GuildRef   *discord.GuildRef   `gorm:"foreignKey:GuildID"`
	ChannelID  *string             `gorm:"index:,unique,composite:umc"`
	ChannelRef *discord.ChannelRef `gorm:"foreignKey:ChannelID"`
	Content    string              `gorm:"not null"`

	CreatedAt time.Time
	UpdatedAt time.Time
}

type RoleMessageEntity

type RoleMessageEntity struct {
	MessageEntity `gorm:"embedded"`

	RoleID  string          `gorm:"not null;index:,unique,composite:umc"`
	RoleRef discord.RoleRef `gorm:"foreignKey:RoleID"`
}

type RoleMessageParams

type RoleMessageParams struct {
	Role    *discordgo.Role    `description:"Trigger on assignment of" required:"true"`
	Channel *discordgo.Channel `description:"Send message to" channels:"GuildText"`
}

Jump to

Keyboard shortcuts

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