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

Telegram群聊Bot启动时强制触发回复请求问题求助

解决方案:Telegram Bot群聊强制要求输入邮箱问题

1. 给Handler添加聊天类型过滤

既然私聊场景正常,直接在触发forceToEnterEmail的逻辑里增加聊天类型判断,仅私聊时才执行该方法:

if ($this->chat->type() === 'private') {
    $this->forceToEnterEmail();
}

从根源上避免群聊场景触发邮箱输入要求。

2. 清除会话状态残留

defstudio/telegraph自带会话管理功能,可能你在群聊中曾触发过邮箱输入流程,会话状态未被清除。可以在群聊的onChatMemberJoined或onMessage事件中,主动清除当前用户的会话状态:

$this->session()->forget('waiting_for_email');

确保进群时不会唤起未完成的输入流程。

3. 排查客户端缓存问题

既然重启Telegram时Bot未收到API请求,说明Bot没有主动发消息,大概率是你本地Telegram客户端的缓存残留。可以尝试:

  • 退出群聊后重新加入
  • 清除Telegram客户端的缓存(不同设备操作路径不同,可在设置的存储选项中操作)
  • 使用其他测试账号进群验证,如果新账号无此问题,即可确认是你账号的本地缓存问题。

4. 确认selective参数的正确传递

检查forceToEnterEmail方法中force_reply的配置,确保selective参数嵌套在正确位置:

public function forceToEnterEmail()
{
    $this->reply('请输入你的邮箱', [
        'reply_markup' => \DefStudio\Telegraph\Keyboard\Keyboard::forceReply([
            'selective' => true
        ])
    ]);
}

如果参数位置错误,selective不会生效,Telegram会将回复要求应用到整个群聊。

5. 检查Bot的群聊权限与自动触发逻辑

前往BotFather确认你的Bot是否开启了Group Privacy模式(默认开启),若关闭该模式,Bot会接收群聊内所有消息,可能误触发输入逻辑。另外,检查群聊是否设置了Bot的自动欢迎消息,导致进群时触发邮箱要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 11:32:39