我编写的插件会在 Event
类使用 init()
方法来初始化,初始化过程中有读取配置文件的操作。
读取配置失败的情况下会抛出 FileNotFoundError
。
期望情况:插件的后续处理会被终止,在聊天中发送与插件相关的指令,Bot 不会响应
实际情况:在聊天发送相关指令,Bot 仍会处理和回复消息
备注:如果错误发生在 group_message 或者 private_message 事件的处理过程中,OlivOS 会终止插件的后续处理,个人认为初始化过程也应该如此。
下图是论坛一个斗地主插件处理消息时发生报错的日志:
我的代码如下(仿照插件模板编写,Event
类位于 main.py
,目前只写了这么多)
import os
import OlivOS
from .package.config_handler import load_config
# 事件文档:https://doc.olivos.wiki/DevPlugin/Event/
class Event(object):
"""OlivOS 框架事件"""
# 初始化事件
def init(plugin_event: OlivOS.API.Event, Proc: OlivOS.pluginAPI.shallow):
# 插件路径
_PLUGIN_PATH = os.path.dirname(os.path.abspath(__file__))
# 读取并载入配置
config = load_config(os.path.join(_PLUGIN_PATH, "config.yml"))
# 私聊消息事件
def private_message(plugin_event: OlivOS.API.Event, Proc: OlivOS.pluginAPI.shallow):
plugin_event.reply("Bot 目前仅支持在服务器中使用.")
# 群聊消息事件
def group_message(plugin_event: OlivOS.API.Event, Proc: OlivOS.pluginAPI.shallow):
group_reply(plugin_event, Proc)
def group_reply(plugin_event: OlivOS.API.Event, Proc: OlivOS.pluginAPI.shallow):
data = plugin_event.data
if data.message == '/ping':
plugin_event.send("group", data.group_id, "pong")