Files
trbot/plugins/plugin_unpin_channel_message.go
2025-08-22 12:26:20 +08:00

74 lines
2.2 KiB
Go

package plugins
import (
"trbot/utils"
"trbot/utils/configs"
"trbot/utils/flaterr"
"trbot/utils/handler_params"
"trbot/utils/plugin_utils"
"trbot/utils/type/message_utils"
"github.com/go-telegram/bot"
"github.com/go-telegram/bot/models"
"github.com/rs/zerolog"
)
type unpinChatIDs struct {
ID int64 `yaml:"ID"`
Type models.ChatType `yaml:"Type"`
IsEnable bool `yaml:"IsEnable,omitempty"`
FailedIDs []int `yaml:"FailedIDs,omitempty"`
}
func init() {
plugin_utils.AddHandlerByMessageTypeHandlers(plugin_utils.ByMessageTypeHandler{
PluginName: "unpin_channel_message",
ChatType: models.ChatTypeSupergroup,
MessageType: message_utils.PinnedMessage,
})
}
func unPinMessageCommandHandler(opts *handler_params.Message) error {
logger := zerolog.Ctx(opts.Ctx).With().
Str("pluginName", "unPinChannelMessage").
Str(utils.GetCurrentFuncName()).
Logger()
var handlerErr flaterr.MultErr
if opts.Message.Chat.Type == models.ChatTypePrivate {
_, err := opts.Thebot.SendMessage(opts.Ctx, &bot.SendMessageParams{
ChatID: opts.Message.Chat.ID,
Text: "自动取消置顶消息的功能仅在群组中可用",
ReplyParameters: &models.ReplyParameters{ MessageID: opts.Message.ID },
})
if err != nil {
logger.Error().
Err(err).
Str("content", "not allow in private chat").
Msg(flaterr.SendMessage.Fmt())
handlerErr.Addt(flaterr.SendMessage, "not allow in private chat", err)
}
} else {
if utils.UserIsAdmin(opts.Ctx, opts.Thebot, opts.Message.Chat.ID, opts.Message.From.ID) {
if utils.UserIsAdmin(opts.Ctx, opts.Thebot, opts.Message.Chat.ID, configs.BotMe.ID) {
}
} else {
_, err := opts.Thebot.SendMessage(opts.Ctx, &bot.SendMessageParams{
ChatID: opts.Message.Chat.ID,
Text: "只有管理员才能为群组更改此功能",
ReplyParameters: &models.ReplyParameters{ MessageID: opts.Message.ID },
})
if err != nil {
logger.Error().
Err(err).
Str("content", "no permission to change this feature flag").
Msg(flaterr.SendMessage.Fmt())
handlerErr.Addt(flaterr.SendMessage, "no permission to change this feature flag", err)
}
}
}
return handlerErr.Flat()
}