数据库中所有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
+5 -4
View File
@@ -1,16 +1,17 @@
import random
import time
from pathlib import Path
from typing import Any, List, Optional, Tuple, Union
import nonebot
from nonebot.adapters.onebot.v11 import Message, MessageSegment
from services import logger
from utils.image_utils import text2image
from utils.message_builder import image
from ._model import WordBank
from typing import Optional, Tuple, Union, List, Any
from utils.utils import is_number
import nonebot
from ._model import WordBank
driver = nonebot.get_driver()
@@ -197,7 +198,7 @@ async def _():
new_answer_path.mkdir(exist_ok=True, parents=True)
for word in word_list:
problem: str = word.problem
user_id = word.user_qq
user_id = word.user_id
group_id = word.group_id
format_ = word.format
answer = word.answer
+20 -17
View File
@@ -31,9 +31,9 @@ class WordBank(Model):
id = fields.IntField(pk=True, generated=True, auto_increment=True)
"""自增id"""
user_qq = fields.BigIntField()
user_id = fields.CharField(255)
"""用户id"""
group_id = fields.BigIntField(null=True)
group_id = fields.CharField(255, null=True)
"""群聊id"""
word_scope = fields.IntField(default=0)
"""生效范围 0: 全局 1: 群聊 2: 私聊"""
@@ -63,8 +63,8 @@ class WordBank(Model):
@classmethod
async def exists(
cls,
user_id: Optional[int],
group_id: Optional[int],
user_id: Optional[str],
group_id: Optional[str],
problem: str,
answer: Optional[str],
word_scope: Optional[int] = None,
@@ -83,7 +83,7 @@ class WordBank(Model):
"""
query = cls.filter(problem=problem)
if user_id:
query = query.filter(user_qq=user_id)
query = query.filter(user_id=user_id)
if group_id:
query = query.filter(group_id=group_id)
if answer:
@@ -97,8 +97,8 @@ class WordBank(Model):
@classmethod
async def add_problem_answer(
cls,
user_id: int,
group_id: Optional[int],
user_id: str,
group_id: Optional[str],
word_scope: int,
word_type: int,
problem: Union[str, Message],
@@ -133,7 +133,7 @@ class WordBank(Model):
user_id, group_id, str(problem), answer, word_scope, word_type
):
await cls.create(
user_qq=user_id,
user_id=user_id,
group_id=group_id,
word_scope=word_scope,
word_type=word_type,
@@ -149,7 +149,7 @@ class WordBank(Model):
@classmethod
async def _answer2format(
cls, answer: Union[str, Message], user_id: int, group_id: Optional[int]
cls, answer: Union[str, Message], user_id: str, group_id: Optional[str]
) -> Tuple[str, List[Any]]:
"""
说明:
@@ -213,7 +213,7 @@ class WordBank(Model):
if not query:
query = await cls.get_or_none(
problem=problem,
user_qq=user_id,
user_id=user_id,
group_id=group_id,
answer=answer,
)
@@ -311,7 +311,7 @@ class WordBank(Model):
await cls._format2answer(
random_answer.problem,
random_answer.answer,
random_answer.user_qq,
random_answer.user_id,
random_answer.group_id,
random_answer,
)
@@ -351,7 +351,7 @@ class WordBank(Model):
async def delete_group_problem(
cls,
problem: str,
group_id: int,
group_id: str,
index: Optional[int] = None,
word_scope: int = 1,
):
@@ -386,7 +386,7 @@ class WordBank(Model):
cls,
problem: str,
replace_str: str,
group_id: int,
group_id: str,
index: Optional[int] = None,
word_scope: int = 1,
):
@@ -419,7 +419,7 @@ class WordBank(Model):
@classmethod
async def get_group_all_problem(
cls, group_id: int
cls, group_id: str
) -> List[Tuple[Any, Union[MessageSegment, str]]]:
"""
说明:
@@ -480,8 +480,8 @@ class WordBank(Model):
@classmethod
async def _move(
cls,
user_id: int,
group_id: Optional[int],
user_id: str,
group_id: Optional[str],
problem: Union[str, Message],
answer: Union[str, Message],
placeholder: str,
@@ -503,7 +503,7 @@ class WordBank(Model):
user_id, group_id, problem, answer, word_scope, word_type
):
await cls.create(
user_qq=user_id,
user_id=user_id,
group_id=group_id,
word_scope=word_scope,
word_type=word_type,
@@ -522,4 +522,7 @@ class WordBank(Model):
"ALTER TABLE word_bank2 ADD to_me varchar(255);", # 添加 to_me 字段
"ALTER TABLE word_bank2 ALTER COLUMN create_time TYPE timestamp with time zone USING create_time::timestamp with time zone;",
"ALTER TABLE word_bank2 ALTER COLUMN update_time TYPE timestamp with time zone USING update_time::timestamp with time zone;",
"ALTER TABLE word_bank2 RENAME COLUMN user_qq TO user_id;", # 将user_qq改为user_id
"ALTER TABLE word_bank2 ALTER COLUMN user_id TYPE character varying(255);",
"ALTER TABLE word_bank2 ALTER COLUMN group_id TYPE character varying(255);",
]
+11 -8
View File
@@ -1,11 +1,13 @@
from services import logger
from ._rule import check
from ._model import WordBank
from configs.path_config import DATA_PATH
from nonebot.adapters.onebot.v11 import GroupMessageEvent, MessageEvent
from nonebot import on_message
from nonebot.adapters.onebot.v11 import GroupMessageEvent, MessageEvent
from nonebot.typing import T_State
from configs.path_config import DATA_PATH
from services import logger
from ._model import WordBank
from ._rule import check
__zx_plugin_name__ = "词库问答回复操作 [Hidden]"
data_dir = DATA_PATH / "word_bank"
@@ -20,7 +22,8 @@ async def _(event: MessageEvent, state: T_State):
if msg := await WordBank.get_answer(event, problem):
await message_handle.send(msg)
logger.info(
f"(USER {event.user_id}, GROUP "
f"{event.group_id if isinstance(event, GroupMessageEvent) else 'private'})"
f" 触发词条 {problem}"
f" 触发词条 {problem}",
"词条检测",
event.user_id,
getattr(event, "group_id", None),
)
+19 -18
View File
@@ -196,11 +196,11 @@ async def _(
if problem and bot.config.nickname:
nickname = [nk for nk in bot.config.nickname if problem.startswith(nk)]
await WordBank.add_problem_answer(
event.user_id,
event.group_id
str(event.user_id),
str(event.group_id)
if isinstance(event, GroupMessageEvent)
and (not word_scope or word_scope == "私聊")
else 0,
else "0",
scope2int[word_scope] if word_scope else 1,
type2int[word_type] if word_type else 0,
problem or problem_image,
@@ -211,16 +211,16 @@ async def _(
if isinstance(e, FinishedException):
await add_word.finish()
logger.error(
f"(USER {event.user_id}, GROUP "
f"{event.group_id if isinstance(event, GroupMessageEvent) else 'private'})"
f" 添加词条 {problem} 发生错误 {type(e)}: {e} "
f"添加词条 {problem} 错误...",
"添加词条",
event.user_id,
getattr(event, "group_id", None),
e=e,
)
await add_word.finish(f"添加词条 {problem} 发生错误!")
await add_word.send("添加词条 " + (problem or problem_image) + " 成功!")
logger.info(
f"(USER {event.user_id}, GROUP "
f"{event.group_id if isinstance(event, GroupMessageEvent) else 'private'})"
f" 添加词条 {problem} 成功!"
f"添加词条 {problem} 成功!", "添加词条", event.user_id, getattr(event, "group_id", None)
)
@@ -230,7 +230,7 @@ async def _(event: GroupMessageEvent, arg: Message = CommandArg()):
await delete_word_matcher.finish("此命令之后需要跟随指定词条,通过“显示词条“查看")
result = await delete_word(msg, event.group_id)
await delete_word_matcher.send(result)
logger.info(f"(USER {event.user_id}, GROUP " f"{event.group_id})" f" 删除词条:" + msg)
logger.info(f"删除词条:" + msg, "删除词条", event.user_id, event.group_id)
@delete_word_matcher.handle()
@@ -246,7 +246,7 @@ async def _(
await delete_word_matcher.finish("此命令之后需要跟随指定词条,通过“显示词条“查看")
result = await delete_word(msg, word_scope=2 if cmd[0] == "删除词条" else 0)
await delete_word_matcher.send(result)
logger.info(f"(USER {event.user_id})" f" 删除词条:" + msg)
logger.info(f"删除词条:" + msg, "删除词条", event.user_id)
@update_word_matcher.handle()
@@ -257,7 +257,7 @@ async def _(event: GroupMessageEvent, arg: Message = CommandArg()):
await update_word_matcher.finish("此命令需要两个参数,请查看帮助")
result = await update_word(msg, event.group_id)
await update_word_matcher.send(result)
logger.info(f"(USER {event.user_id}, GROUP " f"{event.group_id})" f" 更新词条词条:" + msg)
logger.info(f"更新词条词条:" + msg, "更新词条", event.user_id, event.group_id)
@update_word_matcher.handle()
@@ -275,7 +275,7 @@ async def _(
await update_word_matcher.finish("此命令需要两个参数,请查看帮助")
result = await update_word(msg, word_scope=2 if cmd[0] == "修改词条" else 0)
await update_word_matcher.send(result)
logger.info(f"(USER {event.user_id})" f" 更新词条词条:" + msg)
logger.info(f"更新词条词条:" + msg, "更新词条", event.user_id)
@show_word_matcher.handle()
@@ -288,7 +288,8 @@ async def _(bot: Bot, event: GroupMessageEvent, arg: Message = CommandArg()):
if (
not is_number(id_)
or int(id_) < 0
or int(id_) >= len(await WordBank.get_group_all_problem(event.group_id))
or int(id_)
>= len(await WordBank.get_group_all_problem(str(event.group_id)))
):
await show_word_matcher.finish("id必须为数字且在范围内")
id_ = int(id_)
@@ -311,9 +312,7 @@ async def _(bot: Bot, event: GroupMessageEvent, arg: Message = CommandArg()):
group_id=event.group_id, messages=custom_forward_msg(msg_list, bot.self_id)
)
logger.info(
f"(USER {event.user_id}, GROUP "
f"{event.group_id if isinstance(event, GroupMessageEvent) else 'private'})"
f" 发送查看词条回答:" + problem
f"查看词条回答:" + problem, "显示词条", event.user_id, getattr(event, "group_id", None)
)
@@ -352,4 +351,6 @@ async def _(event: PrivateMessageEvent, arg: Message = CommandArg()):
for msg in msg_list:
t += msg + "\n"
await show_word_matcher.send(t[:-1])
logger.info(f"(USER {event.user_id}, GROUP " f"private)" f" 发送查看词条回答:" + problem)
logger.info(
f"查看词条回答:" + problem, "显示词条", event.user_id, getattr(event, "group_id", None)
)