cmdExec fillter

master
dustoair 3 years ago
parent 01c074e0be
commit e57637c677

@ -8,4 +8,9 @@ var CMDList = []string{
"last",
"删除图片",
"删除文本",
"eth",
"btc",
"虚拟货币",
"gold",
"黄金",
}

@ -6,6 +6,7 @@ import (
"github.com/jinzhu/gorm"
)
// 单例模式
var (
CTX = context.Background()
RedisDb *redis.Client
@ -15,3 +16,15 @@ var (
EnableAiReply = true
EnableCmdExec = true
)
// 微信变量
var (
WxCrypt *WXBizMsgCrypt
WechatCorpId string
WechatToken string //微信回调的token
WechatEncodingAesKey string
WechatSendSecret string
WechatSendAid string
WechatAccessToken string //主动发消息的token
WechatImagePath string
)

@ -1,12 +0,0 @@
package global
var (
WxCrypt *WXBizMsgCrypt
WechatCorpId string
WechatToken string //微信回调的token
WechatEncodingAesKey string
WechatSendSecret string
WechatSendAid string
WechatAccessToken string //主动发消息的token
WechatImagePath string
)

@ -9,46 +9,90 @@ import (
"net/http"
)
// cmdExec 根据白名单命令来执行
func cmdExec(msgContent MsgContent) (cmdString string) {
switch msgContent.Content {
case "last":
cmdString = global.HistoryCmds[len(global.HistoryCmds)-1]
case "history":
cmdString = utils.SlicePrint(global.HistoryCmds)
case "删除图片":
//通过文本消息删除上一张图片
lastImg := GetLastWechatLog(msgContent.FromUsername, "image")
err := utils.DeleteFile(lastImg.Content)
if err != nil {
log.Println("删除图片失败: ", lastImg.Content)
return
} else {
log.Println("图片已删除: ", lastImg.Content)
return
}
case "删除文本":
//通过文本消息删除上一条文本消息
lastText := GetLastWechatLog(msgContent.FromUsername, "text")
textMd5 := utils.Md5String(lastText.Content)
go RecordWechatBlockWords(lastText.Content, textMd5, msgContent.FromUsername)
return
case "eth", "btc", "虚拟货币":
cmdString = "cmdString"
case "gold", "黄金":
cmdString = "cmdString"
default:
cmdString = msgContent.Content
}
global.HistoryCmds = append(global.HistoryCmds, msgContent.Content)
replyContent, err := utils.CMDShellTrick(cmdString)
if err != nil {
replyContent = "/:,@!执行失败:\n" + msgContent.Content
} else {
replyContent = "/::D执行成功\n" + replyContent
//aiAnswer = "执行命令:" + msgContent.Content
}
return cmdString
}
func replyText(msgContent MsgContent, timestamp, nonce string, w http.ResponseWriter) {
var replyContent string
if global.EnableCmdExec && utils.SliceContain(global.CMDList, msgContent.Content) && msgContent.FromUsername == "QiaoYang" {
//开启了命令执行功能,并且消息内容包含了命令
log.Println("收到命令消息")
var cmdString string
if msgContent.Content == "last" {
cmdString = global.HistoryCmds[len(global.HistoryCmds)-1]
} else if msgContent.Content == "history" {
cmdString = utils.SlicePrint(global.HistoryCmds)
} else if msgContent.Content == "删除图片" {
//通过文本消息删除上一张图片
lastImg := GetLastWechatLog(msgContent.FromUsername, "image")
err := utils.DeleteFile(lastImg.Content)
if err != nil {
log.Println("删除图片失败: ", lastImg.Content)
return
} else {
log.Println("图片已删除: ", lastImg.Content)
return
}
} else if msgContent.Content == "删除文本" {
//通过文本消息删除上一条文本消息
lastText := GetLastWechatLog(msgContent.FromUsername, "text")
textMd5 := utils.Md5String(lastText.Content)
go RecordWechatBlockWords(lastText.Content, textMd5, msgContent.FromUsername)
return
} else {
cmdString = msgContent.Content
}
global.HistoryCmds = append(global.HistoryCmds, msgContent.Content)
replyContent, err := utils.CMDShellTrick(cmdString)
if err != nil {
replyContent = "/:,@!执行失败:\n" + msgContent.Content
} else {
replyContent = "/::D执行成功\n" + replyContent
//aiAnswer = "执行命令:" + msgContent.Content
}
cmdExec(msgContent)
//cmdString := cmdExec(msgContent)
//var cmdString string
//if msgContent.Content == "last" {
// cmdString = global.HistoryCmds[len(global.HistoryCmds)-1]
//} else if msgContent.Content == "history" {
// cmdString = utils.SlicePrint(global.HistoryCmds)
//} else if msgContent.Content == "删除图片" {
// //通过文本消息删除上一张图片
// lastImg := GetLastWechatLog(msgContent.FromUsername, "image")
// err := utils.DeleteFile(lastImg.Content)
// if err != nil {
// log.Println("删除图片失败: ", lastImg.Content)
// return
// } else {
// log.Println("图片已删除: ", lastImg.Content)
// return
// }
//
//} else if msgContent.Content == "删除文本" {
// //通过文本消息删除上一条文本消息
// lastText := GetLastWechatLog(msgContent.FromUsername, "text")
// textMd5 := utils.Md5String(lastText.Content)
// go RecordWechatBlockWords(lastText.Content, textMd5, msgContent.FromUsername)
// return
//
//} else {
// cmdString = msgContent.Content
//}
//global.HistoryCmds = append(global.HistoryCmds, msgContent.Content)
//replyContent, err := utils.CMDShellTrick(cmdString)
//if err != nil {
// replyContent = "/:,@!执行失败:\n" + msgContent.Content
//} else {
// replyContent = "/::D执行成功\n" + replyContent
// //aiAnswer = "执行命令:" + msgContent.Content
//}
} else {
var replyContentAi string
if _, ok := global.EmojMap[msgContent.Content]; ok {

Loading…
Cancel
Save