这个过程的核心是 “Webhook” 机制,就是为你的机器人设置一个专属的网址(URL),然后让群聊平台(如QQ、Telegram等)将所有消息都转发到这个网址上,你的服务器接收到消息后,就调用图灵机器人的API,得到回复,再通过群聊平台的API把消息发回去。

下面我将为你分步骤详细讲解,并提供几种主流群聊平台的接入方法。
第一步:准备工作(通用)
在接入任何群聊之前,你都需要完成以下准备工作:
-
注册并获取图灵机器人API Key
- 访问图灵机器人官网。
- 注册并登录账号。
- 进入“机器人管理”页面,创建一个新的机器人。
- 创建成功后,你会得到一个唯一的
API Key,这是调用图灵机器人服务的凭证,请务必妥善保管。
-
准备一个可以运行的服务器/电脑
(图片来源网络,侵删)- 你需要一个可以7x24小时运行的服务器(推荐)或一台一直开机的电脑。
- 这个服务器需要能够被外网访问,并且需要安装编程环境(如 Python, Node.js, PHP 等)。
- 我们这里以最常用的 Python 为例进行讲解。
-
安装必要的Python库
requests: 用于发送HTTP请求,调用图灵API。flask: 一个轻量级的Web框架,用于创建接收群消息的Web服务。- 在你的服务器/电脑上打开终端,运行以下命令安装:
pip install requests flask
第二步:选择群聊平台并接入
不同的群聊平台(QQ、Telegram、Discord、微信等)接入方式差异很大,下面介绍最主流的几种。
接入QQ群(最常见)
接入QQ群通常有两种方式:使用第三方框架(如NoneBot, go-cqhttp) 或 通过QQ机器人平台(如Mirai, OneBot),对于新手,使用成熟的框架是最简单的方法。
推荐工具:go-cqhttp
这是一个功能强大的QQ协议库,可以将QQ机器人变成一个支持标准HTTP API的“Webhook”服务器。
操作步骤:
-
下载并运行
go-cqhttp- 前往 go-cqhttp的GitHub Releases页面 下载适合你服务器的版本。
- 解压后,首次运行会生成一个
config.yml配置文件。 - 修改配置文件:这是最关键的一步,你需要配置一个 HTTP反向代理,让
go-cqhttp将收到的QQ消息转发到你编写的Python服务上。
在
config.yml中找到servers部分,添加或修改如下配置:servers: - # 访问地址,0.0.0.0表示监听所有网络接口 host: 0.0.0.0 # 访问端口,请确保此端口未被占用 port: 8080 # 访问密钥,用于验证请求是否来自你的go-cqhttp secret: "your_secret_key" # 请自定义一个复杂的密钥 # 服务器事件上报路径 post_url: "http://你的服务器IP:5000/webhook" # 这是你的Python服务的地址 -
编写Python服务(Flask应用) 创建一个
bot_server.py文件,内容如下:from flask import Flask, request, jsonify import requests import hashlib app = Flask(__name__) # 你的图灵机器人API Key TULING_API_KEY = "你的图灵API_KEY" TULING_API_URL = "http://openapi.tuling123.com/api/v2" # go-cqhttp配置的secret SECRET = "your_secret_key" # 必须和config.yml中的secret完全一致 @app.route('/webhook', methods=['POST']) def handle_message(): # 1. 验证请求来源(防止恶意请求) signature = request.headers.get('X-Signature') if signature: # 计算请求体的MD5值 body = request.get_data() my_signature = hashlib.md5(body).hexdigest() if my_signature != signature: return "Signature Mismatch", 403 # 2. 解析go-cqhttp发送过来的消息数据 data = request.json # 群消息的user_id是发送者,group_id是群号 user_id = data.get('user_id') group_id = data.get('group_id') message = data.get('message') # 3. 调用图灵机器人API tuling_payload = { "perception": { "inputText": { "text": message } }, "userInfo": { "userId": str(user_id), # 使用QQ号作为用户ID "apiKey": TULING_API_KEY } } try: response = requests.post(TULING_API_URL, json=tuling_payload) response.raise_for_status() tuling_result = response.json() # 4. 提取图灵机器人的回复 reply_text = tuling_result['intent']['code'] # 默认返回code if 'results' in tuling_result and tuling_result['results']: reply_text = tuling_result['results'][0]['values']['text'] # 5. 通过go-cqhttp的API将回复发回群聊 # 注意:这里我们直接让go-cqhttp通过WebSocket协议处理,更简单的方式是配置上报后,由go-cqhttp自动回复。 # 但为了演示,我们这里假设go-cqhttp已经配置好,我们只需要发送回复命令给它。 # 更常见的做法是,go-cqhttp收到消息后,通过WebSocket将消息推送到你的程序,你的程序处理完后再通过WebSocket命令go-cqhttp发送。 # 为了简化,我们假设go-cqhttp已经配置了自动回复(在配置文件中设置 `post_message_format: array`),我们只需要在收到消息后,向go-cqhttp发送一个“发送群消息”的指令。 # 这部分代码比较复杂,通常需要配合WebSocket客户端,对于初学者,可以先用日志打印回复,确保逻辑正确。 # 简化版:我们只打印回复,不实际发送回去,实际发送需要go-cqhttp的WebSocket客户端库。 print(f"收到来自群 {group_id} 用户 {user_id} 的消息: {message}") print(f"图灵机器人回复: {reply_text}") # 要实际发送,你需要一个go-cqhttp的WebSocket客户端代码,这里不展开,但逻辑是: # ws_client.send_group_msg(group_id=group_id, message=reply_text) return "OK", 200 except Exception as e: print(f"Error: {e}") return "Error", 500 if __name__ == '__main__': # 运行Flask服务,监听5000端口 app.run(host='0.0.0.0', port=5000) -
启动服务
- 先启动你的Python服务:
python bot_server.py - 再启动
go-cqhttp,它会自动登录你的QQ账号。 - 当你加入一个QQ群,有人在群里发言,
go-cqhttp就会把这个消息转发到http://你的服务器IP:5000/webhook,你的Python程序处理后会得到回复,并通过go-cqhttp发回群里。
- 先启动你的Python服务:
接入Telegram群
Telegram的机器人机制非常友好,官方支持直接通过Webhook接收消息。
操作步骤:
-
与BotFather对话创建机器人
- 在Telegram中搜索
@BotFather。 - 发送
/newbot,按照提示给你的机器人起名和设置用户名。 - BotFather会给你一个
HTTP API Token,格式如123456789:ABCdefGhIjKlMnOpqRsTuVwXyZ。
- 在Telegram中搜索
-
编写Python服务(Flask应用) 创建一个
telegram_bot.py文件:from flask import Flask, request, jsonify import requests import hashlib app = Flask(__name__) # 你的Telegram Bot Token TELEGRAM_TOKEN = "你的Telegram Bot Token" TELEGRAM_API_URL = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/" # 你的图灵机器人API Key TULING_API_KEY = "你的图灵API_KEY" TULING_API_URL = "http://openapi.tuling123.com/api/v2" @app.route('/telegram_webhook', methods=['POST']) def handle_telegram_message(): data = request.json chat_id = data['message']['chat']['id'] text = data['message']['text'] # 调用图灵机器人API tuling_payload = { "perception": { "inputText": { "text": text } }, "userInfo": { "userId": str(chat_id), "apiKey": TULING_API_KEY } } try: response = requests.post(TULING_API_URL, json=tuling_payload) response.raise_for_status() tuling_result = response.json() reply_text = tuling_result['intent']['code'] if 'results' in tuling_result and tuling_result['results']: reply_text = tuling_result['results'][0]['values']['text'] # 通过Telegram API发送回复 send_payload = { 'chat_id': chat_id, 'text': reply_text } requests.post(f"{TELEGRAM_API_URL}sendMessage", json=send_payload) return jsonify({'status': 'OK'}) except Exception as e: print(f"Error: {e}") return jsonify({'status': 'Error'}), 500 if __name__ == '__main__': # 注意:这里只是本地测试,正式部署需要设置Webhook app.run(host='0.0.0.0', port=5000) -
设置Telegram的Webhook
- 你需要用浏览器访问以下URL,将你的服务地址告诉Telegram:
https://api.telegram.org/bot<你的BOT_TOKEN>/setWebhook?url=https://你的服务器IP:5000/telegram_webhook - 将
<你的BOT_TOKEN>和https://你的服务器IP:5000/telegram_webhook替换成你自己的信息。 - 成功后,Telegram就会把群里的所有消息都转发到你的
/telegram_webhook接口了。
- 你需要用浏览器访问以下URL,将你的服务地址告诉Telegram:
接入Discord群
Discord也提供了完善的机器人API。
操作步骤:
-
创建Discord机器人并获取Token
- 访问 Discord开发者门户。
- 创建一个“New Application”,切换到“Bot”标签页,点击“Add Bot”。
- 在Bot页面,复制
TOKEN。 - 在“OAuth2” -> "URL Generator" 中,勾选
bot权限,然后复制生成的URL,用浏览器访问它,将机器人添加到你的服务器。
-
编写Python服务(使用discord.py库)
- 安装库:
pip install discord.py - 创建
discord_bot.py文件:
import discord from discord.ext import commands import requests # 你的Discord Bot Token DISCORD_TOKEN = '你的Discord Bot Token' # 你的图灵机器人API Key TULING_API_KEY = "你的图灵API_KEY" TULING_API_URL = "http://openapi.tuling123.com/api/v2" intents = discord.Intents.default() intents.messages = True intents.message_content = True # 需要在开发者门户开启 bot = commands.Bot(command_prefix='!', intents=intents) @bot.event async def on_ready(): print(f'Logged in as {bot.user.name}') @bot.event async def on_message(message): # 忽略机器人自己的消息 if message.author == bot.user: return # 调用图灵机器人API tuling_payload = { "perception": { "inputText": { "text": message.content } }, "userInfo": { "userId": str(message.author.id), "apiKey": TULING_API_KEY } } try: response = requests.post(TULING_API_URL, json=tuling_payload) response.raise_for_status() tuling_result = response.json() reply_text = tuling_result['intent']['code'] if 'results' in tuling_result and tuling_result['results']: reply_text = tuling_result['results'][0]['values']['text'] # 发送回复 await message.channel.send(reply_text) except Exception as e: print(f"Error: {e}") # 必须调用这个,否则其他命令不会生效 await bot.process_commands(message) bot.run(DISCORD_TOKEN) - 安装库:
-
运行机器人
- 在你的服务器上运行
python discord_bot.py。 - 机器人就会自动加入Discord服务器,并对所有它能看到的消息进行回复。
- 在你的服务器上运行
总结与关键点
| 平台 | 核心机制 | 关键步骤 | 推荐工具/库 |
|---|---|---|---|
| QQ群 | 通过第三方框架(如go-cqhttp)桥接,将QQ消息转为HTTP请求 | 配置go-cqhttp的HTTP反向代理 2. 编写Flask服务接收请求并调用图灵API 3. 通过go-cqhttp的API或WebSocket发回消息 |
go-cqhttp, Flask, requests |
| Telegram群 | 官方支持Webhook,直接将消息POST到你的服务器 | 创建机器人获取Token 2. 编写Flask服务接收请求并调用图灵API 3. 通过Telegram API发回消息 4. 用URL设置Webhook |
Flask, requests |
| Discord群 | 官方提供Bot API,通过WebSocket保持长连接 | 创建机器人获取Token和权限 2. 使用 discord.py库监听 on_message 事件 3. 在事件中调用图灵API并发送回复 |
discord.py, requests |
| 微信群 | 非常困难,微信没有开放公网API,个人号无法被程序控制,通常需要借助企业微信或第三方平台(如“微语”等),但这些平台政策风险较高,不推荐新手尝试。 | - | - |
最重要的提醒:
- 服务器安全:将你的服务器IP和端口暴露在公网上,请务必做好安全防护,例如设置防火墙、使用HTTPS等。
- 遵守规则:所有群聊平台都有自己的机器人使用政策,请务必遵守,避免被封禁。
- 错误处理:你的代码需要能够处理网络异常、API调用失败等各种情况,确保机器人稳定运行。
希望这份详细的指南能帮助你成功接入图灵机器人!
标签: 图灵机器人微信群接入教程 微信群接入图灵机器人方法 图灵机器人对接微信群步骤