Skip to content

Commit

Permalink
完成多SNS封装
Browse files Browse the repository at this point in the history
  • Loading branch information
nyancatda committed Nov 4, 2021
1 parent c7b5308 commit c3e756b
Show file tree
Hide file tree
Showing 7 changed files with 83 additions and 74 deletions.
6 changes: 3 additions & 3 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import (
"xyz.nyan/MediaWiki-Bot/src/MessageProcessingAPI/SNSAPI/QQAPI"
"xyz.nyan/MediaWiki-Bot/src/Struct"
"xyz.nyan/MediaWiki-Bot/src/utils"
"xyz.nyan/MediaWiki-Bot/src/utils/ReleaseFile"
"xyz.nyan/MediaWiki-Bot/src/utils/Language"
"xyz.nyan/MediaWiki-Bot/src/utils/ReleaseFile"
)

func Error() {
Expand Down Expand Up @@ -62,13 +62,13 @@ func main() {
Port := Config.Run.WebHookPort
fmt.Println(Language.StringVariable(1, Language.Message("").RunOK, Port, ""))
r.POST("/", func(c *gin.Context) {
var json Struct.QQWebHook_root
var json Struct.WebHookJson
if err := c.ShouldBindJSON(&json); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
fmt.Println(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
InformationProcessing.QQMessageProcessing(json)
InformationProcessing.InformationProcessing(json)
})
r.Run(":" + Port)
}
40 changes: 3 additions & 37 deletions src/InformationProcessing/InformationProcessing.go
Original file line number Diff line number Diff line change
@@ -1,43 +1,9 @@
package InformationProcessing

import (
"strings"

"xyz.nyan/MediaWiki-Bot/src/Struct"
"xyz.nyan/MediaWiki-Bot/src/utils"
)

//命令处理,判断命令是否匹配,匹配则输出命令和命令参数
func CommandExtraction(SNSName string, QQjson Struct.QQWebHook_root, text string) (bool, string, string) {
if find := strings.Contains(text, ":"); find {
Config := utils.ReadConfig()
var ConfigWikiName string
for one := range Config.Wiki.([]interface{}) {
ConfigWikiName = Config.Wiki.([]interface{})[one].(map[interface{}]interface{})["WikiName"].(string)
if find := strings.Contains(text, ConfigWikiName); find {
countSplit := strings.SplitN(text, ":", 2)
Command := countSplit[0]
Text := countSplit[1]
return true, Text, Command
}
}
} else if find := strings.Contains(text, "[["); find {
if find := strings.Contains(text, "]]"); find {
//获取主Wiki名字
Config := utils.ReadConfig()
MainWikiName := Config.Wiki.([]interface{})[0].(map[interface{}]interface{})["WikiName"].(string)

trimStr := strings.Trim(text, "[")
Text := strings.Trim(trimStr, "]")
return true, Text, MainWikiName
}
} else if find := strings.Contains(text, "/"); find {
switch SNSName {
case "QQ":
QQSettingsMessageProcessing(QQjson)
}
return false, "", "/"
}

return false, "", ""
}
func InformationProcessing(json Struct.WebHookJson) {
QQMessageProcessing(json)
}
43 changes: 43 additions & 0 deletions src/InformationProcessing/PublicFunc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package InformationProcessing

import (
"strings"

"xyz.nyan/MediaWiki-Bot/src/Struct"
"xyz.nyan/MediaWiki-Bot/src/utils"
)

//命令处理,判断命令是否匹配,匹配则输出命令和命令参数
func CommandExtraction(SNSName string, QQjson Struct.WebHookJson, text string) (bool, string, string) {
if find := strings.Contains(text, ":"); find {
Config := utils.ReadConfig()
var ConfigWikiName string
for one := range Config.Wiki.([]interface{}) {
ConfigWikiName = Config.Wiki.([]interface{})[one].(map[interface{}]interface{})["WikiName"].(string)
if find := strings.Contains(text, ConfigWikiName); find {
countSplit := strings.SplitN(text, ":", 2)
Command := countSplit[0]
Text := countSplit[1]
return true, Text, Command
}
}
} else if find := strings.Contains(text, "[["); find {
if find := strings.Contains(text, "]]"); find {
//获取主Wiki名字
Config := utils.ReadConfig()
MainWikiName := Config.Wiki.([]interface{})[0].(map[interface{}]interface{})["WikiName"].(string)

trimStr := strings.Trim(text, "[")
Text := strings.Trim(trimStr, "]")
return true, Text, MainWikiName
}
} else if find := strings.Contains(text, "/"); find {
switch SNSName {
case "QQ":
QQSettingsMessageProcessing(QQjson)
}
return false, "", "/"
}

return false, "", ""
}
6 changes: 3 additions & 3 deletions src/InformationProcessing/QQMessageProcessing.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ func QQsendTempdWikiInfo(WikiName string, UserID int, GroupID int, QueryText str
}

//戳一戳消息处理
func QQNudgeEventMessageProcessing(json Struct.QQWebHook_root) {
func QQNudgeEventMessageProcessing(json Struct.WebHookJson) {
UserID := json.Sender.Id
HelpText := Language.Message(strconv.Itoa(UserID)).HelpText
switch json.Subject.Kind {
Expand All @@ -67,7 +67,7 @@ func QQNudgeEventMessageProcessing(json Struct.QQWebHook_root) {
}

//消息处理
func QQMessageProcessing(json Struct.QQWebHook_root) {
func QQMessageProcessing(json Struct.WebHookJson) {
switch json.Type {
case "GroupMessage":
if json.MessageChain[1].(map[string]interface{})["type"] == "Plain" {
Expand Down Expand Up @@ -106,7 +106,7 @@ func QQMessageProcessing(json Struct.QQWebHook_root) {
}

//设置消息返回
func QQSettingsMessageProcessing(json Struct.QQWebHook_root) {
func QQSettingsMessageProcessing(json Struct.WebHookJson) {
text := json.MessageChain[1].(map[string]interface{})["text"]
countSplit := strings.Split(text.(string), "/")
Text := countSplit[1]
Expand Down
30 changes: 0 additions & 30 deletions src/Struct/QQWebHook.go

This file was deleted.

30 changes: 30 additions & 0 deletions src/Struct/WebHook.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package Struct

type WebHookJson struct {
Type string `json:"type"`
Sender Sender `json:"sender"`
FromId int `json:"fromId"`
Target int `json:"target"`
MessageChain []interface{} `json:"messageChain"`
Subject Subject `json:"subject"`
}
type Sender struct {
Id int `json:"id"`
MemberName string `json:"memberName"`
SpecialTitle string `json:"specialTitle"`
Permission string `json:"permission"`
JoinTimestamp int `json:"joinTimestamp"`
LastSpeakTimestamp int `json:"lastSpeakTimestamp"`
MuteTimeRemaining int `json:"muteTimeRemaining"`
Nickname string `json:"nickname"`
Remark string `json:"remark"`
Group Group `json:"group"`
}
type Group struct {
Id int `json:"id"`
Name string `json:"name"`
}
type Subject struct {
Id int `json:"id"`
Kind string `json:"kind"`
}
2 changes: 1 addition & 1 deletion src/utils/Settings/Settings.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
"xyz.nyan/MediaWiki-Bot/src/Struct"
)

func Settings(SNSName string, QQMessagejson Struct.QQWebHook_root, CommandText string) (string, bool) {
func Settings(SNSName string, QQMessagejson Struct.WebHookJson, CommandText string) (string, bool) {
if find := strings.Contains(CommandText, "language"); find {
switch SNSName {
case "QQ":
Expand Down

0 comments on commit c3e756b

Please sign in to comment.