数据库中所有user_qq改名以及user_id和group_id改为字符串

This commit is contained in:
HibiKier
2023-05-22 20:56:42 +08:00
parent 0d3c6d8684
commit 848de7f4fe
68 changed files with 1103 additions and 645 deletions
@@ -13,7 +13,7 @@ class Genshin(Model):
id = fields.IntField(pk=True, generated=True, auto_increment=True)
"""自增id"""
user_qq = fields.BigIntField()
user_id = fields.CharField(255)
"""用户id"""
uid = fields.BigIntField()
"""uid"""
@@ -43,7 +43,7 @@ class Genshin(Model):
class Meta:
table = "genshin"
table_description = "原神数据表"
unique_together = ("user_qq", "uid")
unique_together = ("user_id", "uid")
@classmethod
async def random_sign_time(cls, uid: int) -> Optional[datetime]:
@@ -103,4 +103,6 @@ class Genshin(Model):
"ALTER TABLE genshin ADD login_ticket VARCHAR(255) DEFAULT '';",
"ALTER TABLE genshin ADD stuid VARCHAR(255) DEFAULT '';",
"ALTER TABLE genshin ADD stoken VARCHAR(255) DEFAULT '';",
"ALTER TABLE genshin RENAME COLUMN user_qq TO user_id;", # 将user_qq改为user_id
"ALTER TABLE genshin ALTER COLUMN user_id TYPE character varying(255);",
]
+4 -4
View File
@@ -55,7 +55,7 @@ bbs_Cookie_url2 = (
@bind.handle()
async def _(event: MessageEvent, cmd: str = OneCommand(), arg: Message = CommandArg()):
msg = arg.extract_plain_text().strip()
user = await Genshin.get_or_none(user_qq=event.user_id)
user = await Genshin.get_or_none(user_id=str(event.user_id))
if cmd in ["原神绑定uid", "原神绑定米游社id"]:
if not is_number(msg):
await bind.finish("uid/id必须为纯数字!", at_senders=True)
@@ -63,9 +63,9 @@ async def _(event: MessageEvent, cmd: str = OneCommand(), arg: Message = Command
if cmd == "原神绑定uid":
if user:
await bind.finish(f"您已绑定过uid:{user.uid},如果希望更换uid,请先发送原神解绑")
if await Genshin.get_or_none(user_qq=event.user_id, uid=msg):
if await Genshin.get_or_none(user_id=str(event.user_id), uid=msg):
await bind.finish("添加失败,该uid可能已存在...")
user = await Genshin.create(user_qq=event.user_id, uid=msg)
user = await Genshin.create(user_id=str(event.user_id), uid=msg)
_x = f"已成功添加原神uid:{msg}"
elif cmd == "原神绑定米游社id":
if not user:
@@ -144,7 +144,7 @@ async def _(event: MessageEvent, cmd: str = OneCommand(), arg: Message = Command
@unbind.handle()
async def _(event: MessageEvent):
await Genshin.filter(user_qq=event.user_id).delete()
await Genshin.filter(user_id=str(event.user_id)).delete()
await unbind.send("用户数据删除成功...")
logger.info(
f"(USER {event.user_id}, GROUP "
@@ -43,7 +43,7 @@ genshin_matcher = on_command(
@genshin_matcher.handle()
async def _(event: MessageEvent, cmd: str = OneCommand()):
user = await Genshin.get_or_none(user_qq=event.user_id)
user = await Genshin.get_or_none(user_id=str(event.user_id))
if not user:
await genshin_matcher.finish("请先绑定user.uid...")
if cmd == "查看我的cookie":
@@ -31,11 +31,11 @@ async def _():
_sign,
"date",
run_date=date.replace(microsecond=0),
id=f"genshin_auto_sign_{u.uid}_{u.user_qq}_0",
args=[u.user_qq, u.uid, 0],
id=f"genshin_auto_sign_{u.uid}_{u.user_id}_0",
args=[u.user_id, u.uid, 0],
)
logger.info(
f"genshin_sign add_job:USER:{u.user_qq} UID:{u.uid} "
f"genshin_sign add_job:USER:{u.user_id} UID:{u.uid} "
f"{date} 原神自动签到"
)
@@ -47,7 +47,7 @@ async def _(event: MessageEvent, cmd: Tuple[str, ...] = Command()):
async def mihoyobbs_sign(user_id):
user = await Genshin.get_or_none(user_qq=user_id)
user = await Genshin.get_or_none(user_id=str(user_id))
if not user or not user.uid or not user.cookie:
await mihoyobbs_matcher.finish("请先绑定uid和cookie!", at_sender=True)
bbs = mihoyobbs.Mihoyobbs(stuid=user.stuid, stoken=user.stoken, cookie=user.cookie)
@@ -35,7 +35,7 @@ query_memo_matcher = on_command(
@query_memo_matcher.handle()
async def _(event: MessageEvent):
user = await Genshin.get_or_none(user_qq=event.user_id)
user = await Genshin.get_or_none(user_id=str(event.user_id))
if not user or not user.uid or not user.cookie:
await query_memo_matcher.finish("请先绑定uid和cookie!")
if isinstance(event, GroupMessageEvent):
@@ -44,7 +44,7 @@ async def _(event: MessageEvent, arg: Message = CommandArg()):
await query_role_info_matcher.finish("查询uid必须为数字!")
msg = int(msg)
uid = None
user = await Genshin.get_or_none(user_qq=event.user_id)
user = await Genshin.get_or_none(user_id=str(event.user_id))
if not msg and user:
uid = user.uid
else:
@@ -52,7 +52,7 @@ resin_remind = on_command("开原神树脂提醒", aliases={"关原神树脂提
@resin_remind.handle()
async def _(event: MessageEvent, cmd: str = OneCommand()):
user = await Genshin.get_or_none(user_qq=event.user_id)
user = await Genshin.get_or_none(user_id=str(event.user_id))
if not user or not user.uid or not user.cookie:
await resin_remind.finish("请先绑定uid和cookie!")
try:
@@ -88,35 +88,27 @@ async def _():
if u.resin_recovery_time and u.resin_recovery_time > datetime.now(
pytz.timezone("Asia/Shanghai")
):
# date = await Genshin.get_user_resin_recovery_time(u.uid) # 不能要,因为可能在这期间用户使用了树脂
add_job(u.user_qq, u.uid)
# scheduler.add_job(
# _remind,
# "date",
# run_date=date.replace(microsecond=0),
# id=f"genshin_resin_remind_{u.uid}_{u.user_qq}",
# args=[u.user_qq, u.uid],
# )
add_job(u.user_id, u.uid)
logger.info(
f"genshin_resin_remind add_job:USER:{u.user_qq} UID:{u.uid}启动原神树脂提醒 "
f"genshin_resin_remind add_job:USER:{u.user_id} UID:{u.uid}启动原神树脂提醒 "
)
else:
u.resin_recovery_time = None # type: ignore
update_list.append(u)
add_job(u.user_qq, u.uid)
add_job(u.user_id, u.uid)
logger.info(
f"genshin_resin_remind add_job CHECK:USER:{u.user_qq} UID:{u.uid}启动原神树脂提醒 "
f"genshin_resin_remind add_job CHECK:USER:{u.user_id} UID:{u.uid}启动原神树脂提醒 "
)
else:
add_job(u.user_qq, u.uid)
add_job(u.user_id, u.uid)
logger.info(
f"genshin_resin_remind add_job CHECK:USER:{u.user_qq} UID:{u.uid}启动原神树脂提醒 "
f"genshin_resin_remind add_job CHECK:USER:{u.user_id} UID:{u.uid}启动原神树脂提醒 "
)
if update_list:
await Genshin.bulk_update(update_list, ["resin_recovery_time"])
def add_job(user_id: int, uid: int):
def add_job(user_id: str, uid: int):
# 移除
try:
scheduler.remove_job(f"genshin_resin_remind_{uid}_{user_id}")
@@ -136,7 +128,7 @@ def add_job(user_id: int, uid: int):
async def _remind(user_id: int, uid: str):
user = await Genshin.get_or_none(user_qq=user_id, uid=int(uid))
user = await Genshin.get_or_none(user_id=str(user_id), uid=int(uid))
uid = str(uid)
if uid[0] in ["1", "2"]:
server_id = "cn_gf01"