mirror of
https://github.com/AynaLivePlayer/AynaLivePlayer.git
synced 2025-12-06 18:32:50 +08:00
128 lines
3.1 KiB
Go
128 lines
3.1 KiB
Go
package qiege
|
|
|
|
import (
|
|
"AynaLivePlayer/core/events"
|
|
"AynaLivePlayer/global"
|
|
"AynaLivePlayer/gui"
|
|
"AynaLivePlayer/gui/component"
|
|
"AynaLivePlayer/pkg/config"
|
|
"AynaLivePlayer/pkg/event"
|
|
"AynaLivePlayer/pkg/i18n"
|
|
"AynaLivePlayer/pkg/logger"
|
|
"fyne.io/fyne/v2"
|
|
"fyne.io/fyne/v2/container"
|
|
"fyne.io/fyne/v2/data/binding"
|
|
"fyne.io/fyne/v2/widget"
|
|
"strings"
|
|
)
|
|
|
|
type Qiege struct {
|
|
config.BaseConfig
|
|
UserPermission bool
|
|
PrivilegePermission bool
|
|
AdminPermission bool
|
|
CustomCMD string
|
|
currentUid string
|
|
panel fyne.CanvasObject
|
|
log logger.ILogger
|
|
}
|
|
|
|
func NewQiege() *Qiege {
|
|
return &Qiege{
|
|
UserPermission: true,
|
|
PrivilegePermission: true,
|
|
AdminPermission: true,
|
|
CustomCMD: "切歌",
|
|
log: global.Logger.WithPrefix("plugin.qiege"),
|
|
}
|
|
}
|
|
|
|
func (d *Qiege) Name() string {
|
|
return "Qiege"
|
|
}
|
|
|
|
func (d *Qiege) Enable() error {
|
|
config.LoadConfig(d)
|
|
gui.AddConfigLayout(d)
|
|
global.EventManager.RegisterA(
|
|
events.LiveRoomMessageReceive,
|
|
"plugin.qiege.message",
|
|
d.handleMessage)
|
|
global.EventManager.RegisterA(
|
|
events.PlayerPlayingUpdate,
|
|
"plugin.qiege.playing",
|
|
func(event *event.Event) {
|
|
data := event.Data.(events.PlayerPlayingUpdateEvent)
|
|
if data.Removed {
|
|
d.currentUid = ""
|
|
}
|
|
if !data.Media.IsLiveRoomUser() {
|
|
d.currentUid = ""
|
|
}
|
|
d.currentUid = data.Media.DanmuUser().Uid
|
|
})
|
|
return nil
|
|
}
|
|
|
|
func (d *Qiege) Disable() error {
|
|
return nil
|
|
}
|
|
|
|
func (d *Qiege) handleMessage(event *event.Event) {
|
|
message := event.Data.(events.LiveRoomMessageReceiveEvent).Message
|
|
msgs := strings.Split(message.Message, " ")
|
|
if len(msgs) < 1 || msgs[0] != d.CustomCMD {
|
|
return
|
|
}
|
|
d.log.Infof("recieve diange command")
|
|
if d.UserPermission {
|
|
if d.currentUid == message.User.Uid {
|
|
global.EventManager.CallA(
|
|
events.PlayerPlayNextCmd,
|
|
events.PlayerPlayNextCmdEvent{})
|
|
return
|
|
}
|
|
}
|
|
if d.PrivilegePermission && message.User.Privilege > 0 {
|
|
global.EventManager.CallA(
|
|
events.PlayerPlayNextCmd,
|
|
events.PlayerPlayNextCmdEvent{})
|
|
return
|
|
}
|
|
if d.AdminPermission && message.User.Admin {
|
|
global.EventManager.CallA(
|
|
events.PlayerPlayNextCmd,
|
|
events.PlayerPlayNextCmdEvent{})
|
|
return
|
|
}
|
|
}
|
|
|
|
func (d *Qiege) Title() string {
|
|
return i18n.T("plugin.qiege.title")
|
|
}
|
|
|
|
func (d *Qiege) Description() string {
|
|
return i18n.T("plugin.qiege.description")
|
|
}
|
|
|
|
func (d *Qiege) CreatePanel() fyne.CanvasObject {
|
|
if d.panel != nil {
|
|
return d.panel
|
|
}
|
|
dgPerm := container.NewHBox(
|
|
widget.NewLabel(i18n.T("plugin.qiege.permission")),
|
|
component.NewCheckOneWayBinding(
|
|
i18n.T("plugin.qiege.user"), &d.UserPermission, d.UserPermission),
|
|
component.NewCheckOneWayBinding(
|
|
i18n.T("plugin.qiege.privilege"), &d.PrivilegePermission, d.PrivilegePermission),
|
|
component.NewCheckOneWayBinding(
|
|
i18n.T("plugin.qiege.admin"), &d.AdminPermission, d.AdminPermission),
|
|
)
|
|
qgShortCut := container.NewBorder(nil, nil,
|
|
widget.NewLabel(i18n.T("plugin.qiege.custom_cmd")), nil,
|
|
widget.NewEntryWithData(binding.BindString(&d.CustomCMD)),
|
|
)
|
|
d.panel = container.NewVBox(dgPerm, qgShortCut)
|
|
return d.panel
|
|
}
|