🐛 修复重复导入Trigger的问题

This commit is contained in:
Wuyi无疑 2023-02-15 01:12:12 +08:00
parent f44c651648
commit acf749c49f
10 changed files with 17 additions and 16 deletions

View File

@ -1,12 +1,12 @@
import random
import asyncio import asyncio
from typing import Union from typing import Union
import websockets.client import websockets.client
from msgspec import json as msgjson from msgspec import json as msgjson
from model import Message, MessageSend, MessageReceive
from websockets.exceptions import ConnectionClosedError from websockets.exceptions import ConnectionClosedError
from gsuid_core.models import Message, MessageSend, MessageReceive
class GsClient: class GsClient:
@classmethod @classmethod

View File

@ -4,10 +4,11 @@ import uvicorn
from server import gss from server import gss
from config import core_config from config import core_config
from handler import handle_event from handler import handle_event
from model import MessageReceive
from msgspec import json as msgjson from msgspec import json as msgjson
from fastapi import FastAPI, WebSocket, WebSocketDisconnect from fastapi import FastAPI, WebSocket, WebSocketDisconnect
from gsuid_core.models import MessageReceive
app = FastAPI() app = FastAPI()
HOST = core_config.get_config('HOST') HOST = core_config.get_config('HOST')
PORT = int(core_config.get_config('PORT')) PORT = int(core_config.get_config('PORT'))

View File

@ -3,9 +3,9 @@ import asyncio
from server import Bot from server import Bot
from trigger import Trigger from trigger import Trigger
from config import core_config from config import core_config
from model import MessageContent, MessageReceive
from gsuid_core.sv import SL from gsuid_core.sv import SL
from gsuid_core.models import MessageContent, MessageReceive
config_masters = core_config.get_config('masters') config_masters = core_config.get_config('masters')
config_superusers = core_config.get_config('superusers') config_superusers = core_config.get_config('superusers')
@ -41,9 +41,9 @@ async def handle_event(ws: Bot, msg: MessageReceive):
ws.user_id = msg.user_id ws.user_id = msg.user_id
ws.group_id = msg.group_id ws.group_id = msg.group_id
ws.user_type = msg.user_type ws.user_type = msg.user_type
await ws.send(f'[收到消息] {msg}') print(f'[收到消息] {msg}')
pending = [ pending = [
_check_command(ws, tr, message) _check_command(ws, SL.lst[sv].TL[tr], message)
for sv in SL.lst for sv in SL.lst
for tr in SL.lst[sv].TL for tr in SL.lst[sv].TL
if ( if (

View File

@ -1,6 +1,6 @@
from gsuid_core.sv import SV from gsuid_core.sv import SV
from gsuid_core.server import Bot from gsuid_core.server import Bot
from gsuid_core.model import MessageContent from gsuid_core.models import MessageContent
from .get_adv import char_adv, weapon_adv from .get_adv import char_adv, weapon_adv

View File

@ -2,7 +2,7 @@ import asyncio
from gsuid_core.sv import SL, SV from gsuid_core.sv import SL, SV
from gsuid_core.server import Bot from gsuid_core.server import Bot
from gsuid_core.model import MessageContent from gsuid_core.models import MessageContent
@SV('开关').on_prefix(('关闭', '开启')) @SV('开关').on_prefix(('关闭', '开启'))

View File

@ -3,7 +3,8 @@ from base64 import b64encode
from typing import List, Union from typing import List, Union
from PIL import Image from PIL import Image
from model import Message
from gsuid_core.models import Message
class MessageSegment: class MessageSegment:

View File

@ -7,7 +7,8 @@ from typing import Dict, List, Union, Optional
from fastapi import WebSocket from fastapi import WebSocket
from segment import MessageSegment from segment import MessageSegment
from msgspec import json as msgjson from msgspec import json as msgjson
from model import Message, MessageSend
from gsuid_core.models import Message, MessageSend
class Bot: class Bot:
@ -54,8 +55,6 @@ class GsServer:
plugin_path = plugin / '__init__.py' plugin_path = plugin / '__init__.py'
if plugin_path.exists(): if plugin_path.exists():
sys.path.append(str(plugin_path.parents)) sys.path.append(str(plugin_path.parents))
print(sys.path)
print(f'plugins.{plugin.name}.__init__')
importlib.import_module(f'plugins.{plugin.name}.__init__') importlib.import_module(f'plugins.{plugin.name}.__init__')
print(f'插件【{plugin.name}】加载成功!') print(f'插件【{plugin.name}】加载成功!')
if plugin.suffix == '.py': if plugin.suffix == '.py':

View File

@ -42,7 +42,7 @@ class SV:
# sv名称重复的sv名称将被并入一个sv里 # sv名称重复的sv名称将被并入一个sv里
self.name: str = name self.name: str = name
# sv内包含的触发器 # sv内包含的触发器
self.TL: List[Trigger] = [] self.TL: Dict[str, Trigger] = {}
self.is_initialized = True self.is_initialized = True
# 判断sv是否已持久化 # 判断sv是否已持久化
@ -91,8 +91,8 @@ class SV:
keyword_list = keyword keyword_list = keyword
if isinstance(keyword, str): if isinstance(keyword, str):
keyword_list = (keyword,) keyword_list = (keyword,)
trigger = [Trigger(type, _k, func) for _k in keyword_list] trigger = {_k: Trigger(type, _k, func) for _k in keyword_list}
self.TL.extend(trigger) self.TL.update(trigger)
@wraps(func) @wraps(func)
async def wrapper(bot, msg) -> Optional[Callable]: async def wrapper(bot, msg) -> Optional[Callable]:

View File

@ -1,6 +1,6 @@
from typing import Literal, Callable from typing import Literal, Callable
from model import MessageContent from gsuid_core.models import MessageContent
class Trigger: class Trigger: