mirror of
				https://github.com/LiteyukiStudio/LiteyukiBot.git
				synced 2025-10-31 19:36:24 +00:00 
			
		
		
		
	fix: 数据库支持
This commit is contained in:
		| @@ -1,38 +1,35 @@ | ||||
| import sys | ||||
| from typing import Optional | ||||
|  | ||||
| import nonebot | ||||
| from nonebot import on_message, require | ||||
|  | ||||
| from nonebot.plugin import PluginMetadata | ||||
|  | ||||
| from liteyuki.utils.data import LiteModel | ||||
| from liteyuki.utils.message import send_markdown | ||||
| from liteyuki.utils.data import Database, LiteModel | ||||
| from liteyuki.utils.ly_typing import T_Bot, T_MessageEvent | ||||
| from liteyuki.utils.data import Database | ||||
| from liteyuki.utils.message import send_markdown | ||||
|  | ||||
| require("nonebot_plugin_alconna") | ||||
| from nonebot_plugin_alconna import on_alconna | ||||
| from arclet.alconna import Arparma, Alconna, Args, Option, Subcommand, Arg | ||||
| from arclet.alconna import Arparma, Alconna, Args, Option, Subcommand | ||||
|  | ||||
|  | ||||
| class Node(LiteModel): | ||||
|     bot_id: str | ||||
|     session_type: str | ||||
|     session_id: str | ||||
|     TABLE_NAME = "node" | ||||
|     bot_id: str = "" | ||||
|     session_type: str = "" | ||||
|     session_id: str = "" | ||||
|  | ||||
|     def __str__(self): | ||||
|         return f"{self.bot_id}.{self.session_type}.{self.session_id}" | ||||
|  | ||||
|  | ||||
| class Push(LiteModel): | ||||
|     source: Node | ||||
|     target: Node | ||||
|     inde: int | ||||
|     TABLE_NAME = "push" | ||||
|     source: Node = Node() | ||||
|     target: Node = Node() | ||||
|     inde: int = 0 | ||||
|  | ||||
|  | ||||
| pushes_db = Database("data/pushes.ldb") | ||||
| pushes_db.auto_migrate(Push, Node) | ||||
| pushes_db.auto_migrate(Push(), Node()) | ||||
|  | ||||
| alc = Alconna( | ||||
|     "lep", | ||||
| @@ -67,7 +64,7 @@ async def _(result: Arparma): | ||||
|             push1 = Push( | ||||
|                 source=Node(bot_id=source[0], session_type=source[1], session_id=source[2]), | ||||
|                 target=Node(bot_id=target[0], session_type=target[1], session_id=target[2]), | ||||
|                 inde=len(pushes_db.all(Push, default=[])) | ||||
|                 inde=len(pushes_db.all(Push(), default=[])) | ||||
|             ) | ||||
|             pushes_db.upsert(push1) | ||||
|  | ||||
| @@ -75,7 +72,7 @@ async def _(result: Arparma): | ||||
|                 push2 = Push( | ||||
|                     source=Node(bot_id=target[0], session_type=target[1], session_id=target[2]), | ||||
|                     target=Node(bot_id=source[0], session_type=source[1], session_id=source[2]), | ||||
|                     inde=len(pushes_db.all(Push, default=[])) | ||||
|                     inde=len(pushes_db.all(Push(), default=[])) | ||||
|                 ) | ||||
|                 pushes_db.upsert(push2) | ||||
|             await add_push.finish("添加成功") | ||||
| @@ -85,7 +82,7 @@ async def _(result: Arparma): | ||||
|         index = result.subcommands["rm"].args.get("index") | ||||
|         if index is not None: | ||||
|             try: | ||||
|                 pushes_db.delete(Push, "inde = ?", index) | ||||
|                 pushes_db.delete(Push(), "inde = ?", index) | ||||
|                 await add_push.finish("删除成功") | ||||
|             except IndexError: | ||||
|                 await add_push.finish("索引错误") | ||||
| @@ -95,19 +92,19 @@ async def _(result: Arparma): | ||||
|         await add_push.finish( | ||||
|             "\n".join([f"{push.inde} {push.source.bot_id}.{push.source.session_type}.{push.source.session_id} -> " | ||||
|                        f"{push.target.bot_id}.{push.target.session_type}.{push.target.session_id}" for i, push in | ||||
|                        enumerate(pushes_db.all(Push, default=[]))])) | ||||
|                        enumerate(pushes_db.all(Push(), default=[]))])) | ||||
|     else: | ||||
|         await add_push.finish("参数错误") | ||||
|  | ||||
|  | ||||
| @on_message(block=False).handle() | ||||
| async def _(event: T_MessageEvent, bot: T_Bot): | ||||
|     for push in pushes_db.all(Push, default=[]): | ||||
|     for push in pushes_db.all(Push(), default=[]): | ||||
|         if str(push.source) == f"{bot.self_id}.{event.message_type}.{event.user_id if event.message_type == 'private' else event.group_id}": | ||||
|             bot2 = nonebot.get_bot(push.target.bot_id) | ||||
|             msg_formatted = "" | ||||
|             for l in str(event.message).split("\n"): | ||||
|                 msg_formatted += f"**{l.strip()}**\n" | ||||
|             for line in str(event.message).split("\n"): | ||||
|                 msg_formatted += f"**{line.strip()}**\n" | ||||
|             push_message = ( | ||||
|                     f"> From {event.sender.nickname}@{push.source.session_type}.{push.source.session_id}\n> Bot {bot.self_id}\n\n" | ||||
|                     f"{msg_formatted}") | ||||
|   | ||||
		Reference in New Issue
	
	Block a user