mirror of
https://github.com/KimigaiiWuyi/GenshinUID.git
synced 2025-05-12 06:55:58 +08:00
✨ 支持file
字段的Message
This commit is contained in:
parent
a337ee3c7b
commit
bb341cae07
@ -8,11 +8,12 @@ from nonebot.internal.adapter import Event
|
|||||||
from nonebot import get_driver, on_message, on_fullmatch
|
from nonebot import get_driver, on_message, on_fullmatch
|
||||||
|
|
||||||
from .client import GsClient
|
from .client import GsClient
|
||||||
from .auto_install import install
|
from .auto_install import start, install
|
||||||
from .models import Message, MessageReceive
|
from .models import Message, MessageReceive
|
||||||
|
|
||||||
get_message = on_message(priority=999)
|
get_message = on_message(priority=999)
|
||||||
install_core = on_fullmatch('gs一键安装', permission=SUPERUSER, block=True)
|
install_core = on_fullmatch('gs一键安装', permission=SUPERUSER, block=True)
|
||||||
|
start_core = on_fullmatch('启动core', permission=SUPERUSER, block=True)
|
||||||
connect_core = on_fullmatch(
|
connect_core = on_fullmatch(
|
||||||
('连接core', '链接core'), permission=SUPERUSER, block=True
|
('连接core', '链接core'), permission=SUPERUSER, block=True
|
||||||
)
|
)
|
||||||
@ -135,11 +136,16 @@ async def send_install_msg(matcher: Matcher):
|
|||||||
|
|
||||||
|
|
||||||
@connect_core.handle()
|
@connect_core.handle()
|
||||||
async def send_start_msg(matcher: Matcher):
|
async def send_connect_msg(matcher: Matcher):
|
||||||
await connect()
|
await connect()
|
||||||
await matcher.send('链接成功!')
|
await matcher.send('链接成功!')
|
||||||
|
|
||||||
|
|
||||||
|
@start_core.handle()
|
||||||
|
async def send_start_msg(matcher: Matcher):
|
||||||
|
await matcher.send(await start())
|
||||||
|
|
||||||
|
|
||||||
@driver.on_bot_connect
|
@driver.on_bot_connect
|
||||||
async def start_client():
|
async def start_client():
|
||||||
if gsclient is None:
|
if gsclient is None:
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
|
import os
|
||||||
import base64
|
import base64
|
||||||
import asyncio
|
import asyncio
|
||||||
|
from pathlib import Path
|
||||||
from typing import Any, Dict, List, Union, Optional
|
from typing import Any, Dict, List, Union, Optional
|
||||||
|
|
||||||
import websockets.client
|
import websockets.client
|
||||||
@ -65,6 +67,7 @@ class GsClient:
|
|||||||
content = ''
|
content = ''
|
||||||
image: Optional[str] = None
|
image: Optional[str] = None
|
||||||
node = []
|
node = []
|
||||||
|
file = ''
|
||||||
if msg.content:
|
if msg.content:
|
||||||
for _c in msg.content:
|
for _c in msg.content:
|
||||||
if _c.data:
|
if _c.data:
|
||||||
@ -77,6 +80,8 @@ class GsClient:
|
|||||||
getattr(logger, _type)(_c.data)
|
getattr(logger, _type)(_c.data)
|
||||||
elif _c.type == 'node':
|
elif _c.type == 'node':
|
||||||
node = _c.data
|
node = _c.data
|
||||||
|
elif _c.type == 'file':
|
||||||
|
file = _c.data
|
||||||
else:
|
else:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@ -88,13 +93,14 @@ class GsClient:
|
|||||||
content,
|
content,
|
||||||
image,
|
image,
|
||||||
node,
|
node,
|
||||||
|
file,
|
||||||
msg.target_id,
|
msg.target_id,
|
||||||
msg.target_type,
|
msg.target_type,
|
||||||
)
|
)
|
||||||
# ntchat
|
# ntchat
|
||||||
elif msg.bot_id == 'ntchat':
|
elif msg.bot_id == 'ntchat':
|
||||||
await ntchat_send(
|
await ntchat_send(
|
||||||
bot, content, image, node, msg.target_id
|
bot, content, image, file, node, msg.target_id
|
||||||
)
|
)
|
||||||
# 频道
|
# 频道
|
||||||
elif msg.bot_id == 'qqguild':
|
elif msg.bot_id == 'qqguild':
|
||||||
@ -112,6 +118,7 @@ class GsClient:
|
|||||||
bot,
|
bot,
|
||||||
content,
|
content,
|
||||||
image,
|
image,
|
||||||
|
file,
|
||||||
node,
|
node,
|
||||||
msg.target_id,
|
msg.target_id,
|
||||||
)
|
)
|
||||||
@ -120,6 +127,7 @@ class GsClient:
|
|||||||
bot,
|
bot,
|
||||||
content,
|
content,
|
||||||
image,
|
image,
|
||||||
|
file,
|
||||||
node,
|
node,
|
||||||
msg.target_id,
|
msg.target_id,
|
||||||
msg.target_type,
|
msg.target_type,
|
||||||
@ -157,11 +165,23 @@ def to_json(msg: str, name: str, uin: int):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def store_file(path: Path, file: str):
|
||||||
|
file_content = base64.b64decode(file).decode()
|
||||||
|
with open(path, 'w') as f:
|
||||||
|
f.write(file_content)
|
||||||
|
|
||||||
|
|
||||||
|
def del_file(path: Path):
|
||||||
|
if path.exists():
|
||||||
|
os.remove(path)
|
||||||
|
|
||||||
|
|
||||||
async def onebot_send(
|
async def onebot_send(
|
||||||
bot: Bot,
|
bot: Bot,
|
||||||
content: Optional[str],
|
content: Optional[str],
|
||||||
image: Optional[str],
|
image: Optional[str],
|
||||||
node: Optional[List[Dict]],
|
node: Optional[List[Dict]],
|
||||||
|
file: Optional[str],
|
||||||
target_id: Optional[str],
|
target_id: Optional[str],
|
||||||
target_type: Optional[str],
|
target_type: Optional[str],
|
||||||
):
|
):
|
||||||
@ -169,6 +189,27 @@ async def onebot_send(
|
|||||||
result_image = f'[CQ:image,file={image}]' if image else ''
|
result_image = f'[CQ:image,file={image}]' if image else ''
|
||||||
content = content if content else ''
|
content = content if content else ''
|
||||||
result_msg = content + result_image
|
result_msg = content + result_image
|
||||||
|
|
||||||
|
if file:
|
||||||
|
file_name, file_content = file.split('|')
|
||||||
|
path = Path(__file__).resolve().parent / file_name
|
||||||
|
store_file(path, file_content)
|
||||||
|
if target_type == 'group':
|
||||||
|
await bot.call_api(
|
||||||
|
'upload_group_file',
|
||||||
|
file=str(path.absolute()),
|
||||||
|
name=file_name,
|
||||||
|
group_id=target_id,
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
await bot.call_api(
|
||||||
|
'upload_private_file',
|
||||||
|
file=str(path.absolute()),
|
||||||
|
name=file_name,
|
||||||
|
user_id=target_id,
|
||||||
|
)
|
||||||
|
del_file(path)
|
||||||
|
else:
|
||||||
if target_type == 'group':
|
if target_type == 'group':
|
||||||
await bot.call_api(
|
await bot.call_api(
|
||||||
'send_group_msg',
|
'send_group_msg',
|
||||||
@ -259,6 +300,7 @@ async def ntchat_send(
|
|||||||
bot: Bot,
|
bot: Bot,
|
||||||
content: Optional[str],
|
content: Optional[str],
|
||||||
image: Optional[str],
|
image: Optional[str],
|
||||||
|
file: Optional[str],
|
||||||
node: Optional[List[Dict]],
|
node: Optional[List[Dict]],
|
||||||
target_id: Optional[str],
|
target_id: Optional[str],
|
||||||
):
|
):
|
||||||
@ -275,6 +317,16 @@ async def ntchat_send(
|
|||||||
to_wxid=target_id,
|
to_wxid=target_id,
|
||||||
file_path=image,
|
file_path=image,
|
||||||
)
|
)
|
||||||
|
if file:
|
||||||
|
file_name, file_content = file.split('|')
|
||||||
|
path = Path(__file__).resolve().parent / file_name
|
||||||
|
store_file(path, file_content)
|
||||||
|
await bot.call_api(
|
||||||
|
'send_file',
|
||||||
|
to_wxid=target_id,
|
||||||
|
file_path=str(path.absolute()),
|
||||||
|
)
|
||||||
|
del_file(path)
|
||||||
|
|
||||||
if node:
|
if node:
|
||||||
for _msg in node:
|
for _msg in node:
|
||||||
@ -290,6 +342,7 @@ async def kaiheila_send(
|
|||||||
bot: Bot,
|
bot: Bot,
|
||||||
content: Optional[str],
|
content: Optional[str],
|
||||||
image: Optional[str],
|
image: Optional[str],
|
||||||
|
file: Optional[str],
|
||||||
node: Optional[List[Dict]],
|
node: Optional[List[Dict]],
|
||||||
target_id: Optional[str],
|
target_id: Optional[str],
|
||||||
target_type: Optional[str],
|
target_type: Optional[str],
|
||||||
@ -302,6 +355,14 @@ async def kaiheila_send(
|
|||||||
url = await bot.upload_file(img_bytes, 'GSUID-TEMP') # type:ignore
|
url = await bot.upload_file(img_bytes, 'GSUID-TEMP') # type:ignore
|
||||||
result['type'] = 2
|
result['type'] = 2
|
||||||
result['content'] = url
|
result['content'] = url
|
||||||
|
elif file:
|
||||||
|
file_name, file_content = file.split('|')
|
||||||
|
path = Path(__file__).resolve().parent / file_name
|
||||||
|
store_file(path, file_content)
|
||||||
|
with open(path, 'rb') as f:
|
||||||
|
doc = f.read()
|
||||||
|
url = await bot.upload_file(doc, file_name) # type:ignore
|
||||||
|
result['content'] = url
|
||||||
else:
|
else:
|
||||||
result['content'] = content
|
result['content'] = content
|
||||||
|
|
||||||
@ -327,6 +388,7 @@ async def telegram_send(
|
|||||||
bot: Bot,
|
bot: Bot,
|
||||||
content: Optional[str],
|
content: Optional[str],
|
||||||
image: Optional[str],
|
image: Optional[str],
|
||||||
|
file: Optional[str],
|
||||||
node: Optional[List[Dict]],
|
node: Optional[List[Dict]],
|
||||||
target_id: Optional[str],
|
target_id: Optional[str],
|
||||||
):
|
):
|
||||||
@ -337,10 +399,20 @@ async def telegram_send(
|
|||||||
result['photo'] = img_bytes
|
result['photo'] = img_bytes
|
||||||
if content:
|
if content:
|
||||||
result['text'] = content
|
result['text'] = content
|
||||||
|
if file:
|
||||||
|
file_name, file_content = file.split('|')
|
||||||
|
path = Path(__file__).resolve().parent / file_name
|
||||||
|
store_file(path, file_content)
|
||||||
|
with open(path, 'rb') as f:
|
||||||
|
doc = f.read()
|
||||||
|
result['document'] = doc
|
||||||
|
|
||||||
if content:
|
if content:
|
||||||
await bot.call_api('send_message', chat_id=target_id, **result)
|
await bot.call_api('send_message', chat_id=target_id, **result)
|
||||||
if image:
|
if image:
|
||||||
await bot.call_api('send_photo', chat_id=target_id, **result)
|
await bot.call_api('send_photo', chat_id=target_id, **result)
|
||||||
|
if file:
|
||||||
|
await bot.call_api('send_document', chat_id=target_id, **result)
|
||||||
|
|
||||||
if node:
|
if node:
|
||||||
for _msg in node:
|
for _msg in node:
|
||||||
|
22
poetry.lock
generated
22
poetry.lock
generated
@ -89,19 +89,19 @@ files = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "filelock"
|
name = "filelock"
|
||||||
version = "3.9.0"
|
version = "3.10.0"
|
||||||
description = "A platform independent file lock."
|
description = "A platform independent file lock."
|
||||||
category = "dev"
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
{file = "filelock-3.9.0-py3-none-any.whl", hash = "sha256:f58d535af89bb9ad5cd4df046f741f8553a418c01a7856bf0d173bbc9f6bd16d"},
|
{file = "filelock-3.10.0-py3-none-any.whl", hash = "sha256:e90b34656470756edf8b19656785c5fea73afa1953f3e1b0d645cef11cab3182"},
|
||||||
{file = "filelock-3.9.0.tar.gz", hash = "sha256:7b319f24340b51f55a2bf7a12ac0755a9b03e718311dac567a0f4f7fabd2f5de"},
|
{file = "filelock-3.10.0.tar.gz", hash = "sha256:3199fd0d3faea8b911be52b663dfccceb84c95949dd13179aa21436d1a79c4ce"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
docs = ["furo (>=2022.12.7)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"]
|
docs = ["furo (>=2022.12.7)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)"]
|
||||||
testing = ["covdefaults (>=2.2.2)", "coverage (>=7.0.1)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-timeout (>=2.1)"]
|
testing = ["covdefaults (>=2.3)", "coverage (>=7.2.1)", "pytest (>=7.2.2)", "pytest-cov (>=4)", "pytest-timeout (>=2.1)"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "flake8"
|
name = "flake8"
|
||||||
@ -152,14 +152,14 @@ gitdb = ">=4.0.1,<5"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "identify"
|
name = "identify"
|
||||||
version = "2.5.20"
|
version = "2.5.21"
|
||||||
description = "File identification library for Python"
|
description = "File identification library for Python"
|
||||||
category = "dev"
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
{file = "identify-2.5.20-py2.py3-none-any.whl", hash = "sha256:5dfef8a745ca4f2c95f27e9db74cb4c8b6d9916383988e8791f3595868f78a33"},
|
{file = "identify-2.5.21-py2.py3-none-any.whl", hash = "sha256:69edcaffa8e91ae0f77d397af60f148b6b45a8044b2cc6d99cafa5b04793ff00"},
|
||||||
{file = "identify-2.5.20.tar.gz", hash = "sha256:c8b288552bc5f05a08aff09af2f58e6976bf8ac87beb38498a0e3d98ba64eb18"},
|
{file = "identify-2.5.21.tar.gz", hash = "sha256:7671a05ef9cfaf8ff63b15d45a91a1147a03aaccb2976d4e9bd047cbbc508471"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
@ -875,14 +875,14 @@ typing-extensions = ">=3.7.4"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "virtualenv"
|
name = "virtualenv"
|
||||||
version = "20.20.0"
|
version = "20.21.0"
|
||||||
description = "Virtual Python Environment builder"
|
description = "Virtual Python Environment builder"
|
||||||
category = "dev"
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
{file = "virtualenv-20.20.0-py3-none-any.whl", hash = "sha256:3c22fa5a7c7aa106ced59934d2c20a2ecb7f49b4130b8bf444178a16b880fa45"},
|
{file = "virtualenv-20.21.0-py3-none-any.whl", hash = "sha256:31712f8f2a17bd06234fa97fdf19609e789dd4e3e4bf108c3da71d710651adbc"},
|
||||||
{file = "virtualenv-20.20.0.tar.gz", hash = "sha256:a8a4b8ca1e28f864b7514a253f98c1d62b64e31e77325ba279248c65fb4fcef4"},
|
{file = "virtualenv-20.21.0.tar.gz", hash = "sha256:f50e3e60f990a0757c9b68333c9fdaa72d7188caa417f96af9e52407831a3b68"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user