├── .gitignore ├── README.md ├── package-lock.json ├── package.json ├── public ├── favicon.ico └── index.html ├── src ├── App.vue ├── assets │ ├── Connect_logo_5.png │ ├── bootstrap4-business-tycoon.min.css │ ├── coding.svg │ ├── dingtalk.svg │ ├── gitee.svg │ ├── github.svg │ ├── oschina.svg │ └── qq_new.png ├── main.js ├── router │ └── index.js └── views │ ├── Callback.vue │ ├── Deploy.vue │ ├── Docs.vue │ ├── Feature.vue │ ├── Home.vue │ ├── Login.vue │ ├── NotFound.vue │ └── Proxy.vue ├── vercel.json └── vue.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | pnpm-debug.log* 14 | 15 | # Editor directories and files 16 | .idea 17 | .vscode 18 | *.suo 19 | *.ntvs* 20 | *.njsproj 21 | *.sln 22 | *.sw? 23 | 24 | .vercel 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CoolPush的web客户端 2 | 3 | > 样例: https://cp.xuthus.cc 4 | 5 | ### 准备 6 | ``` 7 | npm install 8 | ``` 9 | 10 | ### 测试运行 11 | ``` 12 | npm run serve 13 | ``` 14 | 15 | ### 编译 16 | ``` 17 | npm run build 18 | ``` 19 | 20 | ### 需要做什么 21 | 22 | - 修改`src/main.js`文件,替换回调地址 23 | - 修改`src/views/Home.vue`文件,替换机器人QQ列表 -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ct", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "build": "vue-cli-service build" 8 | }, 9 | "dependencies": { 10 | "axios": "^0.22.0", 11 | "bootstrap": "^5.1.2", 12 | "bootstrap-vue": "^2.21.2", 13 | "vue": "^2.6.14", 14 | "vue-router": "^3.5.2", 15 | "vue-sweetalert2": "^5.0.2" 16 | }, 17 | "devDependencies": { 18 | "@vue/cli-plugin-router": "~4.5.13", 19 | "@vue/cli-service": "~4.5.13", 20 | "sass": "^1.42.1", 21 | "sass-loader": "^12.1.0", 22 | "vue-template-compiler": "^2.6.14" 23 | }, 24 | "browserslist": [ 25 | "> 1%", 26 | "last 2 versions", 27 | "not dead" 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CoolPush/WebClient/5e2c97b7d3a58d1ea8e2a9759bccaebef8d5c1a8/public/favicon.ico -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |{{ message }}
31 |{{ message }}
36 |{{ message }}
40 |说明: 机器人修改自 go-cqhttp , 已修改机器人可自动通过好友申请 19 | , 自动通过入群申请
20 | 21 |如何使用: 下载本程序,第一次执行时,会生成配置文件,修改配置文件,填写好QQ号码和密码,配置HTTP请求的参数.
运行后,防火墙/服务器安全组放行配置好的端口,默认是5700
22 |
更详细的教程可以参考 go-cqhttp 25 | 使用教程.
26 | 27 |QQ交流群: 824187964
28 |QQ消息推送服务: 添加推送机器人QQ号为好友
,调用接口即可通过推送机器人将指定消息体推送到你的QQ上
辅助 func.xuthus.cc (已关停)完成消息推送
当前使用单日限制: 无限制, 频率限制: 10次/10分钟
27 | 28 |系统内置敏感词过滤库(可能误伤),推送被查出敏感词次数超过规定阈值,将封停账号,使用且珍惜,不要推送违规内容(敏感词规则详见此: 敏感词列表 )
30 | 31 |通过 Oauth 授权登录网站
33 |自动获得 Skey
绑定接收消息的QQ账号,并指派推送机器人
35 |绑定的QQ账号添加机器人为好友
36 |调用接口发送请求
37 | 38 |目前钉钉群消息推送只支持使用POST推送, 参数和官方文档保持一致。官网文档参考地址:自定义机器人接入-钉钉开放平台
40 | 41 |目前企微推送支持四种消息格式,且只允许使用POST方式推送。推送格式如下:
43 |(一)普通消息推送:
44 |url: https://push.xuthus.cc/ww/skey
body: 随便什么数据都可以,但是敏感词会过滤掉
(二)文本卡片:
48 |url: https://push.xuthus.cc/ww/skey?type=1
body: {
50 | "title": "你好测试",
51 | "desc": "测试文本卡片",
52 | "href": "https://cp.xuthus.cc",
53 | "btntxt": "查看更多"
54 | }
(三)图文消息:
57 |url: https://push.xuthus.cc/ww/skey?type=2
body: {
59 | "title": "你好测试",
60 | "desc": "测试文本卡片",
61 | "href": "https://cp.xuthus.cc",
62 | "pic": "https://xuthus.cc/images/Photo_0411_1a.jpg"
63 | }
(四)Markdown消息:
66 |url: https://push.xuthus.cc/ww/skey?type=3
body: [这是一个链接](http://work.weixin.qq.com/api/doc)
如何绑定企业微信UserId?
70 |自定义企业微信推送配置的,进入企业微信通讯录,查看个人信息-> "帐号"
加入酷推企业的,在企业微信中,找到 酷推
应用,回复 "获取用户ID" 即可。
加入第三方企业的,咨询该企业管理员获取。
73 | 74 |由于滥用,图片推送、json、xml 通道已关闭,请使用私有化部署方式进行推送
76 |目前QQ机器人推送支持发送 图片
、群内@
、表情
,使用方式:
发送图片:@image=可访问的图片地址@
,
78 | 例如:@image=https://xuthus.cc/images/Photo_0411_1a.jpg@
发送表情:@face=表情ID@
, 例如:@face=176@
, 表情ID可从此处寻找:github
群消息@:@at=群成员QQ号@
, 例如:@at=13239686@
, 当需要@全体成员时 只需要
83 | @at=all@
自定义xml:@xml=xml格式的数据@
, 例如:@xml=<?xml version='1.0' encoding='UTF-8'
85 | standalone='yes' ?><msg serviceID="2" templateID="1" action="web" brief="[分享] 十年"
86 | sourceMsgId="0" url="http://music.163.com/m/song/409650368" flag="0" adverSign="0"
87 | multiMsgFlag="0" ><item layout="2"><audio
88 | cover="http://p2.music.126.net/g-Qgb9ibk9Wp_0HWra0xQQ==/16636710440565853.jpg?param=90y90"
89 | src="https://music.163.com/song/media/outer/url?id=409650368.mp3" /><title>十年</title><summary>黄梦之</summary></item><source
90 | name="网易云音乐" icon="https://pic.rmb.bdstatic.com/911423bee2bef937975b29b265d737b3.png"
91 | url="http://web.p.qq.com/qqmpmobile/aio/app.html?id=1101079856" action="app"
92 | a_actionData="com.netease.cloudmusic" i_actionData="tencent100495085://" appid="100495085" /></msg>@
93 |
自定义json:@json=json格式的数据@
, 注意中间不能有换行符 , 例如:
@json={"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,其导致疾病命名
95 | COVID-19","action":""},{"name":"传染源:新冠肺炎的患者。无症状感染者也可能成为传染源。","action":""}],"emphasis_keyword":""}},"text":"","sourceAd":""}@
96 |
音乐分享:@music=[type=custom,url=点击时的跳转链接地址,audio=音频地址,title=音乐标题,image=分享封面图片地址]@
98 |
例如:@music=[type=custom,title=测试,url=https://c.y.qq.com/base/fcgi-bin/u?__=CY6V4b,image=https://xuthus.cc/images/Photo_0411_1a.jpg]@
100 |
下图为音乐分享对应的参数说明
102 |107 | //拷贝如下代码,将其放置于加载valine组件的layout中 108 | 109 | //检测推送 Skey替换 110 | var pushLink = "https://push.xuthus.cc/send/Skey"; 111 | //推送的网站名称 112 | var siteName = ""; 113 | 114 | var valineButton = document.getElementsByClassName("vsubmit vbtn")[0]; 115 | var title = siteName + "上又有新评论啦~!\n"; 116 | 117 | function send_valine() { 118 | //获取元素信息 119 | var pagename = document.title; 120 | var pageurl = document.URL; 121 | var pushtime = new Date(); 122 | var vnick = document.getElementsByClassName("vnick vinput")[0].value; 123 | var vmail = document.getElementsByClassName("vmail vinput")[0].value; 124 | var vlink = document.getElementsByClassName("vlink vinput")[0].value; 125 | var veditor = document.getElementsByClassName("veditor vinput")[0].value; 126 | content = 127 | title + 128 | "昵称:" + vnick + 129 | "\n邮箱:" + vmail + 130 | "\n网站地址:" + vlink + 131 | "\n文章标题:" + pagename + 132 | "\n评论内容:" + veditor + 133 | "\n文章链接:" + pageurl + 134 | "\n评论时间" + pushtime.toLocaleString() + "\n"; 135 | var httpRequest = new XMLHttpRequest(); //第一步:创建需要的对象 136 | httpRequest.open("POST", pushLink, true); //第二步:打开连接 137 | httpRequest.setRequestHeader( 138 | "Content-type", 139 | "application/json" 140 | ); //设置请求头 注:post方式必须设置请求头(在建立连接后设置请求头) 141 | httpRequest.send(content); //发送请求 将情头体写在send中 142 | } 143 | 144 | valineButton.onclick = send_valine;//点击事件 145 |146 |
150 | //js 发起请求 151 | var httpRequest = new XMLHttpRequest(); //第一步:创建请求对象 152 | httpRequest.open("POST", "https://push.xuthus.cc/send/Skey", true); //第二步:打开连接 153 | httpRequest.setRequestHeader( 154 | "Content-type", 155 | "application/json" 156 | ); //设置请求头 157 | httpRequest.send("标题 \n 内容:你好我是正文"); //发送请求 158 | 159 | //python 发起请求 160 | import requests 161 | url = "https://push.xuthus.cc/send/Skey" 162 | data = "标题 \n 内容:你好我是正文" 163 | res = requests.post(url=url,data=data) 164 | 165 | //php 发起请求 166 | $url="https://push.xuthus.cc/send/Skey"; 167 | $content = "标题 \n 内容:你好我是正文"; 168 | $length = strlen($content); 169 | $options = array( 170 | 'http' => array( 171 | 'method' => 'POST', 172 | 'header' => 173 | "Content-type: application/json; charset=utf-8" . 174 | "Content-length: $length", 175 | 'content' => $content 176 | ) 177 | ); 178 | echo file_get_contents($url, false, stream_context_create($options)); 179 | 180 | //Golang 发起请求 181 | var content = "标题 \n 内容:你好我是正文" 182 | client := &http.Client{} 183 | req, _ := http.NewRequest("POST", "https://push.xuthus.cc/send/Skey", strings.NewReader(content)) 184 | _,_ = client.Do(req) 185 | 186 | //接收到的数据 187 | 标题 188 | 内容:你好我是正文 189 | 190 | //说明 191 | 使用 \n 进行换行 192 |193 |
交流QQ群:824187964
免费使用,暂不接受打赏赞助
209 | 210 |当您使用本网站服务时
212 |禁止
推送传播任何非法的、含有侮辱性的、具威胁性的任何法律禁止的信息。向你发起消息推送的权利
。注意,邮箱消息推送可能由于垃圾邮件而导致被退信
95 | 酷推
者, 在企业微信中,找到 酷推
应用,回复 "获取用户ID" 即可获得用户ID, 加入其他企业请联系该企业管理员获取用途:协助需要使用TG发送消息但服务器网络无法翻墙访问TG.
273 | 如何获取BotToken:添加 @BotFather 为好友. 获取机器人
274 | token 机器人token格式类似: 123456:AAEQ7MEf9WoUS0dMgb
275 | 如何获取推送用户ID:添加上一步中生成的机器人为好友. 给机器人发送一条消息, 访问
276 | https://api.telegram.org/bot{BotToken}/getUpdates 获取 chatId 即可(替换 {BotToken}
277 | 为机器人的token,)
278 |
279 |
282 |
283 |
286 |
287 | 目前已实现了加签方式的推送, 建议开启加签
306 |
307 |
310 |
311 |
314 |
315 | 微信消息推送
,只需要向以下URL发一个GET或者POST请求:
Telegram推送
: 向以下地址发送一个GET或者POST请求:
他们都只接受一个参数 c
表示 content 内容
:
354 | 最简单的消息发送方式是通过浏览器,在地址栏输入以下URL,回车后即可发送: 355 |
356 |企业微信消息推送
: 你需要向以下URL地址发送POST请求(仅接受POST请求
):
企业微信推送的请求参数可参考
371 |
钉钉群消息推送
: 你需要向以下URL地址发送POST请求(仅接受POST请求
):
钉钉群消息推送的请求参数可参考
382 |
邮箱消息推送
: 需要向以下URL发一个GET或者POST请求:
邮箱消息推送接收两个参数,分别是 t
和 c
表示 title 标题
和
394 | content 内容
下面是一个简单的邮件推送演示,在地址栏输入以下URL,回车后即可发送:
396 |
422 | 内容登录可见,点击
423 |
确定要重置Skey?之前所有调用该KEY的地方都需要做相应的修改哦?
467 |扫码后,关注公众号并点击确定以进行绑定检查。
492 |请将该账号添加机器人QQ为好友[已开启敏感词过滤规则,存在敏感词的推送将会被丢弃]
107 | 请选择以下机器人并拉他们入群[已开启敏感词过滤规则,存在敏感词的推送将会被丢弃]
137 | 输入私有化部署后的可供访问的URL地址,并完成校验.
180 | 私有化部署不限制敏感词
181 | 感谢以下QQ号的贡献,虽然被封禁了,但值得被铭记!
197 | 感谢以下用户的QQ小号赞助!
212 | QQ私聊推送
: 只需要向以下URL发一个GET或者POST请求:
QQ群消息推送
: 只需要向以下URL发一个GET或者POST请求:
一对多推送
: 针对需要 一对多
推送的需求,目前也已经支持(包括私有化部署),你可以使用 sendList
254 | 这个GET参数来自定义, 结果用 英文逗号
拼接, 目前最多支持一对多推送10个账号(一对一推送请不要使用该参数, 将导致该推送丢弃),
255 | 不支持混合群聊私聊推送, 填写错误将导致推送失败, 推送方式异步, 不立即告知结果, 实际执行效果以收到的消息为准, 悉知。下面是一个私聊一对多推送案例,
QQ私有化私聊推送
:
264 | 如果你部署了私有化的QQ机器人,在绑定并验证后,只需要向以下URL发一个GET或者POST请求,即可完成 ,当然,敏感词不受限制,并且增强功能均已开启
:
265 |
QQ私有化群聊推送
:
需要说明的是,如果你需要动态的指定推送消息给特定的qq号或者群,你可以使用 userId/groupId
282 | 这两个GET参数来自定义,其中userId表示要推送的QQ号(适应于 send/psend
),groupId表示要推送的群号码(适应于 group/pgroup
),添加了些许灵活性
309 | 内容登录可见,点击
310 |
确定要重置Skey?之前所有调用该KEY的地方都需要做相应的修改哦?
372 |更多登录方式
43 | 44 | 45 | 46 | 47 | 48 |更多登录方式
91 | 92 |Telegram代理
: 为了实现Telegram推送, CoolPush实现了相关的API代理服务。只需要向以下URL发一个 POST
请求即可, 其返回值为Telegram的原始返回值(请求不接受文件上传):
Telegram代理接口接收两个参数,分别是 url
和 payload
表示 url 请求地址
和
77 | payload 请求body
下面是一个简单的调用演示:
79 |81 | //python 发起请求 82 | import requests 83 | url = "https://proxy.xuthus.cc/api/tg_proxy" 84 | data = { 85 | "url": "https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/sendMessage", 86 | "payload": { 87 | "chat_id": 123456, 88 | "text": "hello world" 89 | } 90 | } 91 | res = requests.post(url=url,data=data) 92 |93 |