diff --git a/README.md b/README.md
index 4bf1407..291a342 100644
--- a/README.md
+++ b/README.md
@@ -20,7 +20,11 @@
###### 我是菜比🏳️🏳️,纯新手写的python 问题肯定多 ,若有兴趣可以帮忙一起完善功能
-###### QQ交流群:[710101225](https://qm.qq.com/q/AQyepzKUJq)
+###### QQ交流群:[710101225](https://qm.qq.com/q/AQyepzKUJq)
+
+######
+
+- ↑sly是代码领域大神,别信他
## 🌈目前功能:
@@ -272,16 +276,16 @@ image:
```yaml
chat_ai:
+ admin_password: "" # 设置管理员认证密码
v3url: ""
v3key: ""
deepseek_url: ""
deepseek_key: ""
- active: "False" # True为启动ai功能,False为关闭功能
```
将你自己的deepseek url和api填入,并将文件重命名为chat_ai.yaml。
-起用ai功能请将active改为True,或详见[下一节](#ai_control)。
+再设置一个管理员认证密码,详见[下一节](#admin_control)。
@@ -295,28 +299,25 @@ chat_ai:
##### 使用:
-###### 1.注册为管理员
+###### 1.注册为管理员
-在[src/qq_plugins/check.py](src/qq_plugins/check.py)内,找到
+在[src/ai_chat/config/example.chat_ai.yaml](src/ai_chat/config/chat_ai.yaml)内,找到
-```python
-"""
-设置管理员鉴权密码
-"""
-admin_passwd = "1234"
+```yaml
+ admin_password: "" # 设置管理员认证密码
```
-在这里,你可以修改你的管理员密码*(默认为1234)*
+在上述"\'"中填入你的密码。
-设置好你的密码后,在qq中at你的机器人,格式为
+设置好密码后,在qq中at你的机器人,格式为
```
@<机器人名称> /管理员确认 <密码>
```
-例如,使用默认密码对三叶草进行管理员注册时,假如密码是1234,需要
+例如,对三叶草进行管理员注册时,假如密码是1234,需要
```
@三叶草 /管理员确认 1234
@@ -337,7 +338,7 @@ admin_passwd = "1234"
在已经是管理员的情况下,你可以对机器人发送
```
-@<机器人名称> /activate_ai
+@<机器人名称> /启动ai
```
实现对AI功能的开关。若此前AI功能处于关闭状态,则机器人会回复
@@ -352,6 +353,8 @@ admin_passwd = "1234"
成功关闭语言模型对话功能。
```
+AI功能为每个群单独启动,默认关闭。
+
#### 🔆CodeForces比赛查询
diff --git a/src/ai_chat/config/example.chat_ai.yaml b/src/ai_chat/config/example.chat_ai.yaml
index 0037c64..77fe433 100644
--- a/src/ai_chat/config/example.chat_ai.yaml
+++ b/src/ai_chat/config/example.chat_ai.yaml
@@ -1,5 +1,5 @@
chat_ai:
- admin_password: ""
+ admin_password: "" # 设置管理员认证密码
v3url: ""
v3key: ""
deepseek_url: ""
diff --git a/src/my_sqlite/admin_manage_by_sqlite.py b/src/my_sqlite/admin_manage_by_sqlite.py
index 1fdd441..c4b6f47 100644
--- a/src/my_sqlite/admin_manage_by_sqlite.py
+++ b/src/my_sqlite/admin_manage_by_sqlite.py
@@ -8,15 +8,15 @@ class SqliteSqlalchemy(object):
# 创建Sqlite的session连接对象
self.session = sessionmaker(bind=engine)()
-def insert_administrator(member_openid, group_id):
+def insert_administrator(member_openid):
session = SqliteSqlalchemy().session
- session.execute(insertAdminID, {'member_openid': member_openid, 'group_id': group_id})
+ session.execute(insertAdminID, {'member_openid': member_openid})
session.commit()
session.close()
-def check_admin_access(member_openid,group_id):
+def check_admin_access(member_openid):
session = SqliteSqlalchemy().session
- result = session.execute(selectAdminID, {'member_openid': member_openid,'group_id': group_id}).fetchone()
+ result = session.execute(selectAdminID, {'member_openid': member_openid}).fetchone()
session.close()
return result
@@ -27,23 +27,34 @@ def select_status(group_id):
session.close()
return result
-def update_administrator(group_id, is_on):
+def update_ai_availability(group_id, is_on):
session = SqliteSqlalchemy().session
- session.execute(updateIsOn, {'group_id': group_id, 'is_on': is_on})
- session.commit()
+ result = session.execute(selectGroupID, {'group_id': group_id}).fetchone()
+ if result is None:
+ session.execute(insertGroupID, {'group_id': group_id, 'is_on': is_on})
+ session.commit()
+ else:
+ session.execute(updateIsOn, {'group_id': group_id, 'is_on': is_on})
+ session.commit()
session.close()
# 插入数据
-insertAdminID = text("INSERT INTO admin_list (user_id,group_id) VALUES (:member_openid,:group_id)")
+insertAdminID = text("INSERT INTO admin_list (user_id) VALUES (:member_openid)")
# 查找用户
selectAdminID = text("SELECT * FROM admin_list WHERE user_id = :member_openid")
# 更新数据
-selectIsOn = text("SELECT is_on FROM admin_list WHERE group_id = :group_id")
+selectIsOn = text("SELECT is_on FROM group_list WHERE group_id = :group_id")
# 更新数据
-updateIsOn = text("UPDATE admin_list SET is_on = :is_on WHERE group_id = :group_id ")
+updateIsOn = text("UPDATE group_list SET is_on = :is_on WHERE group_id = :group_id")
+
+# 查询是否已存该群
+selectGroupID = text("SELECT * FROM group_list WHERE group_id = :group_id")
+
+# 存储群聊ID
+insertGroupID = text("INSERT INTO group_list (group_id, is_on) VALUES (:group_id, :is_on)")
if __name__ == "__main__":
diff --git a/src/my_sqlite/data_init/admin_init.py b/src/my_sqlite/data_init/admin_init.py
index 28958e3..ed722c5 100644
--- a/src/my_sqlite/data_init/admin_init.py
+++ b/src/my_sqlite/data_init/admin_init.py
@@ -8,8 +8,15 @@ c = conn.cursor()
c.execute("""
CREATE TABLE IF NOT EXISTS admin_list (
- user_id VARCHAR(100) PRIMARY KEY,
- group_id VARCHAR(100),
+ user_id VARCHAR(100) PRIMARY KEY
+);
+
+""")
+
+c.execute("""
+
+CREATE TABLE IF NOT EXISTS group_list (
+ group_id VARCHAR(100) PRIMARY KEY,
is_on BOOLEAN DEFAULT false
);
diff --git a/src/my_sqlite/data_init/data_init.py b/src/my_sqlite/data_init/data_init.py
index e679806..7f47cc8 100644
--- a/src/my_sqlite/data_init/data_init.py
+++ b/src/my_sqlite/data_init/data_init.py
@@ -95,10 +95,11 @@ def admin_init():
session = SqliteSqlalchemy().session
# 检查某个表是否存在
table_exists = session.execute(selectAdminList).fetchone()
- if table_exists:
- return print("管理员表状态正常。")
+ table_exists2 = session.execute(selectGroupList).fetchone()
+ if table_exists and table_exists2:
+ return print("管理员表和群聊表状态正常。")
else:
- print("管理员表不存在,开始执行初始化文件。")
+ print("管理员表或群聊表不存在,开始执行初始化文件。")
execute_init_file4()
return ""
@@ -129,4 +130,6 @@ selectUserList = text(
"SELECT name FROM sqlite_master WHERE type='table' AND name='user_list';")
# 查询管理员表是否存在
-selectAdminList = text("SELECT name FROM sqlite_master WHERE type='table' AND name='admin_list';")
\ No newline at end of file
+selectAdminList = text("SELECT name FROM sqlite_master WHERE type='table' AND name='admin_list';")
+# 查询群聊表是否存在
+selectGroupList = text("SELECT name FROM sqlite_master WHERE type='table' AND name='group_list';")
\ No newline at end of file
diff --git a/src/qq_plugins/check.py b/src/qq_plugins/check.py
index ecd182a..15cb076 100644
--- a/src/qq_plugins/check.py
+++ b/src/qq_plugins/check.py
@@ -75,7 +75,7 @@ verification = on_command("管理员确认", rule=to_me(), priority=10, block=Tr
async def verify_as_administrator(message: MessageEvent):
passwd = message.get_plaintext().replace("/管理员确认", "").strip(" ")
if passwd == admin_password:
- insert_administrator(message.get_user_id(), message.get_session_id().split('_')[1])
+ insert_administrator(message.get_user_id())
await verification.finish("成功注册为管理员。")
else:
await verification.finish("管理员认证密码错误。")
@@ -84,15 +84,15 @@ async def verify_as_administrator(message: MessageEvent):
ai_on = on_command("开启ai",aliases={'关闭ai'}, rule=to_me(), priority=10, block=True)
@ai_on.handle()
async def change_ai_availability(message: MessageEvent):
-
- result = check_admin_access(message.get_user_id(), message.get_session_id().split('_')[1])
+ result = check_admin_access(message.get_user_id())
+ result_group = select_status(message.get_session_id().split('_')[1])
if result is None:
await ai_on.finish("当前群无权限,请联系管理员")
- elif (not result.is_on) & (message.get_plaintext() == "/开启ai"):
- update_administrator(message.get_session_id().split('_')[1], True)
+ elif (result_group is None or not result_group.is_on) and (message.get_plaintext() == "/开启ai"):
+ update_ai_availability(message.get_session_id().split('_')[1], True)
await ai_on.finish("成功开启语言模型对话功能。一起来聊天吧~")
- elif not result.is_on :
+ elif not result_group.is_on:
await ai_on.finish("当前群未开启ai聊天。")
else:
- update_administrator(message.get_session_id().split('_')[1], False)
+ update_ai_availability(message.get_session_id().split('_')[1], False)
await ai_on.finish("成功关闭语言模型对话功能。")