我编写的插件会在 Event 类使用 init() 方法来初始化,初始化过程中有读取配置文件的操作。
读取配置失败的情况下会抛出 FileNotFoundError
期望情况:插件的后续处理会被终止,在聊天中发送与插件相关的指令,Bot 不会响应
实际情况:在聊天发送相关指令,Bot 仍会处理和回复消息
备注:如果错误发生在 group_message 或者 private_message 事件的处理过程中,OlivOS 会终止插件的后续处理,个人认为初始化过程也应该如此。
下图是论坛一个斗地主插件处理消息时发生报错的日志:
Image description
我的代码如下(仿照插件模板编写,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")
说点什么吧...