mirror of
https://github.com/xfgryujk/blivedm.git
synced 2025-03-23 00:00:27 +08:00
添加SuperChat
This commit is contained in:
parent
922d4d6615
commit
f5d609df40
98
blivedm.py
98
blivedm.py
@ -222,6 +222,78 @@ class GuardBuyMessage:
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class SuperChatMessage:
|
||||||
|
def __init__(self, price, message, message_jpn, start_time, end_time, time, id_,
|
||||||
|
gift_id, gift_name, uid, uname, face, guard_level, user_level,
|
||||||
|
background_bottom_color, background_color, background_icon, background_image,
|
||||||
|
background_price_color):
|
||||||
|
"""
|
||||||
|
:param price: 价格(人民币)
|
||||||
|
:param message: 消息
|
||||||
|
:param message_jpn: 消息日文翻译(目前只出现在SUPER_CHAT_MESSAGE_JPN)
|
||||||
|
:param start_time: 开始时间戳
|
||||||
|
:param end_time: 结束时间戳
|
||||||
|
:param time: 持续时间?
|
||||||
|
:param id_: str,消息ID,删除时用
|
||||||
|
:param gift_id: 礼物ID
|
||||||
|
:param gift_name: 礼物名
|
||||||
|
:param uid: 用户ID
|
||||||
|
:param uname: 用户名
|
||||||
|
:param face: 用户头像URL
|
||||||
|
:param guard_level: 舰队等级,0非舰队,1总督,2提督,3舰长
|
||||||
|
:param user_level: 用户等级
|
||||||
|
:param background_bottom_color: 底部背景色
|
||||||
|
:param background_color: 背景色
|
||||||
|
:param background_icon: 背景图标
|
||||||
|
:param background_image: 背景图
|
||||||
|
:param background_price_color: 背景价格颜色
|
||||||
|
"""
|
||||||
|
self.price = price
|
||||||
|
self.message = message
|
||||||
|
self.message_jpn = message_jpn
|
||||||
|
self.start_time = start_time
|
||||||
|
self.end_time = end_time
|
||||||
|
self.time = time
|
||||||
|
self.id = id_
|
||||||
|
self.gift_id = gift_id
|
||||||
|
self.gift_name = gift_name
|
||||||
|
self.uid = uid
|
||||||
|
self.uname = uname
|
||||||
|
self.face = face
|
||||||
|
self.guard_level = guard_level
|
||||||
|
self.user_level = user_level
|
||||||
|
self.background_bottom_color = background_bottom_color
|
||||||
|
self.background_color = background_color
|
||||||
|
self.background_icon = background_icon
|
||||||
|
self.background_image = background_image
|
||||||
|
self.background_price_color = background_price_color
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_command(cls, data: dict):
|
||||||
|
return cls(
|
||||||
|
data['price'], data['message'], data['message_jpn'], data['start_time'],
|
||||||
|
data['end_time'], data['time'], data['id'], data['gift_id'], data['gift_name'],
|
||||||
|
data['uid'], data['user_info']['uname'], data['user_info']['face'],
|
||||||
|
data['user_info']['guard_level'], data['user_info']['user_level'],
|
||||||
|
data['background_bottom_color'], data['background_color'], data['background_icon'],
|
||||||
|
data['background_image'], data['background_price_color']
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class SuperChatDeleteMessage:
|
||||||
|
def __init__(self, ids):
|
||||||
|
"""
|
||||||
|
:param ids: 消息ID数组
|
||||||
|
"""
|
||||||
|
self.ids = ids
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_command(cls, data: dict):
|
||||||
|
return cls(
|
||||||
|
data['ids']
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class BLiveClient:
|
class BLiveClient:
|
||||||
_COMMAND_HANDLERS: Dict[str, Optional[Callable[['BLiveClient', dict], Awaitable]]] = {
|
_COMMAND_HANDLERS: Dict[str, Optional[Callable[['BLiveClient', dict], Awaitable]]] = {
|
||||||
# 收到弹幕
|
# 收到弹幕
|
||||||
@ -236,6 +308,14 @@ class BLiveClient:
|
|||||||
# 有人上舰
|
# 有人上舰
|
||||||
'GUARD_BUY': lambda client, command: client._on_buy_guard(
|
'GUARD_BUY': lambda client, command: client._on_buy_guard(
|
||||||
GuardBuyMessage.from_command(command['data'])
|
GuardBuyMessage.from_command(command['data'])
|
||||||
|
),
|
||||||
|
# 醒目留言
|
||||||
|
'SUPER_CHAT_MESSAGE': lambda client, command: client._on_super_chat(
|
||||||
|
SuperChatMessage.from_command(command['data'])
|
||||||
|
),
|
||||||
|
# 删除醒目留言
|
||||||
|
'SUPER_CHAT_MESSAGE_DELETE': lambda client, command: client._on_super_chat_delete(
|
||||||
|
SuperChatDeleteMessage.from_command(command['data'])
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
for cmd in ( # 其他已知命令
|
for cmd in ( # 其他已知命令
|
||||||
@ -249,9 +329,9 @@ class BLiveClient:
|
|||||||
'ROOM_BLOCK_MSG', 'ROOM_BOX_MASTER', 'ROOM_KICKOUT', 'ROOM_LIMIT', 'ROOM_LOCK',
|
'ROOM_BLOCK_MSG', 'ROOM_BOX_MASTER', 'ROOM_KICKOUT', 'ROOM_LIMIT', 'ROOM_LOCK',
|
||||||
'ROOM_RANK', 'ROOM_REAL_TIME_MESSAGE_UPDATE', 'ROOM_REAL_TIME_MESSAGE_UPDATE',
|
'ROOM_RANK', 'ROOM_REAL_TIME_MESSAGE_UPDATE', 'ROOM_REAL_TIME_MESSAGE_UPDATE',
|
||||||
'ROOM_REFRESH', 'ROOM_SHIELD', 'ROOM_SILENT_OFF', 'ROOM_SILENT_ON', 'ROOM_SKIN_MSG',
|
'ROOM_REFRESH', 'ROOM_SHIELD', 'ROOM_SILENT_OFF', 'ROOM_SILENT_ON', 'ROOM_SKIN_MSG',
|
||||||
'ROUND', 'SCORE_CARD', 'SEND_TOP', 'SPECIAL_GIFT', 'SYS_GIFT', 'SYS_MSG', 'TV_END',
|
'ROUND', 'SCORE_CARD', 'SEND_TOP', 'SPECIAL_GIFT', 'SUPER_CHAT_ENTRANCE',
|
||||||
'TV_START', 'USER_TOAST_MSG', 'WARNING', 'WEEK_STAR_CLOCK', 'WELCOME', 'WELCOME_GUARD',
|
'SUPER_CHAT_MESSAGE_JPN', 'SYS_GIFT', 'SYS_MSG', 'TV_END', 'TV_START', 'USER_TOAST_MSG',
|
||||||
'WIN_ACTIVITY', 'WISH_BOTTLE'
|
'WARNING', 'WEEK_STAR_CLOCK', 'WELCOME', 'WELCOME_GUARD', 'WIN_ACTIVITY', 'WISH_BOTTLE'
|
||||||
):
|
):
|
||||||
_COMMAND_HANDLERS[cmd] = None
|
_COMMAND_HANDLERS[cmd] = None
|
||||||
|
|
||||||
@ -575,3 +655,15 @@ class BLiveClient:
|
|||||||
有人上舰
|
有人上舰
|
||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
async def _on_super_chat(self, message: SuperChatMessage):
|
||||||
|
"""
|
||||||
|
醒目留言
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
async def _on_super_chat_delete(self, message: SuperChatDeleteMessage):
|
||||||
|
"""
|
||||||
|
删除醒目留言
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
@ -25,6 +25,9 @@ class MyBLiveClient(blivedm.BLiveClient):
|
|||||||
async def _on_buy_guard(self, message: blivedm.GuardBuyMessage):
|
async def _on_buy_guard(self, message: blivedm.GuardBuyMessage):
|
||||||
print(f'{message.username} 购买{message.gift_name}')
|
print(f'{message.username} 购买{message.gift_name}')
|
||||||
|
|
||||||
|
async def _on_super_chat(self, message: blivedm.SuperChatMessage):
|
||||||
|
print(f'醒目留言 ¥{message.price} {message.uname}:{message.message}')
|
||||||
|
|
||||||
|
|
||||||
async def main():
|
async def main():
|
||||||
# 139是黑桐谷歌的直播间
|
# 139是黑桐谷歌的直播间
|
||||||
|
Loading…
Reference in New Issue
Block a user