{"id":38529757,"url":"https://github.com/yzyyz1387/cqsat","last_synced_at":"2026-01-17T06:53:34.256Z","repository":{"id":57766818,"uuid":"527003886","full_name":"yzyyz1387/cqsat","owner":"yzyyz1387","description":"业余无线电助手，基于Nonebot2","archived":false,"fork":false,"pushed_at":"2024-05-10T12:25:46.000Z","size":4197,"stargazers_count":40,"open_issues_count":4,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-28T16:35:00.373Z","etag":null,"topics":["ham","nonebot2","pyhton","radio","sat"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yzyyz1387.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-20T18:07:57.000Z","updated_at":"2025-06-27T10:20:43.000Z","dependencies_parsed_at":"2024-04-28T17:49:42.739Z","dependency_job_id":null,"html_url":"https://github.com/yzyyz1387/cqsat","commit_stats":{"total_commits":51,"total_committers":2,"mean_commits":25.5,"dds":"0.019607843137254943","last_synced_commit":"0ea8d4fbf7710d0cb05508466497c91e8d2fb7d5"},"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"purl":"pkg:github/yzyyz1387/cqsat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yzyyz1387%2Fcqsat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yzyyz1387%2Fcqsat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yzyyz1387%2Fcqsat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yzyyz1387%2Fcqsat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yzyyz1387","download_url":"https://codeload.github.com/yzyyz1387/cqsat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yzyyz1387%2Fcqsat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28502972,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T04:31:57.058Z","status":"ssl_error","status_checked_at":"2026-01-17T04:31:45.816Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ham","nonebot2","pyhton","radio","sat"],"created_at":"2026-01-17T06:53:33.704Z","updated_at":"2026-01-17T06:53:34.238Z","avatar_url":"https://github.com/yzyyz1387.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\u003cdiv align=\"center\"\u003e\n\n\u003cp align=\"center\"\u003e\n  \n  \u003cimg src=\"img/cqsat.png\" width=\"200\" height=\"200\" alt=\"cqsat\"\u003e\u003c/img\u003e\n  \n\u003c/p\u003e\n\n\n**你的star是我的动力**\n**↓**\n\n\u003cimg src=\"https://img.shields.io/github/stars/yzyyz1387/cqsat.svg?style=social\"\u003e\n\n# HAM助手\n\n_✨ NoneBot2 业余无线电插件✨ _\n\n\u003c/div\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e \u003ch3\u003e点击查看目录\u003c/h3\u003e\u003c/summary\u003e\n\n\n- [HAM助手](#ham助手)\n  - [安装](#安装)\n    - [直接安装](#直接安装)\n    - [pip安装](#pip安装)\n    - [nb-cli安装  【推荐】](#nb-cli安装--推荐)\n  - [说明](#说明)\n    - [追星](#追星)\n      - [数据来源](#数据来源)\n      - [使用时](#使用时)\n      - [刷题](#刷题)\n  - [功能](#功能)\n  - [指令](#指令)\n    - [绑定QTH:  【群内、私聊】](#绑定qth--群内私聊)\n    - [订阅卫星：  【群内】](#订阅卫星--群内)\n    - [查询订阅的卫星 【群内】](#查询订阅的卫星-群内)\n    - [查询支持的卫星列表 【群内、私聊】](#查询支持的卫星列表-群内私聊)\n    - [查询某卫星在指定分钟后的状态 【群内、私聊】](#查询某卫星在指定分钟后的状态-群内私聊)\n    - [取消订阅卫星  【群内】](#取消订阅卫星--群内)\n    - [取消当前操作](#取消当前操作)\n    - [网格 【私聊、群内】](#网格-私聊群内)\n    - [考题](#考题)\n      - [刷题 【私聊、群内】](#刷题-私聊群内)\n  - [TODO](#todo)\n  - [参考资料](#参考资料)\n\n\u003c/details\u003e\n\n## 安装\n\n### 直接安装\n\n**拉取仓库放入机器人文件夹**\n**然后安装本项目依赖**\n\n```bash\npip install -r requirements.txt\n```\n\n### pip安装\n\n先安装包\n\n```bash\npip install nonebot-plugin-cqsat\n```\n\n再进入`bot.py`\n加入以下代码\n\n```python\nnonebot.load_plugin(\"cqsat\")\n```\n\n### nb-cli安装  【推荐】\n\n打开机器人项目文件夹（bot.py同级目录）\n执行\n\n```bash\nnb plugin install nonebot-plugin-cqsat\n```\n\n## 菜单\n发送 【/cq】\n\n## 说明\n\n### 追星\n\n#### 数据来源\n\n- 目前只支持来自[https://amsat.org/tle/current/nasabare.txt](https://amsat.org/tle/current/nasabare.txt)的数据\n- 还支持中国空间站，中国空间站TLE数据来自[中国载人航天官方](http://www.cmse.gov.cn/gfgg/zgkjzgdcs/)\n\n#### 使用时\n\n**- 对于中国空间站，在使用时建议用`天宫`**\n\n- 目前每次查询都是从在线获取数据\n- 每分钟检测一次\n  - 检测当前时间10分钟后，用户所定阅卫星的情况\n  - 如果十分钟后入境，并且从入境到出境期间出现的最高仰角大于用户设定的最低仰角，将在群内@用户并提示\n- 在执行输入操作时，输入`取消` 或者 `算了` 可取消当前操作\n\n\n\n#### 刷题\n\n当前题目版本：_v20211022_  \n题目来源：[CRAC官网](http://crac.org.cn/News/Detail?ID=3dbd1bc7f36443958e1872234f42464f)  \n根据官方题目生成的json文件位于：/cqsat_resource/bank 下\n\n## 功能\n\n- 追星\n  - 提示示例：\n\n\u003cdetails\u003e\n  \u003csummary\u003e \u003ch3\u003e点击查看截图\u003c/h3\u003e\u003c/summary\u003e\n\n![](img/readme/at_user.png)\n\n\u003c/details\u003e\n\n## 指令\n\n### 绑定QTH:  【群内、私聊】\n\n- 绑定时发送：`绑定位置`\n- 更改位置时同样发送：`绑定位置`\n- 需要输入\n  - 地名\n    - 例如：`北京`\n  - `经度 纬度 海拔`(以空格分隔)\n    - 例如：  75.8656 39.3809 1330.0\n\n\u003cdetails\u003e\n  \u003csummary\u003e \u003ch3\u003e点击查看截图\u003c/h3\u003e\u003c/summary\u003e\n\n![](img/readme/qth.gif)\n\n\u003c/details\u003e\n\n### 订阅卫星：  【群内】\n\n订阅时发送：`订阅卫星`期间会让用户输入：\n\n- `卫星名称`:  大小写不敏感(多卫星用空格分隔)\n  - 例如：SO-50 ISS ao-92\n- `最低仰角`:  输入数字（1, 90] （允许输入`xx度`或`xx°`）\n  - 例如 10\n\n\u003cdetails\u003e\n  \u003csummary\u003e \u003ch3\u003e点击查看截图\u003c/h3\u003e\u003c/summary\u003e\n\n![](img/readme/sat_sub.gif)\n\n\u003c/details\u003e\n\n### 查询订阅的卫星 【群内】\n\n- 发送  `查询订阅`\n\n\u003cdetails\u003e\n  \u003csummary\u003e \u003ch3\u003e点击查看截图\u003c/h3\u003e\u003c/summary\u003e\n\n![](img/readme/refer_sub.gif)\n\n\u003c/details\u003e\n\n### 查询支持的卫星列表 【群内、私聊】\n\n- 发送`卫星列表`\n\n\u003cdetails\u003e\n  \u003csummary\u003e \u003ch3\u003e点击查看截图\u003c/h3\u003e\u003c/summary\u003e\n\n![](img/readme/sat_list.gif)\n\n\u003c/details\u003e\n\n### 查询某卫星在指定分钟后的状态 【群内、私聊】\n\n- 发送  `查询卫星+卫星名+ +分钟数`  卫星名和分钟数用空格分隔\n  - 例如 查询卫星SO-50 50  （查询so-50在50分钟后的状态）\n- 或 `计算卫星+卫星名+ +分钟数` 卫星名和分钟数用空格分隔\n\n\u003cdetails\u003e\n  \u003csummary\u003e \u003ch3\u003e点击查看截图\u003c/h3\u003e\u003c/summary\u003e\n\n![](img/readme/refer_sat_byTime.gif)\n\n\u003c/details\u003e\n\n### 取消订阅卫星  【群内】\n\n- 发送`取消订阅+卫星名称` 多颗卫星用空格分隔\n  - 例如：取消订阅 SO-50 ISS ao-92\n\n\u003cdetails\u003e\n  \u003csummary\u003e \u003ch3\u003e点击查看截图\u003c/h3\u003e\u003c/summary\u003e\n\n![](img/readme/sat_unsub.gif)\n\n\u003c/details\u003e\n\n### 取消当前操作\n\n- 在问答过程中发送`取消` 或者 `算了` 可取消当前操作\n\n\u003cdetails\u003e\n  \u003csummary\u003e \u003ch3\u003e点击查看截图\u003c/h3\u003e\u003c/summary\u003e\n\n![](img/readme/cancel.gif)\n\n\u003c/details\u003e\n\n### 查看相关网页截图\n- 发送`/s` 即可查看相关网站的截图 例如 `/s t a`\n  - t https://www.df2et.de/tevel/ \n  - a https://amsat.org/status/index.php\n  - css https://sathunt.com/\n  - home https://github.com/yzyyz1387/cqsat\n  - [ ]...\n  - 机器人superuser可使用/截图指令\n\n### /截图\n- 机器人superuser可使用/截图指令\n  - `/截图 add url=xxx path=xxx cmd=xx,xxx proxy=xxx **kwargs`\n    - url: 截图网址\n    - path: 截图保存路径\n    - cmd: 截图命令\n    - kwargs: 其他参数\n    - 若要使用代理，请在机器人`.env.*`配置`sat_proxy_url=http://xx:port`\n  - `/截图 del url=xxx path=xxx cmd=xxx`\n    - url /path /cmd 其中之一即可\n  - `/截图 get`\n    - 查看当收录的截图支持列表\n  - `/截图 default`\n    - 恢复默认\n\n### 计算卫星过境交集\n- 此功能可以预测两个网格之间的卫星过境通联交集\n- 发送`/约  卫星1,卫星2 网格1 网格2` 即可查看卫星过境交集 例如 `/计算 so-50,iss OM44 OM48`\n  - 也可使用 `/匹配`、 `/satmatch`\n  - 当用户只发送了一个网格时，会自动使用用户绑定的网格，如果用户没有绑定位置，会发出提示\n\n### 娱乐信令\n- 发送`/v` ，根据提示回复一条语音，即可对该语音加上信令音\n- 可选参数\n  - `-p` 加前置音 例如：`/v -p`\n  - `-n[数字]` 加噪音 例如：`/v -n5`\n  - 使用示例: `/v -n5 -p` \n\n## 新增针对卫星夜间免打扰：\n- 发送 `订阅卫星` 重新订阅一遍，在订阅的时候设置，**此版本前订阅的将默认开启**，默认时间为20:00--08:00\n- 设置订阅时间：发送 `设置免打扰 时间起  时间止` 例如：`设置免打扰 20 8`\n- 开启/关闭 本群免打扰：发送 `设置免打扰`\n\n全局免打扰：\n- 设置全局免打扰时间： `全局免打扰 时间 时间`，例：`全局免打扰 20 8`\n- 开启/关闭全局免打扰： `全局免打扰\n\n### 网格 【私聊、群内】\n\n- 发送 `我的网格` 查询用户绑定qth的网格\n- 发送 `计算网格 +地名` 计算指定地址的网格，如 `计算网格 北京`\n- 发送 `计算网格+经度+  +纬度` 计算指定位置的网格 经纬度用空格分隔\n  - 不加经纬度相当于 `我的网格` 指令\n\n\u003cdetails\u003e\n  \u003csummary\u003e \u003ch3\u003e点击查看截图\u003c/h3\u003e\u003c/summary\u003e\n\n![](img/readme/mgsl.gif)\n\n\u003c/details\u003e\n\n### 考题\n\n#### 刷题 【私聊、群内】\n\n- 发送 `刷题` 开始顺序刷题\n- 发送 `取消` 、 `退出` 取消当前刷题\n\n#### 考试\n- 发送`HAM考试` 、`h考试` 开始考试\n- 考试过程中发送 `时间` 可查看考试剩余时间\n- 考试过程中发送 `退出` 可退出考试\n- 做完题目自动交卷\n- 规定时间内未做完题目自动交卷\n- 交卷后可查看考试结果及分析\n\n- 发送 `我的错题` 可查看错题\n- 发送 `查题 + 级别 + 题号` 可查看指定题目\n  - 例如 `查题 A 1` 查看A类考试第一题\n\n\u003cdetails\u003e\n  \u003csummary\u003e \u003ch3\u003e点击查看截图\u003c/h3\u003e\u003c/summary\u003e\n\n![](img/readme/ex_by_order.gif)\n\n\u003c/details\u003e\n\n[//]: #\n[//]: #\n[//]: #\n## TODO\n\n- [X]  追星\n- [X]  相关计算\n- [X]  刷题\n- [ ]  刷题错误记录、常错记录\n- [ ]  模拟考试\n- [ ]  卫星状态、卫星列表加入图片支持\n- [ ]  [#5](https://github.com/yzyyz1387/cqsat/issues/5)\n\n## 参考资料\n\n[PyEphem Home Page — PyEphem home page (rhodesmill.org)](https://rhodesmill.org/pyephem/)\n\n刁宁辉,刘建强,孙从容,等. 基于SGP4模型的卫星轨道计算[J]. 遥感信息,2012,27(4):64-70. DOI:10.3969/j.issn.1000-3177.2012.04.011.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyzyyz1387%2Fcqsat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyzyyz1387%2Fcqsat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyzyyz1387%2Fcqsat/lists"}