Skip to content

Commit d5cf4d1

Browse files
author
Curtis Jiang
authored
Merge pull request #8 from Z4HD/master
添加对JSON格式配置文件以及读取外部JSON配置文件的支持
2 parents 49981e8 + 7d4653a commit d5cf4d1

5 files changed

Lines changed: 109 additions & 10 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,3 +104,4 @@ nouse.py
104104

105105
.DS_Store
106106
.idea
107+
.vscode

README.md

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -74,21 +74,30 @@ server {
7474

7575
提示:从 1.0 迁移请注意修改 bot\_constant.py
7676

77-
请在bot使用之前,将bot_constant-sample.py重命名为bot_constant.py
77+
请在bot使用之前,`bot_constant-sample.py`重命名为`bot_constant.py`
7878

79-
TOKEN:Telegram机器人的token
79+
键 | 值
80+
:--------------- | ---
81+
`TOKEN` | Telegram机器人的token
82+
`QQ_BOT_ID` | QQ机器人的QQ号
83+
`FORWARD_LIST` | 一个list,可以定义多个转发关系,list中的每一个dict [QQ群的群号, Telegram群的群I,开车模式默认值, 图片链接模式默认值]都代表一个转发关系。仅支持QQ群和Telegram群一一对应的关系。
84+
`SERVER_PIC_URL` | 图片访问的url前缀
85+
`CQ_ROOT_DIR` | 酷Q的根目录路径
86+
`CQ_PORT` | 酷Q Socket API 数据监听端口
87+
`JQ_MODE` | 交钱模式。如果使用酷Q Pro,请设置为True,如果使用酷Q Air,请设置为False。
8088

81-
QQ_BOT_ID:QQ机器人的QQ号
89+
### bot_constant.json
90+
键值对的对应关系与bot_constant.py相同。
8291

83-
FORWARD\_LIST:一个list,可以定义多个转发关系,list中的每一个dict [QQ群的群号, Telegram群的群I,开车模式默认值, 图片链接模式默认值]都代表一个转发关系。仅支持QQ群和Telegram群一一对应的关系
92+
如要使用JSON格式的配置文件,请将`bot_constant-json.py`重命名为`bot_constant.py`以启用JSON配置文件支持特性
8493

85-
SERVER\_PIC\_URL:图片访问的url前缀。
94+
如要加载外部配置文件,请将外部配置文件的路径添加至环境变量 `CTB_JSON_SETTINGS_PATH`
95+
例:
8696

87-
CQ\_ROOT\_DIR:酷Q的根目录路径
88-
89-
CQ\_PORT:酷Q Socket API 数据监听端口
90-
91-
JQ\_MODE:交钱模式。如果使用酷Q Pro,请设置为True,如果使用酷Q Air,请设置为False。
97+
```shell
98+
$ export CTB_JSON_SETTINGS_PATH="/home/user/bot_constant.json"
99+
```
100+
`tools/bot_constant-py2json.py`提供了将`bot_constant.py`转换为`bot_constant.json`的工具
92101

93102
### qq_emoji_list.py
94103

bot_constant-json.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
将本文件重名为为 bot_constant.py 以启用JSON格式配置文件支持。
4+
本脚本支持读取外部配置文件,默认读取bot_constant.json
5+
6+
请将外部配置文件的路径添加至环境变量 CTB_JSON_SETTINGS_PATH
7+
例如:/home/user/bot_constant.json 或 ../esuSet.json
8+
"""
9+
10+
import os
11+
import json
12+
13+
filepath = os.getenv('CTB_JSON_SETTINGS_PATH', 'bot_constant.json')
14+
with open(filepath, 'r') as f1:
15+
settingsJSON = json.loads(f1.read())
16+
17+
TOKEN = settingsJSON['TOKEN']
18+
QQ_BOT_ID = settingsJSON['QQ_BOT_ID']
19+
FORWARD_LIST = settingsJSON['FORWARD_LIST']
20+
SERVER_PIC_URL = settingsJSON['SERVER_PIC_URL']
21+
CQ_ROOT = settingsJSON['CQ_ROOT']
22+
CQ_PORT = settingsJSON['CQ_PORT']
23+
JQ_MODE = settingsJSON['JQ_MODE'] # if use Coolq Pro, set as True, otherwise False
24+
print('[CTBot] JSON Config file support [EN]')

bot_constant-sample.json

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"TOKEN": "your telegram bot token",
3+
"QQ_BOT_ID": 1111111111,
4+
"FORWARD_LIST": [
5+
{
6+
"QQ": 12345678,
7+
"TG": -23456789,
8+
"Drive_mode": false,
9+
"Pic_link": true
10+
},
11+
{
12+
"QQ": 87654321,
13+
"TG": -76543218,
14+
"Drive_mode": false,
15+
"Pic_link": true
16+
}
17+
],
18+
"SERVER_PIC_URL": "http://example.com:8080/image/",
19+
"CQ_ROOT": "/home/coolq/coolq_pro/",
20+
"CQ_PORT": 11235,
21+
"JQ_MODE": true
22+
}

tools/bot_constant-py2json.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
"""
2+
该脚本可将配置文件bot_constant.py转换为bot_constant.json并保存在当前目录下。
3+
4+
[Useage]
5+
python3 bot_constant-py2json.py [-i *.py file]
6+
-i 指定输入文件,如不指定则默认为../bot_constant.py
7+
"""
8+
9+
import sys
10+
import json
11+
import os.path
12+
13+
14+
def py2json():
15+
r = {}
16+
r.setdefault("TOKEN", TOKEN)
17+
r.setdefault('QQ_BOT_ID', QQ_BOT_ID)
18+
r.setdefault('FORWARD_LIST', FORWARD_LIST)
19+
r.setdefault('SERVER_PIC_URL', SERVER_PIC_URL)
20+
r.setdefault('CQ_ROOT', CQ_ROOT)
21+
r.setdefault('CQ_PORT', CQ_PORT)
22+
r.setdefault('JQ_MODE', JQ_MODE)
23+
jData = json.dumps(r, indent=4)
24+
print(jData)
25+
return jData
26+
27+
28+
if __name__ == '__main__':
29+
if len(sys.argv) == 3 and sys.argv[1] == '-i':
30+
filepath1 = sys.argv[2]
31+
with open(filepath1, mode='r') as f1:
32+
ex = f1.read()
33+
exec(ex)
34+
elif len(sys.argv) == 1:
35+
with open(os.path.abspath('../bot_constant.py'), mode='r') as f1:
36+
ex = f1.read()
37+
exec(ex)
38+
else:
39+
print(__doc__)
40+
exit(1)
41+
with open('bot_constant.json','x') as fo:
42+
fo.write(py2json())
43+

0 commit comments

Comments
 (0)