102 lines
2.3 KiB
Go
102 lines
2.3 KiB
Go
// 命令处理相关
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
// 错误命令信息
|
|
const handleErrMsg = "请输入正确的命令,输入 help 查看全部命令的解释"
|
|
|
|
// 帮助信息
|
|
const helpMsg = `listlive:列出正在直播的主播
|
|
listdanmu:列出正在录制直播弹幕的主播
|
|
listrecord:列出正在录制直播视频的主播
|
|
adddanmu uid:添加指定主播到录制列表(弹幕和录播都开启),uid 在主播的网页版个人主页查看
|
|
deldanmu uid:将指定主播移出录制列表
|
|
addrecord uid:开启指定主播的直播视频录制
|
|
delrecord uid:关闭指定主播的直播视频录制
|
|
startdanmu uid:临时录制指定主播的直播弹幕
|
|
stopdanmu uid:停止录制指定主播的直播弹幕
|
|
startrecord uid:临时录制指定主播的直播视频
|
|
stoprecord uid:停止录制指定主播的直播视频
|
|
quit:退出本程序,退出需要等待半分钟左右
|
|
help:输出本帮助信息`
|
|
|
|
var uidBoolDispatch = map[string]func(int) bool{
|
|
"adddanmu": addUID,
|
|
"deldanmu": removeUID,
|
|
"startdanmu": startDanmu,
|
|
"stopdanmu": stopDanmu,
|
|
"startrecord": startRecord,
|
|
"stoprecord": stopRecord,
|
|
"addrecord": func(uid int) bool { return setRecordFlag(uid, true) },
|
|
"delrecord": func(uid int) bool { return setRecordFlag(uid, false) },
|
|
}
|
|
|
|
var listDispatch = map[string]func(){
|
|
"listlive": listLive,
|
|
"listdanmu": listDanmu,
|
|
"listrecord": listRecord,
|
|
}
|
|
|
|
// 处理单个命令
|
|
func handleCmd(cmd string) bool {
|
|
if d, ok := listDispatch[cmd]; ok {
|
|
d()
|
|
return true
|
|
}
|
|
|
|
switch cmd {
|
|
case "quit":
|
|
quitRun()
|
|
return true
|
|
default:
|
|
lPrintErr("错误的命令:" + cmd)
|
|
printErr()
|
|
return false
|
|
}
|
|
}
|
|
|
|
// 处理 "命令 UID"
|
|
func handleCmdUID(cmd string, uid int) bool {
|
|
if d, ok := uidBoolDispatch[cmd]; ok {
|
|
return d(uid)
|
|
}
|
|
|
|
lPrintErr("错误的命令:"+cmd, uid)
|
|
printErr()
|
|
return false
|
|
}
|
|
|
|
// 打印错误命令信息
|
|
func printErr() {
|
|
lPrintWarn(handleErrMsg)
|
|
}
|
|
|
|
// 处理所有命令
|
|
func handleAllCmd(text string) bool {
|
|
cmd := strings.Fields(text)
|
|
switch len(cmd) {
|
|
case 1:
|
|
switch cmd[0] {
|
|
case "help":
|
|
fmt.Println(helpMsg)
|
|
return true
|
|
default:
|
|
return handleCmd(cmd[0])
|
|
}
|
|
case 2:
|
|
if uid, err := strconv.ParseUint(cmd[1], 10, 64); err == nil {
|
|
return handleCmdUID(cmd[0], int(uid))
|
|
}
|
|
printErr()
|
|
return false
|
|
default:
|
|
printErr()
|
|
return false
|
|
}
|
|
}
|