mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-06-12 16:56:02 +00:00
style: introduce ruff as linter and formatter (#1356)
* style: remove necessary imports * style: fix F841 * style: fix F401 * style: fix F811 * style: fix E402 * style: fix E721 * style: fix E722 * style: fix E722 * style: fix F541 * style: ruff format * style: all passed * style: add ruff in deps * style: more ignores in ruff.toml * style: add pre-commit
This commit is contained in:
committed by
GitHub
parent
09e70d70e9
commit
209f16af76
@@ -2,24 +2,23 @@ from __future__ import annotations
|
||||
import typing
|
||||
import asyncio
|
||||
import traceback
|
||||
import time
|
||||
import datetime
|
||||
|
||||
import aiocqhttp
|
||||
import aiohttp
|
||||
|
||||
from .. import adapter
|
||||
from ...pipeline.longtext.strategies import forward
|
||||
from ...core import app
|
||||
from ..types import message as platform_message
|
||||
from ..types import events as platform_events
|
||||
from ..types import entities as platform_entities
|
||||
from ...utils import image
|
||||
|
||||
class AiocqhttpMessageConverter(adapter.MessageConverter):
|
||||
|
||||
class AiocqhttpMessageConverter(adapter.MessageConverter):
|
||||
@staticmethod
|
||||
async def yiri2target(message_chain: platform_message.MessageChain) -> typing.Tuple[list, int, datetime.datetime]:
|
||||
async def yiri2target(
|
||||
message_chain: platform_message.MessageChain,
|
||||
) -> typing.Tuple[list, int, datetime.datetime]:
|
||||
msg_list = aiocqhttp.Message()
|
||||
|
||||
msg_id = 0
|
||||
@@ -35,7 +34,7 @@ class AiocqhttpMessageConverter(adapter.MessageConverter):
|
||||
arg = ''
|
||||
if msg.base64:
|
||||
arg = msg.base64
|
||||
msg_list.append(aiocqhttp.MessageSegment.image(f"base64://{arg}"))
|
||||
msg_list.append(aiocqhttp.MessageSegment.image(f'base64://{arg}'))
|
||||
elif msg.url:
|
||||
arg = msg.url
|
||||
msg_list.append(aiocqhttp.MessageSegment.image(arg))
|
||||
@@ -45,12 +44,12 @@ class AiocqhttpMessageConverter(adapter.MessageConverter):
|
||||
elif type(msg) is platform_message.At:
|
||||
msg_list.append(aiocqhttp.MessageSegment.at(msg.target))
|
||||
elif type(msg) is platform_message.AtAll:
|
||||
msg_list.append(aiocqhttp.MessageSegment.at("all"))
|
||||
msg_list.append(aiocqhttp.MessageSegment.at('all'))
|
||||
elif type(msg) is platform_message.Voice:
|
||||
arg = ''
|
||||
if msg.base64:
|
||||
arg = msg.base64
|
||||
msg_list.append(aiocqhttp.MessageSegment.record(f"base64://{arg}"))
|
||||
msg_list.append(aiocqhttp.MessageSegment.record(f'base64://{arg}'))
|
||||
elif msg.url:
|
||||
arg = msg.url
|
||||
msg_list.append(aiocqhttp.MessageSegment.record(arg))
|
||||
@@ -58,10 +57,15 @@ class AiocqhttpMessageConverter(adapter.MessageConverter):
|
||||
arg = msg.path
|
||||
msg_list.append(aiocqhttp.MessageSegment.record(msg.path))
|
||||
elif type(msg) is platform_message.Forward:
|
||||
|
||||
for node in msg.node_list:
|
||||
msg_list.extend((await AiocqhttpMessageConverter.yiri2target(node.message_chain))[0])
|
||||
|
||||
msg_list.extend(
|
||||
(
|
||||
await AiocqhttpMessageConverter.yiri2target(
|
||||
node.message_chain
|
||||
)
|
||||
)[0]
|
||||
)
|
||||
|
||||
else:
|
||||
msg_list.append(aiocqhttp.MessageSegment.text(str(msg)))
|
||||
|
||||
@@ -78,20 +82,26 @@ class AiocqhttpMessageConverter(adapter.MessageConverter):
|
||||
)
|
||||
|
||||
for msg in message:
|
||||
if msg.type == "at":
|
||||
if msg.data["qq"] == "all":
|
||||
if msg.type == 'at':
|
||||
if msg.data['qq'] == 'all':
|
||||
yiri_msg_list.append(platform_message.AtAll())
|
||||
else:
|
||||
yiri_msg_list.append(
|
||||
platform_message.At(
|
||||
target=msg.data["qq"],
|
||||
target=msg.data['qq'],
|
||||
)
|
||||
)
|
||||
elif msg.type == "text":
|
||||
yiri_msg_list.append(platform_message.Plain(text=msg.data["text"]))
|
||||
elif msg.type == "image":
|
||||
image_base64, image_format = await image.qq_image_url_to_base64(msg.data['url'])
|
||||
yiri_msg_list.append(platform_message.Image(base64=f"data:image/{image_format};base64,{image_base64}"))
|
||||
elif msg.type == 'text':
|
||||
yiri_msg_list.append(platform_message.Plain(text=msg.data['text']))
|
||||
elif msg.type == 'image':
|
||||
image_base64, image_format = await image.qq_image_url_to_base64(
|
||||
msg.data['url']
|
||||
)
|
||||
yiri_msg_list.append(
|
||||
platform_message.Image(
|
||||
base64=f'data:image/{image_format};base64,{image_base64}'
|
||||
)
|
||||
)
|
||||
|
||||
chain = platform_message.MessageChain(yiri_msg_list)
|
||||
|
||||
@@ -99,7 +109,6 @@ class AiocqhttpMessageConverter(adapter.MessageConverter):
|
||||
|
||||
|
||||
class AiocqhttpEventConverter(adapter.EventConverter):
|
||||
|
||||
@staticmethod
|
||||
async def yiri2target(event: platform_events.MessageEvent, bot_account_id: int):
|
||||
return event.source_platform_object
|
||||
@@ -110,49 +119,50 @@ class AiocqhttpEventConverter(adapter.EventConverter):
|
||||
event.message, event.message_id
|
||||
)
|
||||
|
||||
if event.message_type == "group":
|
||||
permission = "MEMBER"
|
||||
if event.message_type == 'group':
|
||||
permission = 'MEMBER'
|
||||
|
||||
if "role" in event.sender:
|
||||
if event.sender["role"] == "admin":
|
||||
permission = "ADMINISTRATOR"
|
||||
elif event.sender["role"] == "owner":
|
||||
permission = "OWNER"
|
||||
if 'role' in event.sender:
|
||||
if event.sender['role'] == 'admin':
|
||||
permission = 'ADMINISTRATOR'
|
||||
elif event.sender['role'] == 'owner':
|
||||
permission = 'OWNER'
|
||||
converted_event = platform_events.GroupMessage(
|
||||
sender=platform_entities.GroupMember(
|
||||
id=event.sender["user_id"], # message_seq 放哪?
|
||||
member_name=event.sender["nickname"],
|
||||
id=event.sender['user_id'], # message_seq 放哪?
|
||||
member_name=event.sender['nickname'],
|
||||
permission=permission,
|
||||
group=platform_entities.Group(
|
||||
id=event.group_id,
|
||||
name=event.sender["nickname"],
|
||||
name=event.sender['nickname'],
|
||||
permission=platform_entities.Permission.Member,
|
||||
),
|
||||
special_title=event.sender["title"] if "title" in event.sender else "",
|
||||
special_title=event.sender['title']
|
||||
if 'title' in event.sender
|
||||
else '',
|
||||
join_timestamp=0,
|
||||
last_speak_timestamp=0,
|
||||
mute_time_remaining=0,
|
||||
),
|
||||
message_chain=yiri_chain,
|
||||
time=event.time,
|
||||
source_platform_object=event
|
||||
source_platform_object=event,
|
||||
)
|
||||
return converted_event
|
||||
elif event.message_type == "private":
|
||||
elif event.message_type == 'private':
|
||||
return platform_events.FriendMessage(
|
||||
sender=platform_entities.Friend(
|
||||
id=event.sender["user_id"],
|
||||
nickname=event.sender["nickname"],
|
||||
remark="",
|
||||
id=event.sender['user_id'],
|
||||
nickname=event.sender['nickname'],
|
||||
remark='',
|
||||
),
|
||||
message_chain=yiri_chain,
|
||||
time=event.time,
|
||||
source_platform_object=event
|
||||
source_platform_object=event,
|
||||
)
|
||||
|
||||
|
||||
class AiocqhttpAdapter(adapter.MessagePlatformAdapter):
|
||||
|
||||
bot: aiocqhttp.CQHttp
|
||||
|
||||
bot_account_id: int
|
||||
@@ -170,14 +180,14 @@ class AiocqhttpAdapter(adapter.MessagePlatformAdapter):
|
||||
async def shutdown_trigger_placeholder():
|
||||
while True:
|
||||
await asyncio.sleep(1)
|
||||
|
||||
|
||||
self.config['shutdown_trigger'] = shutdown_trigger_placeholder
|
||||
|
||||
self.ap = ap
|
||||
|
||||
if "access-token" in config:
|
||||
self.bot = aiocqhttp.CQHttp(access_token=config["access-token"])
|
||||
del self.config["access-token"]
|
||||
if 'access-token' in config:
|
||||
self.bot = aiocqhttp.CQHttp(access_token=config['access-token'])
|
||||
del self.config['access-token']
|
||||
else:
|
||||
self.bot = aiocqhttp.CQHttp()
|
||||
|
||||
@@ -186,9 +196,9 @@ class AiocqhttpAdapter(adapter.MessagePlatformAdapter):
|
||||
):
|
||||
aiocq_msg = (await AiocqhttpMessageConverter.yiri2target(message))[0]
|
||||
|
||||
if target_type == "group":
|
||||
if target_type == 'group':
|
||||
await self.bot.send_group_msg(group_id=int(target_id), message=aiocq_msg)
|
||||
elif target_type == "person":
|
||||
elif target_type == 'person':
|
||||
await self.bot.send_private_msg(user_id=int(target_id), message=aiocq_msg)
|
||||
|
||||
async def reply_message(
|
||||
@@ -196,16 +206,17 @@ class AiocqhttpAdapter(adapter.MessagePlatformAdapter):
|
||||
message_source: platform_events.MessageEvent,
|
||||
message: platform_message.MessageChain,
|
||||
quote_origin: bool = False,
|
||||
):
|
||||
aiocq_event = await AiocqhttpEventConverter.yiri2target(message_source, self.bot_account_id)
|
||||
):
|
||||
aiocq_event = await AiocqhttpEventConverter.yiri2target(
|
||||
message_source, self.bot_account_id
|
||||
)
|
||||
aiocq_msg = (await AiocqhttpMessageConverter.yiri2target(message))[0]
|
||||
if quote_origin:
|
||||
aiocq_msg = aiocqhttp.MessageSegment.reply(aiocq_event.message_id) + aiocq_msg
|
||||
aiocq_msg = (
|
||||
aiocqhttp.MessageSegment.reply(aiocq_event.message_id) + aiocq_msg
|
||||
)
|
||||
|
||||
return await self.bot.send(
|
||||
aiocq_event,
|
||||
aiocq_msg
|
||||
)
|
||||
return await self.bot.send(aiocq_event, aiocq_msg)
|
||||
|
||||
async def is_muted(self, group_id: int) -> bool:
|
||||
return False
|
||||
@@ -213,24 +224,30 @@ class AiocqhttpAdapter(adapter.MessagePlatformAdapter):
|
||||
def register_listener(
|
||||
self,
|
||||
event_type: typing.Type[platform_events.Event],
|
||||
callback: typing.Callable[[platform_events.Event, adapter.MessagePlatformAdapter], None],
|
||||
callback: typing.Callable[
|
||||
[platform_events.Event, adapter.MessagePlatformAdapter], None
|
||||
],
|
||||
):
|
||||
async def on_message(event: aiocqhttp.Event):
|
||||
self.bot_account_id = event.self_id
|
||||
try:
|
||||
return await callback(await self.event_converter.target2yiri(event), self)
|
||||
except:
|
||||
return await callback(
|
||||
await self.event_converter.target2yiri(event), self
|
||||
)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
if event_type == platform_events.GroupMessage:
|
||||
self.bot.on_message("group")(on_message)
|
||||
self.bot.on_message('group')(on_message)
|
||||
elif event_type == platform_events.FriendMessage:
|
||||
self.bot.on_message("private")(on_message)
|
||||
self.bot.on_message('private')(on_message)
|
||||
|
||||
def unregister_listener(
|
||||
self,
|
||||
event_type: typing.Type[platform_events.Event],
|
||||
callback: typing.Callable[[platform_events.Event, adapter.MessagePlatformAdapter], None],
|
||||
callback: typing.Callable[
|
||||
[platform_events.Event, adapter.MessagePlatformAdapter], None
|
||||
],
|
||||
):
|
||||
return super().unregister_listener(event_type, callback)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user