modified: README.md

new file:   app.py
new file:   config/config.toml
new file:   requirements.txt
new file:   run.bat
new file:   run.sh
new file:   src/__init__.py
new file:   src/file_store_api.py
new file:   src/mainprocess.py
new file:   src/modules/__init__.py
new file:   src/modules/plugin_modules.py
new file:   src/modules/user_modules.py
new file:   src/plugin_manager.py
This commit is contained in:
JianFeeeee
2025-08-13 19:41:56 +08:00
parent 0ddb6c3fd3
commit 7d1ccfba46
13 changed files with 1227 additions and 2 deletions

97
app.py Normal file
View File

@ -0,0 +1,97 @@
import logging
from flask import Flask, request, jsonify
from logging.handlers import RotatingFileHandler
from functools import wraps
from datetime import datetime
from src import mainprocess as src
app = Flask(__name__)
#===rebot===#
# 处理私聊消息
# 处理群聊消息
@app.route('/', methods=["POST"])
def handle_event():
try:
event = request.get_json()
event_type = event.get('post_type')
# 1. 处理私聊消息
if event_type == 'message' and event.get('message_type') == 'private':
# 注意:私聊消息在顶层有 user_id
uid = event.get('user_id')
message = event.get('raw_message')
src.process_message(uid, None, message)
# 2. 处理群消息
elif event_type == 'message' and event.get('message_type') == 'group':
gid = event.get('group_id')
# 注意:群消息发送者在 sender 内
sender = event.get('sender', {})
uid = sender.get('user_id')
message = event.get('raw_message')
src.process_message(uid, gid, message)
# 3. 处理通知事件(如输入状态)
elif event_type == 'notice':
notice_type = event.get('notice_type')
if notice_type == 'notify' and event.get('sub_type') == 'input_status':
# 仅记录,不处理
logging.info(f"用户 {event.get('user_id')} 输入状态变化")
elif notice_type == 'group_recall':
# 示例:处理群消息撤回
logging.info(f"{event.get('group_id')} 撤回消息")
else:
# 其他通知类型
logging.info(f"Ignored notice: {event}")
# 通知事件直接返回成功
return jsonify({
"status": "ok",
"retcode": 0,
"data": None
})
# 4. 处理元事件(如心跳)
elif event_type == 'meta_event':
# 心跳等元事件直接返回成功
return jsonify({
"status": "ok",
"retcode": 0,
"data": None
})
# 5. 一切正常的消息事件返回成功
return jsonify({
"status": "ok",
"retcode": 0,
"data": "Processed successfully"
})
except KeyError:
logging.warning(f"Missing required field in event: {event}")
return jsonify({
"status": "failed",
"retcode": 10001,
"message": "Missing required field"
}), 400
except Exception as e:
logging.exception(f"Error processing event: {str(e)}")
return jsonify({
"status": "failed",
"retcode": 20001,
"message": "Internal server error"
}), 500
if __name__ == '__main__':
try:
port = 25580
app.run(debug=True, host='0.0.0.0', port=port)
except Exception as e:
print(f"启动失败: {e}")