This commit is contained in:
2025-03-04 20:48:27 +08:00
parent 1a5d161b5a
commit b0e71cf4f7
4192 changed files with 0 additions and 268307 deletions

View File

@@ -0,0 +1,330 @@
import pymysql
import nonebot
from nonebot.log import logger
config = nonebot.get_driver().config
db_host = getattr(config, 'db_host', '81.71.65.247')
db_user = getattr(config, 'db_user', 'root')
db_pass = getattr(config, 'db_pass', '<PASSWORD>')
db = getattr(config, 'db_name', 'aime')
def is_hex_string(s):
return all(c in {'e', '4', '1', '6', '7', 'c', '8', '2', '0', '5', 'b', 'd', 'a', 'f', '9', '3'} for c in s)
def find_chara_levels(all_chara_list, chara_slot_list):
"""
根据角色槽列表,从所有角色列表中找出对应角色的等级。
:param all_chara_list: 包含所有角色信息的列表,每个元素是一个字典,必须包含"characterId""level"键。
:param chara_slot_list: 包含角色槽ID的列表用于查找对应角色的等级。
:return: 一个整数列表表示对应角色槽的角色等级。如果某个角色槽没有对应的角色则该位置的等级为0。
"""
# 初始化角色等级列表长度与chara_slot_list相同
character_levels = [0] * len(chara_slot_list)
# {"characterId":101,"point":0,"useCount":2147483647,"level":9999,"nextAwake":0,"nextAwakePercent":0,"awakening":6}
# 创建一个角色ID到等级的映射以提高查找效率
chara_id_to_level = {}
for chara in all_chara_list:
chara_id = chara.get("characterId")
level = chara.get("level")
if chara_id is not None and level is not None:
chara_id_to_level[chara_id] = int(level)
# 使用映射更新角色槽的等级信息
for i, chara_slot in enumerate(chara_slot_list):
level = chara_id_to_level.get(chara_slot)
if level is not None:
character_levels[i] = level
return character_levels
def find_chara_awakening(all_chara_list, chara_slot_list):
"""
根据角色槽列表,从所有角色列表中找出对应角色的觉醒数。
:param all_chara_list: 包含所有角色信息的列表,每个元素是一个字典,必须包含"characterId""level"键。
:param chara_slot_list: 包含角色槽ID的列表用于查找对应角色的等级。
:return: 一个整数列表表示对应角色槽的角色等级。如果某个角色槽没有对应的角色则该位置的等级为0。
"""
# 初始化角色等级列表长度与chara_slot_list相同
character_awakening = [0] * len(chara_slot_list)
# {"characterId":101,"point":0,"useCount":2147483647,"level":9999,"nextAwake":0,"nextAwakePercent":0,"awakening":6}
# 创建一个角色ID到等级的映射以提高查找效率
chara_id_to_level = {}
for chara in all_chara_list:
chara_id = chara.get("characterId")
awakening = chara.get("awakening")
if chara_id is not None and awakening is not None:
chara_id_to_level[chara_id] = int(awakening)
# 使用映射更新角色槽的等级信息
for i, chara_slot in enumerate(chara_slot_list):
awakening = chara_id_to_level.get(chara_slot)
if awakening is not None:
character_awakening[i] = awakening
return character_awakening
def is_userid_exist(user_qq):
"""
根据QQ号查询userid是否在数据库内
:param user_qq: 用户QQ号
"""
conn = pymysql.connect(
host='81.71.65.247',
port=3306,
user='root',
passwd='root',
db='aime',
charset='utf8'
)
try:
with conn.cursor() as cursor:
logger.debug(f"开始查询数据库是否有QQ号:{user_qq}对应USER_ID")
sql = 'select * from id where qq = %s'
result = cursor.execute(sql, (user_qq,))
if result > 0:
logger.success("查询成功")
return True
else:
logger.success("查询无结果")
return False
except Exception as e:
logger.error(f"USER_ID查询失败:{e}")
return False
finally:
conn.close()
def del_user_id(user_qq, user_id):
"""
删除对应QQ的USERID
:param user_qq: 用户QQ号
:param user_id: 用户USER_ID
"""
conn = pymysql.connect(
host='81.71.65.247',
port=3306,
user='root',
passwd='root',
db='aime',
charset='utf8'
)
try:
with conn.cursor() as cursor:
logger.debug(f"开始删除QQ:{user_qq}对应USERID:{user_id}")
sql = 'delete from id where qq = %s'
cursor.execute(sql, (user_id,))
conn.commit()
logger.success("删除失败")
return True
except Exception as e:
logger.error(f"删除QQ:{user_qq}对应ID{user_id}失败:{e}")
return False
finally:
conn.close()
def del_user_token(user_qq, token):
"""
删除对应QQ的USER_TOKEN
:param user_qq: 用户QQ号
:param user_token: 用户USER_TOKEN
"""
conn = pymysql.connect(
host='81.71.65.247',
port=3306,
user='root',
passwd='root',
db='aime',
charset='utf8'
)
try:
with conn.cursor() as cursor:
logger.debug(f"开始删除QQ:{user_qq}对应USERID:{token}")
sql = 'delete from id where qq = %s'
cursor.execute(sql, (token,))
conn.commit()
logger.success("删除失败")
return True
except Exception as e:
logger.error(f"删除QQ:{user_qq}对应ID{token}失败:{e}")
return False
finally:
conn.close()
def save_user_id(user_qq, user_id):
"""
存入对应QQ号的USER_ID
:param user_qq: 用户QQ号
:param user_id: 用户USER_ID
"""
conn = pymysql.connect(
host='81.71.65.247',
port=3306,
user='root',
passwd='root',
db='aime',
charset='utf8'
)
try:
if not is_userid_exist(user_qq):
with conn.cursor() as cursor:
logger.debug(f"开始存入QQ:{user_qq}的USERID:{user_id}")
sql = 'insert into id (qq, userid) values (%s, %s)' % (user_qq, user_id)
cursor.execute(sql)
conn.commit()
logger.success("存入成功")
return 1
else:
return -1
except Exception as e:
logger.error(f"插入/更新QQ:{user_qq}对应USERID:{user_id}失败:{e}")
return -2
finally:
conn.close()
def get_userid(user_qq):
"""
根据QQ号查询userid
:param user_qq: 用户QQ号
"""
conn = pymysql.connect(
host='81.71.65.247',
port=3306,
user='root',
passwd='root',
db='aime',
charset='utf8'
)
try:
if is_userid_exist(user_qq):
with conn.cursor() as cursor:
logger.debug(f"开始获取QQ号:{user_qq}对应USER_ID")
sql = 'select * from id where qq = %s' % (user_qq)
cursor.execute(sql)
result = cursor.fetchall()
for row in result:
logger.success(f'获取QQ:{user_qq}对应USER_ID成功:{row[1]}')
return row[1]
else:
logger.error(f"QQ:{user_qq}不存在USER_ID")
return -1
except Exception as e:
logger.error(f"QQ:{user_qq}对应USER_ID获取失败:{e}")
return -1
finally:
conn.close()
def is_token_exist(user_qq):
"""
根据QQ号查询token是否在数据库内
:param user_qq: 用户QQ号
"""
conn = pymysql.connect(
host='81.71.65.247',
port=3306,
user='root',
passwd='root',
db='aime',
charset='utf8'
)
try:
with conn.cursor() as cursor:
logger.debug(f"开始查询数据库是否有QQ号:{user_qq}对应TOKEN")
sql = 'select * from diving where qq = %s'
result = cursor.execute(sql, (user_qq,))
if result > 0:
logger.success("查询成功")
return True
else:
logger.success("查询无结果")
return False
except Exception as e:
logger.error(f"USER_ID查询失败:{e}")
return False
finally:
conn.close()
def save_user_token(user_qq, token):
"""
存入对应QQ号的USER_ID
:param user_qq: 用户QQ号
:param user_token: 用户USER_TOKEN
"""
conn = pymysql.connect(
host='81.71.65.247',
port=3306,
user='root',
passwd='root',
db='aime',
charset='utf8'
)
try:
if not is_token_exist(user_qq):
with conn.cursor() as cursor:
logger.debug(f"开始存入QQ:{user_qq}的TOKEN:{token}")
sql = 'insert into diving (qq, token) values (%s, %s)' % (user_qq, f"'{token}'")
print(sql)
cursor.execute(sql)
conn.commit()
logger.success("存入成功")
return 1
else:
return -1
except Exception as e:
logger.error(f"插入/更新QQ:{user_qq}对应USERID:{token}失败:{e}")
return -2
finally:
conn.close()
def get_token(user_qq):
"""
根据QQ号查询token
:param user_qq: 用户QQ号
"""
conn = pymysql.connect(
host='81.71.65.247',
port=3306,
user='root',
passwd='root',
db='aime',
charset='utf8'
)
try:
if is_token_exist(user_qq):
with conn.cursor() as cursor:
logger.debug(f"开始获取QQ号:{user_qq}对应USER_ID")
sql = 'select * from diving where qq = %s' % (user_qq)
cursor.execute(sql)
result = cursor.fetchall()
for row in result:
logger.success(f'获取QQ:{user_qq}对应USER_ID成功:{row[1]}')
return row[1]
else:
logger.error(f"QQ:{user_qq}不存在USER_ID")
return -1
except Exception as e:
logger.error(f"QQ:{user_qq}对应USER_ID获取失败:{e}")
return -1
finally:
conn.close()