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
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.
mid
:=
info
.
Get
(
"track_info.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"
)
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
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
{
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
}
if
d
[
"type"
]
==
"163"
{
...
...
@@ -503,7 +507,19 @@ func (bot *CQBot) ToElement(t string, d map[string]string, group bool) (message.
template
:=
CQCodeEscapeValue
(
d
[
"data"
])
//println(template)
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
default
:
return
nil
,
errors
.
New
(
"unsupported cq code: "
+
t
)
...
...
docs/cqhttp.md
View file @
8c177031
...
...
@@ -135,8 +135,11 @@ Type: `xml`
示例:
`[CQ:xml,data=xxxx]`
####一些xml样例
####ps:重要:xml中的value部分,记得html实体化处理后,再打加入到cq码中
#### qq音乐
```
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>
```
...
...
@@ -165,6 +168,35 @@ Type: `xml`
</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
...
...
global/net.go
View file @
8c177031
...
...
@@ -4,13 +4,10 @@ import (
"bytes"
"compress/gzip"
"fmt"
"github.com/tidwall/gjson"
"io/ioutil"
"net/http"
"strconv"
"strings"
"github.com/Mrs4s/MiraiGo/message"
"github.com/tidwall/gjson"
)
func
GetBytes
(
url
string
)
([]
byte
,
error
)
{
...
...
@@ -54,18 +51,3 @@ func NeteaseMusicSongInfo(id string) (gjson.Result, error) {
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 {
return
def
}
func
getParam
(
c
*
gin
.
Context
,
k
string
)
string
{
p
,
_
:=
getParamWithType
(
c
,
k
)
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