63 lines
2.3 KiB
Go
63 lines
2.3 KiB
Go
package plugin_utils
|
|
|
|
import (
|
|
"trbot/utils/handler_params"
|
|
|
|
"github.com/go-telegram/bot/models"
|
|
)
|
|
|
|
type SlashStartCommand struct {
|
|
Handler []SlashStartHandler // 例如 /start subcommand
|
|
WithPrefixHandler []SlashStartPrefixHandler // 例如 /start subcommand_augument
|
|
}
|
|
|
|
// SlashStartHandler needs to match `argument_sometext` exactly in `/start argument_sometext` string
|
|
//
|
|
// If you need to match by prefix, register it as `SlashStartPrefixHandler` to get some parameters
|
|
type SlashStartHandler struct {
|
|
Name string
|
|
Argument string
|
|
ForChatType []models.ChatType // default for private, group, supergroup
|
|
MessageHandler func(*handler_params.Message) error
|
|
}
|
|
|
|
func AddSlashStartCommandHandlers(handlers ...SlashStartHandler) int {
|
|
if AllPlugins.SlashStartCommand.Handler == nil { AllPlugins.SlashStartCommand.Handler = []SlashStartHandler{} }
|
|
|
|
var handlerCount int
|
|
for _, handler := range handlers {
|
|
if handler.Argument == "" { continue }
|
|
if handler.ForChatType == nil {
|
|
handler.ForChatType = []models.ChatType{models.ChatTypePrivate, models.ChatTypeGroup, models.ChatTypeSupergroup}
|
|
}
|
|
AllPlugins.SlashStartCommand.Handler = append(AllPlugins.SlashStartCommand.Handler, handler)
|
|
handlerCount++
|
|
}
|
|
return handlerCount
|
|
}
|
|
|
|
// SlashStartPrefixHandler uses the prefix to match the `argument` in the `/start argument_sometext` string
|
|
//
|
|
// If you need to match the `argument_sometext` in the string exactly, register it as `SlashStartHandler`
|
|
type SlashStartPrefixHandler struct {
|
|
Name string
|
|
PrefixArgument string
|
|
ForChatType []models.ChatType // default for private, group, supergroup
|
|
MessageHandler func(*handler_params.Message) error
|
|
}
|
|
|
|
func AddSlashStartPrefixCommandHandlers(handlers ...SlashStartPrefixHandler) int {
|
|
if AllPlugins.SlashStartCommand.WithPrefixHandler == nil { AllPlugins.SlashStartCommand.WithPrefixHandler = []SlashStartPrefixHandler{} }
|
|
|
|
var handlerCount int
|
|
for _, handler := range handlers {
|
|
if handler.PrefixArgument == "" { continue }
|
|
if handler.ForChatType == nil {
|
|
handler.ForChatType = []models.ChatType{models.ChatTypePrivate, models.ChatTypeGroup, models.ChatTypeSupergroup}
|
|
}
|
|
AllPlugins.SlashStartCommand.WithPrefixHandler = append(AllPlugins.SlashStartCommand.WithPrefixHandler, handler)
|
|
handlerCount++
|
|
}
|
|
return handlerCount
|
|
}
|