准备工作
1. 注册 OpenAI 和获取 API Key
•到 OpenAI 官方网站 注册账户。
•创建 API Key,确保保管好密钥。
2. 搭建 CentOS 9 环境
确保服务器满足以下条件:
•CentOS 9 已安装。
•Python 3.8 或以上版本。
•已配置网络,能访问 OpenAI API 和微信服务器。
必要工具安装
sudo dnf update -y
sudo dnf install -y python3 python3-pip git
算命机器人功能
创建项目目录并初始化环境:
mkdir wechat-fortune-bot
cd wechat-fortune-bot
python3 -m venv venv
source venv/bin/activate
pip install openai flask requests
ChatGPT 调用函数
使用 OpenAI API 提供占卜或算命功能:
import openai
# 替换为你的 OpenAI API 密钥
openai.api_key = "YOUR_OPENAI_API_KEY"
def get_fortune(prompt):
"""调用 ChatGPT API 返回占卜结果"""
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": "你是一个专业的算命师,负责提供八字算命、星座运势和塔罗牌解读。"},
{"role": "user", "content": prompt},
]
)
return response["choices"][0]["message"]["content"]
Flask 服务
用于接收和响应微信消息:
from flask import Flask, request, jsonify
import hashlib
app = Flask(__name__)
# 微信验证 Token(自行设置)
WECHAT_TOKEN = "your_wechat_token"
@app.route('/wechat', methods=['GET', 'POST'])
def wechat():
if request.method == 'GET':
# 微信服务器验证
signature = request.args.get('signature')
timestamp = request.args.get('timestamp')
nonce = request.args.get('nonce')
echostr = request.args.get('echostr')
if check_signature(signature, timestamp, nonce):
return echostr
else:
return "Signature verification failed"
elif request.method == 'POST':
# 处理用户消息
xml_data = request.data.decode('utf-8')
user_message = parse_wechat_message(xml_data)
reply = get_fortune(user_message)
return format_wechat_response(reply)
def check_signature(signature, timestamp, nonce):
"""验证微信签名"""
tmp_list = [WECHAT_TOKEN, timestamp, nonce]
tmp_list.sort()
tmp_str = ''.join(tmp_list).encode('utf-8')
hashcode = hashlib.sha1(tmp_str).hexdigest()
return hashcode == signature
def parse_wechat_message(xml_data):
"""解析微信 XML 消息,提取用户消息内容"""
import xml.etree.ElementTree as ET
root = ET.fromstring(xml_data)
content = root.find('Content').text
return content
def format_wechat_response(reply):
"""格式化微信响应 XML"""
return f"""<xml>
<ToUserName><![CDATA[{{TO_USER}}]]></ToUserName>
<FromUserName><![CDATA[{{FROM_USER}}]]></FromUserName>
<CreateTime>{{int(time.time())}}</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[{reply}]]></Content>
</xml>"""
微信公众号对接
1. 注册微信公众平台
•登录 微信公众平台。
•创建订阅号或服务号。
•申请开发者权限。
2. 配置服务器地址
•在微信后台开发者工具中配置你的 服务器地址。
• URL:http://your-server-ip/wechat
•Token:与你代码中的 WECHAT_TOKEN 保持一致。
3. 测试接入
•微信会向你的服务器发送验证请求,完成接入后,用户可以向公众号发送消息。
部署生产环境
启动 Flask 服务
建议使用 Gunicorn 或其他生产级 WSGI 服务器运行 Flask 应用:
pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 app:app
配置 Nginx
为微信的回调接口配置反向代理:
sudo dnf install nginx -y
sudo nano /etc/nginx/conf.d/wechat_bot.conf
配置文件内容:
server {
listen 80;
server_name your-server-ip;
location /wechat {
proxy_pass http://127.0.0.1:5000/wechat;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
重启 Nginx:
sudo systemctl restart nginx
测试和上线
1.向你的公众号发送消息,比如 “抽一张塔罗牌” 或 “我今天运势如何”。
2.确保能收到 ChatGPT 返回的内容。
可扩展功能
•功能分支:支持八字分析、星座运势和塔罗牌抽牌功能。
•用户管理:通过数据库(如 MySQL)记录用户占卜历史。
•图片生成:结合塔罗牌图片生成更直观的结果(可用 Pillow 或其他库生成图文回复)。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容