Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
G
go-cqhttp
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nanahira
go-cqhttp
Commits
8c177031
You need to sign in or sign up before continuing.
Commit
8c177031
authored
Sep 03, 2020
by
wdvxdr1123
Committed by
GitHub
Sep 03, 2020
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #6 from Mrs4s/master
1
parents
9e43d9c2
7d3265b6
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
53 additions
and
24 deletions
+53
-24
coolq/cqcode.go
coolq/cqcode.go
+20
-4
docs/cqhttp.md
docs/cqhttp.md
+32
-0
global/net.go
global/net.go
+1
-19
server/http.go
server/http.go
+0
-1
No files found.
coolq/cqcode.go
View file @
8c177031
...
@@ -458,13 +458,17 @@ func (bot *CQBot) ToElement(t string, d map[string]string, group bool) (message.
...
@@ -458,13 +458,17 @@ func (bot *CQBot) ToElement(t string, d map[string]string, group bool) (message.
mid
:=
info
.
Get
(
"track_info.mid"
)
.
Str
mid
:=
info
.
Get
(
"track_info.mid"
)
.
Str
albumMid
:=
info
.
Get
(
"track_info.album.mid"
)
.
Str
albumMid
:=
info
.
Get
(
"track_info.album.mid"
)
.
Str
pinfo
,
_
:=
global
.
GetBytes
(
"http://u.y.qq.com/cgi-bin/musicu.fcg?g_tk=2034008533&uin=0&format=json&data={
\"
comm
\"
:{
\"
ct
\"
:23,
\"
cv
\"
:0},
\"
url_mid
\"
:{
\"
module
\"
:
\"
vkey.GetVkeyServer
\"
,
\"
method
\"
:
\"
CgiGetVkey
\"
,
\"
param
\"
:{
\"
guid
\"
:
\"
4311206557
\"
,
\"
songmid
\"
:[
\"
"
+
mid
+
"
\"
],
\"
songtype
\"
:[0],
\"
uin
\"
:
\"
0
\"
,
\"
loginflag
\"
:1,
\"
platform
\"
:
\"
23
\"
}}}&_=1599039471576"
)
pinfo
,
_
:=
global
.
GetBytes
(
"http://u.y.qq.com/cgi-bin/musicu.fcg?g_tk=2034008533&uin=0&format=json&data={
\"
comm
\"
:{
\"
ct
\"
:23,
\"
cv
\"
:0},
\"
url_mid
\"
:{
\"
module
\"
:
\"
vkey.GetVkeyServer
\"
,
\"
method
\"
:
\"
CgiGetVkey
\"
,
\"
param
\"
:{
\"
guid
\"
:
\"
4311206557
\"
,
\"
songmid
\"
:[
\"
"
+
mid
+
"
\"
],
\"
songtype
\"
:[0],
\"
uin
\"
:
\"
0
\"
,
\"
loginflag
\"
:1,
\"
platform
\"
:
\"
23
\"
}}}&_=1599039471576"
)
jumpUrl
:=
"https://i.y.qq.com/v8/playsong.html?platform=11&appshare=android_qq&appversion=10030010&hosteuin=oKnlNenz7i-s7c**&songmid="
+
mid
+
"&type=0&appsongtype=1&_wv=1&source=qq&ADTAG=qfshare"
jumpUrl
:=
"https://i.y.qq.com/v8/playsong.html?platform=11&appshare=android_qq&appversion=10030010&hosteuin=oKnlNenz7i-s7c**&songmid="
+
mid
+
"&type=0&appsongtype=1&_wv=1&source=qq&ADTAG=qfshare"
purl
:=
gjson
.
ParseBytes
(
pinfo
)
.
Get
(
"url_mid.data.midurlinfo.0.purl"
)
.
Str
purl
:=
gjson
.
ParseBytes
(
pinfo
)
.
Get
(
"url_mid.data.midurlinfo.0.purl"
)
.
Str
preview
:=
"http://y.gtimg.cn/music/photo_new/T002R180x180M000"
+
albumMid
+
".jpg"
preview
:=
"http://y.gtimg.cn/music/photo_new/T002R180x180M000"
+
albumMid
+
".jpg"
if
len
(
aid
)
<
2
{
if
len
(
aid
)
<
2
{
return
nil
,
errors
.
New
(
"song error"
)
return
nil
,
errors
.
New
(
"song error"
)
}
}
json
:=
fmt
.
Sprintf
(
"{
\"
app
\"
:
\"
com.tencent.structmsg
\"
,
\"
desc
\"
:
\"
音乐
\"
,
\"
meta
\"
: {
\"
music
\"
: {
\"
desc
\"
:
\"
来自MiraiGo
\"
,
\"
jumpUrl
\"
:
\"
%s
\"
,
\"
musicUrl
\"
:
\"
%s
\"
,
\"
preview
\"
:
\"
%s
\"
,
\"
tag
\"
:
\"
QQ音乐
\"
,
\"
title
\"
:
\"
%s
\"
}},
\"
prompt
\"
:
\"
[分享]%s
\"
,
\"
ver
\"
:
\"
0.0.0.1
\"
,
\"
view
\"
:
\"
music
\"
}"
,
jumpUrl
,
purl
,
preview
,
name
,
name
)
content
:=
"来自go-cqhttp"
if
d
[
"content"
]
!=
""
{
content
=
d
[
"content"
]
}
json
:=
fmt
.
Sprintf
(
"{
\"
app
\"
:
\"
com.tencent.structmsg
\"
,
\"
desc
\"
:
\"
音乐
\"
,
\"
meta
\"
: {
\"
music
\"
: {
\"
desc
\"
:
\"
%s
\"
,
\"
jumpUrl
\"
:
\"
%s
\"
,
\"
musicUrl
\"
:
\"
%s
\"
,
\"
preview
\"
:
\"
%s
\"
,
\"
tag
\"
:
\"
QQ音乐
\"
,
\"
title
\"
:
\"
%s
\"
}},
\"
prompt
\"
:
\"
[分享]%s
\"
,
\"
ver
\"
:
\"
0.0.0.1
\"
,
\"
view
\"
:
\"
music
\"
}"
,
content
,
jumpUrl
,
purl
,
preview
,
name
,
name
)
return
message
.
NewLightApp
(
json
),
nil
return
message
.
NewLightApp
(
json
),
nil
}
}
if
d
[
"type"
]
==
"163"
{
if
d
[
"type"
]
==
"163"
{
...
@@ -503,7 +507,19 @@ func (bot *CQBot) ToElement(t string, d map[string]string, group bool) (message.
...
@@ -503,7 +507,19 @@ func (bot *CQBot) ToElement(t string, d map[string]string, group bool) (message.
template
:=
CQCodeEscapeValue
(
d
[
"data"
])
template
:=
CQCodeEscapeValue
(
d
[
"data"
])
//println(template)
//println(template)
i
,
_
:=
strconv
.
ParseInt
(
resId
,
10
,
64
)
i
,
_
:=
strconv
.
ParseInt
(
resId
,
10
,
64
)
msg
:=
global
.
NewXmlMsg
(
template
,
i
)
msg
:=
message
.
NewRichXml
(
template
,
i
)
return
msg
,
nil
case
"json"
:
resId
:=
d
[
"resid"
]
i
,
_
:=
strconv
.
ParseInt
(
resId
,
10
,
64
)
log
.
Warnf
(
"json msg=%s"
,
d
[
"data"
])
if
i
==
0
{
//默认情况下走小程序通道
msg
:=
message
.
NewLightApp
(
CQCodeUnescapeValue
(
d
[
"data"
]))
return
msg
,
nil
}
//resid不为0的情况下走富文本通道,后续补全透传service Id,此处暂时不处理 TODO
msg
:=
message
.
NewRichJson
(
CQCodeUnescapeValue
(
d
[
"data"
]))
return
msg
,
nil
return
msg
,
nil
default
:
default
:
return
nil
,
errors
.
New
(
"unsupported cq code: "
+
t
)
return
nil
,
errors
.
New
(
"unsupported cq code: "
+
t
)
...
...
docs/cqhttp.md
View file @
8c177031
...
@@ -135,8 +135,11 @@ Type: `xml`
...
@@ -135,8 +135,11 @@ Type: `xml`
示例:
`[CQ:xml,data=xxxx]`
示例:
`[CQ:xml,data=xxxx]`
####一些xml样例
####一些xml样例
####ps:重要:xml中的value部分,记得html实体化处理后,再打加入到cq码中
####ps:重要:xml中的value部分,记得html实体化处理后,再打加入到cq码中
#### qq音乐
#### qq音乐
```
xml
```
xml
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<msg
serviceID=
"2"
templateID=
"1"
action=
"web"
brief=
"[分享] 十年"
sourceMsgId=
"0"
url=
"https://i.y.qq.com/v8/playsong.html?_wv=1&songid=4830342&souce=qqshare&source=qqshare&ADTAG=qqshare"
flag=
"0"
adverSign=
"0"
multiMsgFlag=
"0"
><item
layout=
"2"
><audio
cover=
"http://imgcache.qq.com/music/photo/album_500/26/500_albumpic_89526_0.jpg"
src=
"http://ws.stream.qqmusic.qq.com/C400003mAan70zUy5O.m4a?guid=1535153710&vkey=D5315B8C0603653592AD4879A8A3742177F59D582A7A86546E24DD7F282C3ACF81526C76E293E57EA1E42CF19881C561275D919233333ADE&uin=&fromtag=3"
/><title>
十年
</title><summary>
陈奕迅
</summary></item><source
name=
"QQ音乐"
icon=
"https://i.gtimg.cn/open/app_icon/01/07/98/56/1101079856_100_m.png"
url=
"http://web.p.qq.com/qqmpmobile/aio/app.html?id=1101079856"
action=
"app"
a_actionData=
"com.tencent.qqmusic"
i_actionData=
"tencent1101079856://"
appid=
"1101079856"
/></msg>
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<msg
serviceID=
"2"
templateID=
"1"
action=
"web"
brief=
"[分享] 十年"
sourceMsgId=
"0"
url=
"https://i.y.qq.com/v8/playsong.html?_wv=1&songid=4830342&souce=qqshare&source=qqshare&ADTAG=qqshare"
flag=
"0"
adverSign=
"0"
multiMsgFlag=
"0"
><item
layout=
"2"
><audio
cover=
"http://imgcache.qq.com/music/photo/album_500/26/500_albumpic_89526_0.jpg"
src=
"http://ws.stream.qqmusic.qq.com/C400003mAan70zUy5O.m4a?guid=1535153710&vkey=D5315B8C0603653592AD4879A8A3742177F59D582A7A86546E24DD7F282C3ACF81526C76E293E57EA1E42CF19881C561275D919233333ADE&uin=&fromtag=3"
/><title>
十年
</title><summary>
陈奕迅
</summary></item><source
name=
"QQ音乐"
icon=
"https://i.gtimg.cn/open/app_icon/01/07/98/56/1101079856_100_m.png"
url=
"http://web.p.qq.com/qqmpmobile/aio/app.html?id=1101079856"
action=
"app"
a_actionData=
"com.tencent.qqmusic"
i_actionData=
"tencent1101079856://"
appid=
"1101079856"
/></msg>
```
```
...
@@ -165,6 +168,35 @@ Type: `xml`
...
@@ -165,6 +168,35 @@ Type: `xml`
</msg>
</msg>
```
```
###json消息支持
Type:
`json`
范围:
**发送**
参数:
| 参数名 | 类型 | 说明 |
| ------ | ------ | ------------------------------------------------------------ |
| data | string | json内容,json的所有字符串记得实体化处理|
| resid | int32 | 默认不填为0,走小程序通道,填了走富文本通道发送|
json中的字符串需要进行转义:
>","=>`,`、
>"&"=> `&`、
>"["=>`[`、
>"]"=>`]`、
否则无法正确得到解析
示例json 的cq码:
```
test
[CQ:json,data={"app":"com.tencent.miniapp","desc":"","view":"notification","ver":"0.0.0.1","prompt":"[应用]","appID":"","sourceName":"","actionData":"","actionData_A":"","sourceUrl":"","meta":{"notification":{"appInfo":{"appName":"全国疫情数据统计","appType":4,"appid":1109659848,"iconUrl":"http:\/\/gchat.qpic.cn\/gchatpic_new\/719328335\/-2010394141-6383A777BEB79B70B31CE250142D740F\/0"},"data":[{"title":"确诊","value":"80932"},{"title":"今日确诊","value":"28"},{"title":"疑似","value":"72"},{"title":"今日疑似","value":"5"},{"title":"治愈","value":"60197"},{"title":"今日治愈","value":"1513"},{"title":"死亡","value":"3140"},{"title":"今**亡","value":"17"}],"title":"中国加油,武汉加油","button":[{"name":"病毒:SARS-CoV-2,其导致疾病命名 COVID-19","action":""},{"name":"传染源:新冠肺炎的患者。无症状感染者也可能成为传染源。","action":""}],"emphasis_keyword":""}},"text":"","sourceAd":""}]
```
## API
## API
...
...
global/net.go
View file @
8c177031
...
@@ -4,13 +4,10 @@ import (
...
@@ -4,13 +4,10 @@ import (
"bytes"
"bytes"
"compress/gzip"
"compress/gzip"
"fmt"
"fmt"
"github.com/tidwall/gjson"
"io/ioutil"
"io/ioutil"
"net/http"
"net/http"
"strconv"
"strings"
"strings"
"github.com/Mrs4s/MiraiGo/message"
"github.com/tidwall/gjson"
)
)
func
GetBytes
(
url
string
)
([]
byte
,
error
)
{
func
GetBytes
(
url
string
)
([]
byte
,
error
)
{
...
@@ -54,18 +51,3 @@ func NeteaseMusicSongInfo(id string) (gjson.Result, error) {
...
@@ -54,18 +51,3 @@ func NeteaseMusicSongInfo(id string) (gjson.Result, error) {
return
gjson
.
ParseBytes
(
d
)
.
Get
(
"songs.0"
),
nil
return
gjson
.
ParseBytes
(
d
)
.
Get
(
"songs.0"
),
nil
}
}
func
NewXmlMsg
(
template
string
,
ResId
int64
)
*
message
.
ServiceElement
{
var
serviceid
string
if
ResId
==
0
{
serviceid
=
"2"
//默认值2
}
else
{
serviceid
=
strconv
.
FormatInt
(
ResId
,
10
)
}
//println(serviceid)
return
&
message
.
ServiceElement
{
Id
:
int32
(
ResId
),
Content
:
template
,
ResId
:
serviceid
,
SubType
:
"xml"
,
}
}
server/http.go
View file @
8c177031
...
@@ -400,7 +400,6 @@ func getParamOrDefault(c *gin.Context, k, def string) string {
...
@@ -400,7 +400,6 @@ func getParamOrDefault(c *gin.Context, k, def string) string {
return
def
return
def
}
}
func
getParam
(
c
*
gin
.
Context
,
k
string
)
string
{
func
getParam
(
c
*
gin
.
Context
,
k
string
)
string
{
p
,
_
:=
getParamWithType
(
c
,
k
)
p
,
_
:=
getParamWithType
(
c
,
k
)
return
p
return
p
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment