mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-07-26 06:16:09 +00:00
feat: 在PluginHost中提供消息发送方法
This commit is contained in:
+16
-3
@@ -1,11 +1,15 @@
|
|||||||
# 插件管理模块
|
# 插件管理模块
|
||||||
|
import asyncio
|
||||||
import logging
|
import logging
|
||||||
import importlib
|
import importlib
|
||||||
import pkgutil
|
import pkgutil
|
||||||
import sys
|
import sys
|
||||||
|
import traceback
|
||||||
|
|
||||||
import pkg.utils.context as context
|
import pkg.utils.context as context
|
||||||
|
|
||||||
|
from mirai import Mirai
|
||||||
|
|
||||||
__plugins__ = {}
|
__plugins__ = {}
|
||||||
"""
|
"""
|
||||||
插件列表
|
插件列表
|
||||||
@@ -159,10 +163,18 @@ class PluginHost:
|
|||||||
"""获取运行时上下文"""
|
"""获取运行时上下文"""
|
||||||
return context
|
return context
|
||||||
|
|
||||||
def get_bot(self):
|
def get_bot(self) -> Mirai:
|
||||||
"""获取机器人对象"""
|
"""获取机器人对象"""
|
||||||
return context.get_qqbot_manager().bot
|
return context.get_qqbot_manager().bot
|
||||||
|
|
||||||
|
def send_person_message(self, person, message):
|
||||||
|
"""发送私聊消息"""
|
||||||
|
asyncio.run(self.get_bot().send_friend_message(person, message))
|
||||||
|
|
||||||
|
def send_group_message(self, group, message):
|
||||||
|
"""发送群消息"""
|
||||||
|
asyncio.run(self.get_bot().send_group_message(group, message))
|
||||||
|
|
||||||
def notify_admin(self, message):
|
def notify_admin(self, message):
|
||||||
"""通知管理员"""
|
"""通知管理员"""
|
||||||
context.get_qqbot_manager().notify_admin(message)
|
context.get_qqbot_manager().notify_admin(message)
|
||||||
@@ -184,7 +196,8 @@ class PluginHost:
|
|||||||
logging.debug("插件 {} 阻止了后序插件的执行".format(plugin['name']))
|
logging.debug("插件 {} 阻止了后序插件的执行".format(plugin['name']))
|
||||||
break
|
break
|
||||||
|
|
||||||
except:
|
except Exception as e:
|
||||||
logging.error("插件{}触发事件{}时发生错误: {}".format(plugin['name'], event_name, sys.exc_info()))
|
logging.error("插件{}触发事件{}时发生错误".format(plugin['name'], event_name))
|
||||||
|
logging.error(traceback.format_exc())
|
||||||
|
|
||||||
return event_context
|
return event_context
|
||||||
|
|||||||
+46
-33
@@ -98,51 +98,64 @@ class QQBotManager:
|
|||||||
# Caution: 注册新的事件处理器之后,请务必在unsubscribe_all中编写相应的取消订阅代码
|
# Caution: 注册新的事件处理器之后,请务必在unsubscribe_all中编写相应的取消订阅代码
|
||||||
@self.bot.on(FriendMessage)
|
@self.bot.on(FriendMessage)
|
||||||
async def on_friend_message(event: FriendMessage):
|
async def on_friend_message(event: FriendMessage):
|
||||||
# 触发事件
|
|
||||||
args = {
|
|
||||||
"launcher_type": "person",
|
|
||||||
"launcher_id": event.sender.id,
|
|
||||||
"sender_id": event.sender.id,
|
|
||||||
"message_chain": event.message_chain,
|
|
||||||
}
|
|
||||||
plugin_event = plugin_host.emit(plugin_models.PersonMessageReceived, **args)
|
|
||||||
|
|
||||||
if plugin_event.is_prevented_default():
|
def friend_message_handler(event: FriendMessage):
|
||||||
return
|
|
||||||
|
|
||||||
go(self.on_person_message, (event,))
|
# 触发事件
|
||||||
|
args = {
|
||||||
|
"launcher_type": "person",
|
||||||
|
"launcher_id": event.sender.id,
|
||||||
|
"sender_id": event.sender.id,
|
||||||
|
"message_chain": event.message_chain,
|
||||||
|
}
|
||||||
|
plugin_event = plugin_host.emit(plugin_models.PersonMessageReceived, **args)
|
||||||
|
|
||||||
|
if plugin_event.is_prevented_default():
|
||||||
|
return
|
||||||
|
|
||||||
|
self.on_person_message(event)
|
||||||
|
|
||||||
|
go(friend_message_handler, (event,))
|
||||||
|
|
||||||
@self.bot.on(StrangerMessage)
|
@self.bot.on(StrangerMessage)
|
||||||
async def on_stranger_message(event: StrangerMessage):
|
async def on_stranger_message(event: StrangerMessage):
|
||||||
# 触发事件
|
|
||||||
args = {
|
|
||||||
"launcher_type": "person",
|
|
||||||
"launcher_id": event.sender.id,
|
|
||||||
"sender_id": event.sender.id,
|
|
||||||
"message_chain": event.message_chain,
|
|
||||||
}
|
|
||||||
plugin_event = plugin_host.emit(plugin_models.PersonMessageReceived, **args)
|
|
||||||
|
|
||||||
if plugin_event.is_prevented_default():
|
def stranger_message_handler(event: StrangerMessage):
|
||||||
return
|
# 触发事件
|
||||||
|
args = {
|
||||||
|
"launcher_type": "person",
|
||||||
|
"launcher_id": event.sender.id,
|
||||||
|
"sender_id": event.sender.id,
|
||||||
|
"message_chain": event.message_chain,
|
||||||
|
}
|
||||||
|
plugin_event = plugin_host.emit(plugin_models.PersonMessageReceived, **args)
|
||||||
|
|
||||||
go(self.on_person_message, (event,))
|
if plugin_event.is_prevented_default():
|
||||||
|
return
|
||||||
|
|
||||||
|
self.on_person_message(event)
|
||||||
|
|
||||||
|
go(stranger_message_handler, (event,))
|
||||||
|
|
||||||
@self.bot.on(GroupMessage)
|
@self.bot.on(GroupMessage)
|
||||||
async def on_group_message(event: GroupMessage):
|
async def on_group_message(event: GroupMessage):
|
||||||
# 触发事件
|
|
||||||
args = {
|
|
||||||
"launcher_type": "group",
|
|
||||||
"launcher_id": event.group.id,
|
|
||||||
"sender_id": event.sender.id,
|
|
||||||
"message_chain": event.message_chain,
|
|
||||||
}
|
|
||||||
plugin_event = plugin_host.emit(plugin_models.GroupMessageReceived, **args)
|
|
||||||
|
|
||||||
if plugin_event.is_prevented_default():
|
def group_message_handler(event: GroupMessage):
|
||||||
return
|
# 触发事件
|
||||||
|
args = {
|
||||||
|
"launcher_type": "group",
|
||||||
|
"launcher_id": event.group.id,
|
||||||
|
"sender_id": event.sender.id,
|
||||||
|
"message_chain": event.message_chain,
|
||||||
|
}
|
||||||
|
plugin_event = plugin_host.emit(plugin_models.GroupMessageReceived, **args)
|
||||||
|
|
||||||
go(self.on_group_message, (event,))
|
if plugin_event.is_prevented_default():
|
||||||
|
return
|
||||||
|
|
||||||
|
self.on_group_message(event)
|
||||||
|
|
||||||
|
go(group_message_handler, (event,))
|
||||||
|
|
||||||
def unsubscribe_all():
|
def unsubscribe_all():
|
||||||
"""取消所有订阅
|
"""取消所有订阅
|
||||||
|
|||||||
Reference in New Issue
Block a user