Files
JianFeeeee 7d1ccfba46 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
2025-08-13 19:41:56 +08:00

97 lines
3.1 KiB
Python

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}")