mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-16 01:40:15 +08:00
78 lines
2.5 KiB
Python
78 lines
2.5 KiB
Python
from nakuru.entities.components import Plain, At, Image
|
||
from botpy.message import Message, DirectMessage
|
||
|
||
class NakuruGuildMember():
|
||
tiny_id: int # 发送者识别号
|
||
user_id: int # 发送者识别号
|
||
title: str
|
||
nickname: str # 昵称
|
||
role: int # 角色
|
||
icon_url: str # 头像url
|
||
|
||
class NakuruGuildMessage():
|
||
type: str = "GuildMessage"
|
||
self_id: int # bot的qq号
|
||
self_tiny_id: int # bot的qq号
|
||
sub_type: str # 消息类型
|
||
message_id: str # 消息id
|
||
guild_id: int # 频道号
|
||
channel_id: int # 子频道号
|
||
user_id: int # 发送者qq号
|
||
message: list # 消息内容
|
||
sender: NakuruGuildMember # 发送者信息
|
||
raw_message: Message
|
||
|
||
def __str__(self) -> str:
|
||
return str(self.__dict__)
|
||
|
||
# gocq-频道SDK兼容层(发)
|
||
def gocq_compatible_send(gocq_message_chain: list):
|
||
plain_text = ""
|
||
image_path = None # only one img supported
|
||
for i in gocq_message_chain:
|
||
if isinstance(i, Plain):
|
||
plain_text += i.text
|
||
elif isinstance(i, Image) and image_path == None:
|
||
if i.path is not None:
|
||
image_path = i.path
|
||
else:
|
||
image_path = i.file
|
||
return plain_text, image_path
|
||
|
||
# gocq-频道SDK兼容层(收)
|
||
def gocq_compatible_receive(message: Message) -> NakuruGuildMessage:
|
||
ngm = NakuruGuildMessage()
|
||
try:
|
||
ngm.self_id = message.mentions[0].id
|
||
ngm.self_tiny_id = message.mentions[0].id
|
||
except:
|
||
ngm.self_id = 0
|
||
ngm.self_tiny_id = 0
|
||
|
||
ngm.sub_type = "normal"
|
||
ngm.message_id = message.id
|
||
ngm.guild_id = int(message.guild_id)
|
||
ngm.channel_id = int(message.channel_id)
|
||
ngm.user_id = int(message.author.id)
|
||
msg = []
|
||
plain_content = message.content.replace("<@!"+str(ngm.self_id)+">", "").strip()
|
||
msg.append(Plain(plain_content))
|
||
if message.attachments:
|
||
for i in message.attachments:
|
||
if i.content_type.startswith("image"):
|
||
url = i.url
|
||
if not url.startswith("http"):
|
||
url = "https://"+url
|
||
img = Image.fromURL(url)
|
||
msg.append(img)
|
||
ngm.message = msg
|
||
ngm.sender = NakuruGuildMember()
|
||
ngm.sender.tiny_id = int(message.author.id)
|
||
ngm.sender.user_id = int(message.author.id)
|
||
ngm.sender.title = ""
|
||
ngm.sender.nickname = message.author.username
|
||
ngm.sender.role = 0
|
||
ngm.sender.icon_url = message.author.avatar
|
||
ngm.raw_message = message
|
||
return ngm
|