cmdExec fillter

master
dustoair 3 years ago
parent 01c074e0be
commit e57637c677

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

@ -6,6 +6,7 @@ import (
"github.com/jinzhu/gorm" "github.com/jinzhu/gorm"
) )
// 单例模式
var ( var (
CTX = context.Background() CTX = context.Background()
RedisDb *redis.Client RedisDb *redis.Client
@ -15,3 +16,15 @@ var (
EnableAiReply = true EnableAiReply = true
EnableCmdExec = 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" "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) { func replyText(msgContent MsgContent, timestamp, nonce string, w http.ResponseWriter) {
var replyContent string var replyContent string
if global.EnableCmdExec && utils.SliceContain(global.CMDList, msgContent.Content) && msgContent.FromUsername == "QiaoYang" { if global.EnableCmdExec && utils.SliceContain(global.CMDList, msgContent.Content) && msgContent.FromUsername == "QiaoYang" {
//开启了命令执行功能,并且消息内容包含了命令 //开启了命令执行功能,并且消息内容包含了命令
log.Println("收到命令消息") log.Println("收到命令消息")
var cmdString string cmdExec(msgContent)
if msgContent.Content == "last" { //cmdString := cmdExec(msgContent)
cmdString = global.HistoryCmds[len(global.HistoryCmds)-1] //var cmdString string
} else if msgContent.Content == "history" { //if msgContent.Content == "last" {
cmdString = utils.SlicePrint(global.HistoryCmds) // cmdString = global.HistoryCmds[len(global.HistoryCmds)-1]
} else if msgContent.Content == "删除图片" { //} else if msgContent.Content == "history" {
//通过文本消息删除上一张图片 // cmdString = utils.SlicePrint(global.HistoryCmds)
lastImg := GetLastWechatLog(msgContent.FromUsername, "image") //} else if msgContent.Content == "删除图片" {
err := utils.DeleteFile(lastImg.Content) // //通过文本消息删除上一张图片
if err != nil { // lastImg := GetLastWechatLog(msgContent.FromUsername, "image")
log.Println("删除图片失败: ", lastImg.Content) // err := utils.DeleteFile(lastImg.Content)
return // if err != nil {
} else { // log.Println("删除图片失败: ", lastImg.Content)
log.Println("图片已删除: ", lastImg.Content) // return
return // } else {
} // log.Println("图片已删除: ", lastImg.Content)
// return
} else if msgContent.Content == "删除文本" { // }
//通过文本消息删除上一条文本消息 //
lastText := GetLastWechatLog(msgContent.FromUsername, "text") //} else if msgContent.Content == "删除文本" {
textMd5 := utils.Md5String(lastText.Content) // //通过文本消息删除上一条文本消息
go RecordWechatBlockWords(lastText.Content, textMd5, msgContent.FromUsername) // lastText := GetLastWechatLog(msgContent.FromUsername, "text")
return // textMd5 := utils.Md5String(lastText.Content)
// go RecordWechatBlockWords(lastText.Content, textMd5, msgContent.FromUsername)
} else { // return
cmdString = msgContent.Content //
} //} else {
global.HistoryCmds = append(global.HistoryCmds, msgContent.Content) // cmdString = msgContent.Content
replyContent, err := utils.CMDShellTrick(cmdString) //}
if err != nil { //global.HistoryCmds = append(global.HistoryCmds, msgContent.Content)
replyContent = "/:,@!执行失败:\n" + msgContent.Content //replyContent, err := utils.CMDShellTrick(cmdString)
} else { //if err != nil {
replyContent = "/::D执行成功\n" + replyContent // replyContent = "/:,@!执行失败:\n" + msgContent.Content
//aiAnswer = "执行命令:" + msgContent.Content //} else {
} // replyContent = "/::D执行成功\n" + replyContent
// //aiAnswer = "执行命令:" + msgContent.Content
//}
} else { } else {
var replyContentAi string var replyContentAi string
if _, ok := global.EmojMap[msgContent.Content]; ok { if _, ok := global.EmojMap[msgContent.Content]; ok {

Loading…
Cancel
Save