modified: README.md
new file: app.py new file: config/config.toml new file: requirements.txt new file: run.bat new file: run.sh new file: src/__init__.py new file: src/file_store_api.py new file: src/mainprocess.py new file: src/modules/__init__.py new file: src/modules/plugin_modules.py new file: src/modules/user_modules.py new file: src/plugin_manager.py
This commit is contained in:
119
src/modules/user_modules.py
Normal file
119
src/modules/user_modules.py
Normal file
@ -0,0 +1,119 @@
|
||||
import json
|
||||
import requests
|
||||
import time
|
||||
import src.file_store_api as filer
|
||||
|
||||
config_m = filer.ConfigManager()
|
||||
url = config_m.load_config("config")
|
||||
mainurl = url.get("app").get("send_url")
|
||||
|
||||
class User:
|
||||
def __init__(self, user_id,url = mainurl):
|
||||
self.user_id = user_id
|
||||
self.url = url
|
||||
self.nickname = None
|
||||
self.get_name()
|
||||
self.messages = []
|
||||
self.signal = True
|
||||
self.db = filer.ChatManager()
|
||||
|
||||
|
||||
def get_name(self):
|
||||
"""
|
||||
获取用户的名称
|
||||
"""
|
||||
try:
|
||||
response = requests.post('{0}/ArkSharePeer'.format(self.url),json={'user_id':self.user_id})
|
||||
except:
|
||||
return 0
|
||||
if response.status_code == 200:
|
||||
# 解析返回的JSON数据
|
||||
response_data = response.json()
|
||||
# 检查是否有错误信息
|
||||
if response_data.get("status") == "ok":
|
||||
# 获取用户卡片信息
|
||||
ark_json = response_data.get("data", {})
|
||||
ark_msg_str = ark_json.get("arkMsg", "{}")
|
||||
try:
|
||||
ark_json = json.loads(ark_msg_str) # 字符串转字典
|
||||
except json.JSONDecodeError:
|
||||
ark_json = {}
|
||||
user_nick = ark_json.get("meta", {}).get("contact", {}).get("nickname")
|
||||
self.nickname = user_nick
|
||||
else:
|
||||
print(f"请求失败,错误信息: {response_data.get('errMsg')}")
|
||||
else:
|
||||
print(f"请求失败,状态码: {response.status_code}")
|
||||
|
||||
|
||||
def set_input_status(self, status):
|
||||
payload = json.dumps({
|
||||
"user_id": self.user_id,
|
||||
"event_type": status
|
||||
})
|
||||
headers = {
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
while self.signal:
|
||||
print(f"刷新 {self.nickname} 的输入状态为: {status}")
|
||||
requests.request("POST","{0}/set_input_status".format(self.url), headers=headers, data=payload)
|
||||
time.sleep(0.5)
|
||||
|
||||
def send_message(self, message):
|
||||
requests.post(url='{0}/send_private_msg'.format(self.url), json={'user_id':self.user_id, 'message':message})
|
||||
self.db.save_private_message(self,role = 'assistant',content=message)#保存发送的消息
|
||||
|
||||
class Group:
|
||||
def __init__(self, group_id,url = mainurl,user=None,users=None):
|
||||
self.url = url
|
||||
self.group_id = group_id
|
||||
self.current_user = user
|
||||
self.nickname = None
|
||||
self.get_group_name()
|
||||
self.users = users
|
||||
self.get_group_users()
|
||||
self.messages =[]
|
||||
self.db = filer.ChatManager()
|
||||
|
||||
def get_group_name(self):
|
||||
"""
|
||||
获取群组的名称
|
||||
"""
|
||||
try:
|
||||
response = requests.post('{0}/ArkSharePeer'.format(self.url), json={'group_id': self.group_id})
|
||||
except:
|
||||
return 0
|
||||
if response.status_code == 200:
|
||||
response_data = response.json()
|
||||
if response_data.get("status") == "ok":
|
||||
ark_json = response_data.get("data", {})
|
||||
ark_msg_str = ark_json.get("arkJson", "{}")
|
||||
try:
|
||||
ark_json = json.loads(ark_msg_str)
|
||||
except json.JSONDecodeError:
|
||||
ark_json = {}
|
||||
group_name = ark_json.get("meta", {}).get("contact", {}).get("nickname")
|
||||
self.nickname = group_name
|
||||
else:
|
||||
print(f"请求失败,错误信息: {response_data.get('errMsg')}")
|
||||
else:
|
||||
print(f"请求失败,状态码: {response.status_code}")
|
||||
|
||||
def get_group_users(self):
|
||||
try:
|
||||
response = requests.post('{0}/get_group_member_list'.format(self.url), json={'group_id':self.group_id,'no_cache': False})
|
||||
except:
|
||||
return 0
|
||||
if response.status_code == 200:
|
||||
response_data = response.json()
|
||||
if response_data.get("status") == "ok":
|
||||
group_users = response_data.get("data", {})
|
||||
self.users = group_users
|
||||
else:
|
||||
print(f"请求失败,错误信息: {response_data.get('errMsg')}")
|
||||
else:
|
||||
print(f"请求失败,状态码: {response.status_code}")
|
||||
|
||||
def send_message(self,message):
|
||||
requests.post(url='{0}/send_group_msg'.format(self.url), json={'group_id': self.group_id, 'message': message})
|
||||
self.db.save_group_message(self,'assistant',message, sender_id=0)#保存发送的消息
|
Reference in New Issue
Block a user