You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发连接RCON的Telegram机器人遇Session无法保存问题

解决Telegram机器人RCON连接中Session无法保存的问题

看起来你在开发Telegram RCON机器人时踩了一个Webhook场景的常见坑——默认的PHP Session在这种环境下根本没法正常工作,我来帮你拆解问题并给出可行的解决方案:

核心问题:Telegram Webhook的无状态特性

Telegram向你的机器人发送Webhook请求时,每一次都是独立的HTTP请求,Telegram服务器不会保存或携带任何Cookie信息。而PHP默认的Session机制完全依赖浏览器Cookie来关联用户会话,这就导致你设置的Session参数和session_start()在Webhook场景下形同虚设,自然无法保存会话数据。

可行的解决方案:基于用户标识的自定义会话存储

既然Cookie走不通,我们换个思路:用用户的chatID作为唯一标识,把RCON连接信息等会话数据存在文件、数据库或者Redis里。这里给你一个基于文件存储的简单示例:

define('BOT_TOKEN', 'xx:xxxxxx');
define('API_URL', 'https://api.telegram.org/bot'.BOT_TOKEN.'/');

// 读取Telegram请求内容并获取chatID(处理可能的空值)
$content = file_get_contents("php://input");
$update = json_decode($content, true);
$chatID = $update["message"]["chat"]["id"] ?? $update["callback_query"]["message"]["chat"]["id"] ?? null;

if (!$chatID) {
    exit; // 没有有效chatID时直接退出
}

// 自定义会话存储目录(确保服务器对该目录有读写权限)
$sessionDir = __DIR__ . '/bot_sessions/';
if (!is_dir($sessionDir)) {
    mkdir($sessionDir, 0755, true); // 创建目录,设置合适权限
}
$sessionFile = $sessionDir . 'session_' . $chatID . '.json';

// 读取已保存的会话数据
$sessionData = [];
if (file_exists($sessionFile)) {
    $sessionData = json_decode(file_get_contents($sessionFile), true) ?? [];
}

// -------------------------
// 这里是你的业务逻辑示例:比如保存/读取RCON连接信息
// -------------------------
// 示例:保存RCON主机信息
$sessionData['rcon_host'] = '192.168.1.100';
$sessionData['rcon_port'] = 27015;
$sessionData['rcon_password'] = 'your_rcon_pass';

// 示例:读取已保存的RCON信息
if (isset($sessionData['rcon_host'])) {
    // 在这里初始化RCON连接
    // $rcon = new Rcon($sessionData['rcon_host'], $sessionData['rcon_port'], $sessionData['rcon_password']);
}

// 保存会话数据到文件
file_put_contents($sessionFile, json_encode($sessionData));

额外需要检查的点

  • 权限问题:确保你的服务器对自定义会话存储目录有读写权限(比如上面的bot_sessions目录),否则会无法写入文件。
  • 会话过期:如果需要自动清理过期会话,可以定期遍历存储目录,删除超过指定时间的文件(比如24小时)。
  • 数据安全:如果存储敏感信息(比如RCON密码),建议对数据进行加密后再存储,避免明文泄露。

内容的提问来源于stack exchange,提问作者Mattia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:53:35