跳至主要內容

LincZero小于 1 分钟

这里我使用的是python脚本,这里参考的是一个段久远的机器人插件记忆

核心代码:

from flask import Flask, request
import importlib.util
import os

current_dir = os.path.dirname(os.path.abspath(__file__))

client = Flask("client")


@client.route('/plugins/<path:path>', methods=['GET', 'POST'])
def route_plugins(path):
    """ 在plugins文件夹中查找<plugin_name>目录,并调用里面main.py里的main(),进行返回 """
    path_parts = path.split('/')
    plugin_name = path_parts[0]

    plugin_path = os.path.join(current_dir, 'plugins', plugin_name, 'main.py')
    if not os.path.exists(plugin_path):
        return f"插件不存在: {plugin_name}", 404

    spec = importlib.util.spec_from_file_location(f"{plugin_name}.main", plugin_path)
    main_module = importlib.util.module_from_spec(spec)
    spec.loader.exec_module(main_module)
    if not hasattr(main_module, 'main'):
        return f"插件没有入口函数: {plugin_name}", 400

    params = request.args if request.method == 'GET' else request.form
    return main_module.main(path, params)


def main():
    client.run(host='127.0.0.1', port=15000)