11
This commit is contained in:
+29
-2
@@ -35,7 +35,7 @@ class AsyncMySQL:
|
|||||||
return await cursor.fetchall()
|
return await cursor.fetchall()
|
||||||
|
|
||||||
async def execute(self, sql: str, params=None):
|
async def execute(self, sql: str, params=None):
|
||||||
"""执行单条 SQL(insert/update/delete)"""
|
"""执行 SQL(insert/update/delete)"""
|
||||||
await self.init_pool()
|
await self.init_pool()
|
||||||
async with self.pool.acquire() as conn:
|
async with self.pool.acquire() as conn:
|
||||||
async with conn.cursor() as cursor:
|
async with conn.cursor() as cursor:
|
||||||
@@ -53,7 +53,7 @@ class AsyncMySQL:
|
|||||||
return cursor.rowcount
|
return cursor.rowcount
|
||||||
|
|
||||||
async def truncate_table(self, table_name: str):
|
async def truncate_table(self, table_name: str):
|
||||||
"""清空指定表的内容"""
|
"""清空指定表"""
|
||||||
await self.init_pool()
|
await self.init_pool()
|
||||||
async with self.pool.acquire() as conn:
|
async with self.pool.acquire() as conn:
|
||||||
async with conn.cursor() as cursor:
|
async with conn.cursor() as cursor:
|
||||||
@@ -61,3 +61,30 @@ class AsyncMySQL:
|
|||||||
await cursor.execute(sql)
|
await cursor.execute(sql)
|
||||||
await conn.commit()
|
await conn.commit()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
# 新增:自动生成 SQL 的增删改功能
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
|
||||||
|
async def insert_record(self, table: str, data: dict):
|
||||||
|
"""插入记录:data 是 dict"""
|
||||||
|
keys = ", ".join(f"`{k}`" for k in data.keys())
|
||||||
|
placeholders = ", ".join(["%s"] * len(data))
|
||||||
|
sql = f"INSERT INTO `{table}` ({keys}) VALUES ({placeholders})"
|
||||||
|
return await self.execute(sql, tuple(data.values()))
|
||||||
|
|
||||||
|
async def update_record(self, table: str, data: dict, where: dict):
|
||||||
|
"""更新记录:data、where 都是 dict"""
|
||||||
|
set_clause = ", ".join(f"`{k}`=%s" for k in data.keys())
|
||||||
|
where_clause = " AND ".join(f"`{k}`=%s" for k in where.keys())
|
||||||
|
|
||||||
|
sql = f"UPDATE `{table}` SET {set_clause} WHERE {where_clause}"
|
||||||
|
|
||||||
|
params = tuple(data.values()) + tuple(where.values())
|
||||||
|
return await self.execute(sql, params)
|
||||||
|
|
||||||
|
async def delete_record(self, table: str, where: dict):
|
||||||
|
"""删除记录:where 是 dict"""
|
||||||
|
where_clause = " AND ".join(f"`{k}`=%s" for k in where.keys())
|
||||||
|
sql = f"DELETE FROM `{table}` WHERE {where_clause}"
|
||||||
|
return await self.execute(sql, tuple(where.values()))
|
||||||
|
|||||||
+75
-5
@@ -12,7 +12,68 @@ class WZRYFunction:
|
|||||||
self.__db = db
|
self.__db = db
|
||||||
self.__api_config = api_config
|
self.__api_config = api_config
|
||||||
|
|
||||||
async def zhanji(self,id: str ,option: str):
|
async def _SELECT_ID(self,name: str):
|
||||||
|
"""
|
||||||
|
查询ID
|
||||||
|
"""
|
||||||
|
sql = "SELECT id FROM wzydid WHERE name = %s or id = %s"
|
||||||
|
sqlid = await self.__db.fetch_one(sql, (name,name))
|
||||||
|
return sqlid["id"] if sqlid else None
|
||||||
|
|
||||||
|
async def all_user(self):
|
||||||
|
"""
|
||||||
|
查询所有用户
|
||||||
|
"""
|
||||||
|
sql = "SELECT id,name FROM wzydid"
|
||||||
|
sqlid = await self.__db.fetch_all(sql)
|
||||||
|
return_data = "营地ID\t\t昵称\n"
|
||||||
|
for m in sqlid:
|
||||||
|
return_data += f"{m['id']}\t{m['name']}\n"
|
||||||
|
return return_data
|
||||||
|
|
||||||
|
async def add_user(self,id: str ,name: str):
|
||||||
|
"""
|
||||||
|
添加用户
|
||||||
|
"""
|
||||||
|
self_id = await self._SELECT_ID(id)
|
||||||
|
if self_id is not None:
|
||||||
|
return "该用户已存在,无需重复添加"
|
||||||
|
sql = "INSERT INTO wzydid (id,name) VALUES (%s, %s)"
|
||||||
|
rowcount = await self.__db.execute(sql, (id,name))
|
||||||
|
if rowcount > 0:
|
||||||
|
return f"id:{id}昵称:{name}\n添加成功"
|
||||||
|
else:
|
||||||
|
return f"id:{id}昵称:{name}\n添加失败,请稍后再试"
|
||||||
|
|
||||||
|
async def update_user(self,id: str ,name: str):
|
||||||
|
"""
|
||||||
|
更新用户
|
||||||
|
"""
|
||||||
|
self_id = await self._SELECT_ID(id)
|
||||||
|
if self_id is None:
|
||||||
|
return "该用户不存在,请先添加用户"
|
||||||
|
sql = "UPDATE wzydid SET name = %s WHERE id = %s"
|
||||||
|
rowcount = await self.__db.execute(sql, (name,id))
|
||||||
|
if rowcount > 0:
|
||||||
|
return f"id:{id}昵称:{name}\n更新成功"
|
||||||
|
else:
|
||||||
|
return f"id:{id}昵称:{name}\n更新失败,请稍后再试"
|
||||||
|
|
||||||
|
async def delete_user(self,id: str ):
|
||||||
|
"""
|
||||||
|
删除用户
|
||||||
|
"""
|
||||||
|
self_id = await self._SELECT_ID(id)
|
||||||
|
if self_id is None:
|
||||||
|
return "该用户不存在,无需删除"
|
||||||
|
sql = "DELETE FROM wzydid WHERE id = %s"
|
||||||
|
rowcount = await self.__db.execute(sql, (id,))
|
||||||
|
if rowcount > 0:
|
||||||
|
return f"id:{id}\n删除成功"
|
||||||
|
else:
|
||||||
|
return f"id:{id}\n删除失败,请稍后再试"
|
||||||
|
|
||||||
|
async def zhanji(self,name: str ,option: str):
|
||||||
"""
|
"""
|
||||||
战绩查询
|
战绩查询
|
||||||
"""
|
"""
|
||||||
@@ -23,9 +84,15 @@ class WZRYFunction:
|
|||||||
}
|
}
|
||||||
#在配置文件中获取接口配置
|
#在配置文件中获取接口配置
|
||||||
api_config = self.__api_config["wzry_zhanji"]
|
api_config = self.__api_config["wzry_zhanji"]
|
||||||
|
# ID查询
|
||||||
|
sql_id = await self._SELECT_ID(name)
|
||||||
|
if sql_id is None:
|
||||||
|
return_data["msg"] = "未查询到该用户,请确认输入正确的昵称或营地ID"
|
||||||
|
return return_data
|
||||||
#更新参数
|
#更新参数
|
||||||
api_config["params"]["id"] = id
|
api_config["params"]["id"] = sql_id
|
||||||
api_config["params"]["option"] = option
|
api_config["params"]["option"] = option
|
||||||
|
# 需要提取的字段
|
||||||
fields = ["gametime","killcnt","deadcnt","assistcnt","gameresult","mvpcnt","losemvp","mapName",
|
fields = ["gametime","killcnt","deadcnt","assistcnt","gameresult","mvpcnt","losemvp","mapName",
|
||||||
"oldMasterMatchScore","newMasterMatchScore","usedTime","winNum","failNum","roleJobName","stars","desc",
|
"oldMasterMatchScore","newMasterMatchScore","usedTime","winNum","failNum","roleJobName","stars","desc",
|
||||||
"gradeGame","heroIcon"]
|
"gradeGame","heroIcon"]
|
||||||
@@ -37,7 +104,7 @@ class WZRYFunction:
|
|||||||
return_data["msg"] = "获取接口信息失败"
|
return_data["msg"] = "获取接口信息失败"
|
||||||
return return_data
|
return return_data
|
||||||
result = extract_fields(data["list"], fields)
|
result = extract_fields(data["list"], fields)
|
||||||
result = result[:15]
|
result = result[:20]
|
||||||
# 数据处理
|
# 数据处理
|
||||||
for m in result:
|
for m in result:
|
||||||
minutes = m["usedTime"] // 60
|
minutes = m["usedTime"] // 60
|
||||||
@@ -77,7 +144,7 @@ class WZRYFunction:
|
|||||||
return_data["code"] = 200
|
return_data["code"] = 200
|
||||||
return return_data
|
return return_data
|
||||||
|
|
||||||
async def ziliao(self,id: str):
|
async def ziliao(self,name: str):
|
||||||
"""
|
"""
|
||||||
资料查询
|
资料查询
|
||||||
"""
|
"""
|
||||||
@@ -86,10 +153,13 @@ class WZRYFunction:
|
|||||||
"msg": "功能函数未执行",
|
"msg": "功能函数未执行",
|
||||||
"data": {}
|
"data": {}
|
||||||
}
|
}
|
||||||
|
#id查询
|
||||||
|
sql = "SELECT id FROM wzydid WHERE name = %s or id = %s"
|
||||||
|
sqlid = await self.__db.fetch_one(sql, (name,name))
|
||||||
#在配置文件中获取接口配置
|
#在配置文件中获取接口配置
|
||||||
api_config = self.__api_config["wzry_ziliao"]
|
api_config = self.__api_config["wzry_ziliao"]
|
||||||
#更新参数
|
#更新参数
|
||||||
api_config["params"]["id"] = id
|
api_config["params"]["id"] = sqlid["id"]
|
||||||
# 处理返回数据
|
# 处理返回数据
|
||||||
try:
|
try:
|
||||||
# 获取数据
|
# 获取数据
|
||||||
|
|||||||
@@ -292,11 +292,53 @@ class Jx3ApiPlugin(Star):
|
|||||||
def wz(self):
|
def wz(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@wz.command("用户列表")
|
||||||
|
async def wz_yingdilist(self, event: AstrMessageEvent):
|
||||||
|
"""王者 用户列表"""
|
||||||
|
try:
|
||||||
|
data = await self.wzry.all_user()
|
||||||
|
logger.info(f"王者荣耀营地列表查询结果{data}")
|
||||||
|
yield event.plain_result(data)
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"功能函数执行错误: {e}")
|
||||||
|
yield event.plain_result("猪脑过载,请稍后再试")
|
||||||
|
|
||||||
|
@wz.command("添加用户")
|
||||||
|
async def wz_adduesr(self, event: AstrMessageEvent,id: str,name: str):
|
||||||
|
"""王者 添加用户"""
|
||||||
|
try:
|
||||||
|
data = await self.wzry.add_user(id,name)
|
||||||
|
yield event.plain_result(data)
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"功能函数执行错误: {e}")
|
||||||
|
yield event.plain_result("猪脑过载,请稍后再试")
|
||||||
|
|
||||||
|
@wz.command("修改用户")
|
||||||
|
async def wz_updateuser(self, event: AstrMessageEvent,id: str,name: str):
|
||||||
|
"""王者 修改用户"""
|
||||||
|
try:
|
||||||
|
data = await self.wzry.update_user(id,name)
|
||||||
|
yield event.plain_result(data)
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"功能函数执行错误: {e}")
|
||||||
|
yield event.plain_result("猪脑过载,请稍后再试")
|
||||||
|
|
||||||
|
@wz.command("删除用户")
|
||||||
|
async def wz_deleteuser(self, event: AstrMessageEvent,id: str):
|
||||||
|
"""王者 删除用户"""
|
||||||
|
try:
|
||||||
|
data = await self.wzry.delete_user(id)
|
||||||
|
yield event.plain_result(data)
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"功能函数执行错误: {e}")
|
||||||
|
yield event.plain_result("猪脑过载,请稍后再试")
|
||||||
|
|
||||||
@wz.command("战绩")
|
@wz.command("战绩")
|
||||||
async def wz_zhanji(self, event: AstrMessageEvent,ID: str = "489048724",option: str = "1"):
|
async def wz_zhanji(self, event: AstrMessageEvent,name: str = "飞翔大野猪",option: str = "0"):
|
||||||
"""王者 战绩 营地ID 对局类型"""
|
"""王者 战绩 营地ID 对局类型"""
|
||||||
try:
|
try:
|
||||||
data = await self.wzry.zhanji(ID,option)
|
data = await self.wzry.zhanji(name,option)
|
||||||
# logger.info(f"王者荣耀战绩查询结果{data}")
|
# logger.info(f"王者荣耀战绩查询结果{data}")
|
||||||
if data["code"] == 200:
|
if data["code"] == 200:
|
||||||
url = await self.html_render(data["temp"],{"data": data["data"]}, options={})
|
url = await self.html_render(data["temp"],{"data": data["data"]}, options={})
|
||||||
@@ -309,10 +351,10 @@ class Jx3ApiPlugin(Star):
|
|||||||
yield event.plain_result("猪脑过载,请稍后再试")
|
yield event.plain_result("猪脑过载,请稍后再试")
|
||||||
|
|
||||||
@wz.command("资料")
|
@wz.command("资料")
|
||||||
async def wz_ziliao(self, event: AstrMessageEvent,ID: str = "489048724"):
|
async def wz_ziliao(self, event: AstrMessageEvent,name: str = "489048724"):
|
||||||
"""王者 战绩 营地ID 对局类型"""
|
"""王者 战绩 营地ID 对局类型"""
|
||||||
try:
|
try:
|
||||||
data = await self.wzry.ziliao(ID)
|
data = await self.wzry.ziliao(name)
|
||||||
# logger.info(f"输出结果{data}")
|
# logger.info(f"输出结果{data}")
|
||||||
if data["code"] == 200:
|
if data["code"] == 200:
|
||||||
url = await self.html_render(data["temp"], data["data"], options={})
|
url = await self.html_render(data["temp"], data["data"], options={})
|
||||||
|
|||||||
Reference in New Issue
Block a user