mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-15 09:10:00 +08:00
数据库中所有user_qq改名以及user_id和group_id改为字符串
This commit is contained in:
@@ -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
@@ -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);",
|
||||
]
|
||||
|
||||
@@ -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),
|
||||
)
|
||||
|
||||
@@ -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)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user