# Telegram 配对消息持续响应技能
## 概述
此技能描述如何修改 OpenClaw 的 Telegram 配对逻辑,使未批准的用户在配对被批准前,每次发送 `/start` 消息时都能收到配对码回复。
## 何时使用此技能
- 需要让未批准的用户每次发送 `/start` 都收到配对消息(而非仅首次)
- 用户可能错过首次配对消息,需要重新获取配对码
- 提升用户体验,确保用户始终能获得配对指引
## 执行步骤
### 1. 找到需要修改的文件
在你正在运行的代码中搜索下面的代码段
```
async function issuePairingChallenge(params) {
const { code, created } = await params.upsertPairingRequest({
id: params.senderId,
meta: params.meta
});
if (!created) return { created: false };
params.onCreated?.({ code });
const replyText = params.buildReplyText?.({
code,
senderIdLine: params.senderIdLine
}) ?? buildPairingReply({
channel: params.channel,
idLine: params.senderIdLine,
code
});
try {
await params.sendPairingReply(replyText);
} catch (err) {
params.onReplyError?.(err);
}
return {
created: true,
code
};
}
```
### 2. 实施修改
将条件判断从 `if (created)` 修改为 `if (code)`:
```
async function issuePairingChallenge(params) {
const { code, created } = await params.upsertPairingRequest({
id: params.senderId,
meta: params.meta
});
if (!code) return { created: false }; // <-- 关键修改点
params.onCreated?.({ code });
const replyText = params.buildReplyText?.({
code,
senderIdLine: params.senderIdLine
}) ?? buildPairingReply({
channel: params.channel,
idLine: params.senderIdLine,
code
});
try {
await params.sendPairingReply(replyText);
} catch (err) {
params.onReplyError?.(err);
}
return {
created: true,
code
};
}
```
### 3. 重启服务
修改完成后需要重启 OpenClaw 服务以使更改生效:
```bash
openclaw gateway restart
```
## 一些建议
在寻找需要修改的文件时, 建议先搜索 `async function issuePairingChallenge(params)` 可以帮助你先大幅缩小处理范围, 过滤出需要修改的文件.
一个建议的起始目录为 /usr/lib/node_modules/opencl...
{ copied = true; setTimeout(() => copied = false, 2000) })"
class="absolute right-3 top-3 rounded-lg bg-slate-700 px-3 py-1.5 text-xs font-bold text-slate-200 hover:bg-slate-600 transition"
x-text="copied ? '已复制' : '复制'">