可以先看看 Manual
概念定义
list 是什么?
list 是整个机器人系统的基础数据结构,内部实现是 key-value Map。
key 可以是 QQ 号、关键词(组)、任意字符串。
value 可以是任意类型的数据,但是一般是字符串。
namespace 是什么?
namespace 是整个机器人系统的抽象管理层,用于管理 list、group。
创建 list、绑定 group 都离不开 namespace。
可以任命一些 QQ 为 namespace 的管理员,管理员同样可以管理 namespace 内的 list、group。
额外功能
机厅计数
先将群绑定到 机厅
namespace
查询有哪些地区机厅
如果没有当地的机厅,可以添加地区机厅 list
添加地区机厅 list 到 group keyword reply
1
|
/group keyword add reply 重庆机厅
|
这里举例 重庆机厅
添加机厅
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
/list join <哪里的机厅> <机厅名字> webhook:post<{
"message": {message},
"remain": {remain},
"open_at": "9:30",
"close_at": "22:30",
"reset_at": "5:00",
"full_name": "机厅全称",
"note": "机厅备注",
"nickname": {nickname},
"user_id": {userId},
"group_id": {groupId},
"count_limit": 18,
"cost_per": 2,
"cost_minute": 16
}>://http://127.0.0.1:20065/count/
|
参数解释
下面的参数写不写都无所谓,可以直接删掉。
open_at
: 机厅开门时间
close_at
: 机厅关门时间
reset_at
: 机厅计数重置时间(不写就不会重置)
full_name
: 机厅全称
note
: 机厅备注
count_limit
: 机厅计数上限
cost_per
: 每次上机几个人
cost_minute
: 上一次机需要花费多少分钟
以下是最少必要参数的例子
1
2
3
4
5
6
7
|
/list join <哪里的机厅> <机厅名字> webhook:post<{
"message": {message},
"remain": {remain},
"nickname": {nickname},
"user_id": {userId},
"group_id": {groupId}
}>://http://127.0.0.1:20065/count/
|
添加机厅别名
1
|
/list join <哪里的机厅> <机厅别名> rewrite://<机厅名字>{remain}
|
删除机厅(别名)
1
|
/list leave <哪里的机厅> <机厅名字(别名)>
|
使用
1
2
3
4
5
6
7
|
<机厅名字(别名)>几
<机厅名字(别名)>几个
<机厅名字(别名)>++
<机厅名字(别名)>--
<机厅名字(别名)>+2
<机厅名字(别名)>-2
<机厅名字(别名)>3
|
还可以尾随 ,<备注>
,以共享备注
FAQ
下面的回答一般是命令序列,详细的解释在 Manual。
我要用自动审核加群申请功能!
别忘了给机器人管理员权限。
用白名单的方式?
1
|
/list add <什么的白名单> <添加到哪个 namespace>
|
1
|
/list join <白名单> <QQ 号>
|
这个 json 是一个 key-value Map,key 是 QQ 号,value 是 null。
1
2
3
4
|
{
"1234": null,
"QQ 号": null
}
|
1
|
/group bind <相同的 namespace>
|
1
|
/group approval enable whitelist
|
1
|
/group approval add whitelist <白名单>
|
用 Minecraft 正版验证的方式?
1
|
/group approval enable mc
|
我要开录!
记录加群申请?
1
|
/list add <什么的加群申请日志> <添加到哪个 namespace>
|
1
|
/group log set approval <加群申请日志>
|
你还要看现在还在群里面的成员的加群申请?
1
|
/list add <在世成员> <添加到哪个 namespace>
|
1
|
/list add <在世成员的加群申请日志> <添加到哪个 namespace>
|
1
|
/list reset <在世成员的加群申请日志>
|
1
|
/group export member <在世成员>
|
1
|
/list op <加群申请日志> I <在世成员> <在世成员的加群申请日志>
|
这个 I
是 Intersect 的意思,也就是求交集。
1
|
/list query <在世成员的加群申请日志>
|
记录离群信息?
1
|
/list add <什么的离群日志> <添加到哪个 namespace>
|
1
|
/group log set leave <离群日志>
|
我要撤回!撤回!撤回!
撤回含有关键字的消息?
1
|
/list add <检查什么的关键字表> <添加到哪个 namespace>
|
1
|
/list join <关键字表> <关键字>
|
1
|
/group keyword enable blacklist
|
1
|
/group keyword add blacklist <关键字表>
|
反撤回?
1
|
/group message enable anti-recall
|
仅反撤回群成员的消息?
1
|
/group message set only-anti-recall-member
|
我要开导!
导出群成员信息?
1
|
/group export member <要导到哪个表啊?>
|
导出 list?
1
|
/list export <要导出哪个表啊?>
|
我要设置通知群!
通知自动审核的结果?
1
|
/group approval set notification <通知群的群号>
|
通知关键字撤回、反撤回?
1
|
/group message set notification <通知群的群号>
|
我会编程!!!
那我给个 Python 的调用示例?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
import requests
import hmac
import hashlib
import base64
import time
# config
token = "找 yijiong 要"
token_name = "找 yijiong 要"
# url
url = "找 yijiong 要"
def send_command(group_id: int, command: str, message_sync_bool: str = "false", async_bool: str = "false"):
timestamp = int(time.time())
# Create the signature
message = f"{token}{command}{group_id}{timestamp}{message_sync_bool}{async_bool}"
digest = hmac.new(token_name.encode(), message.encode(), digestmod=hashlib.sha1).digest()
signature = base64.b64encode(digest).decode()
# headers
headers = {
"Content-Type": "application/json"
}
# payload
payload = {
"token": token,
"command": command,
"group_id": group_id,
"message_sync": message_sync_bool,
"async": async_bool,
"timestamp": timestamp,
"signature": signature
}
# Make the request
response = requests.post(url, headers=headers, json=payload)
# Print the response
print(response.json())
# calm down
time.sleep(1)
def main():
send_command(0, "/list query xxx", "true")
if __name__ == '__main__':
main()
|