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

如何修复JS开发Telegram机器人时出现的403封禁错误?

修复Telegram机器人403 "bot was blocked by the user"错误

这个错误的核心原因很直接——目标用户已经将你的机器人拉黑/屏蔽,此时机器人没有权限再向该用户发送任何消息,调用ctx.reply()就会触发403禁止请求。

修复方案

1. 捕获并处理屏蔽错误

给消息发送逻辑添加错误捕获,避免程序崩溃,同时记录屏蔽状态:

bot.start(async (ctx) => {
    console.log(ctx.chat.id)
    try {
        if (newClient(ctx.message.chat.id)) {
            createLog(ctx.message.chat.id)
            await ctx.reply("Message")
        } else {
            await ctx.reply("Message")
        }
    } catch (error) {
        if (error.error_code === 403 && error.description.includes("blocked")) {
            console.log(`用户 ${ctx.chat.id} 已屏蔽机器人,无法发送消息`)
            // 可选:将该用户标记为已屏蔽,存入数据库避免后续重复尝试
        } else {
            console.error("发送消息时出错:", error)
        }
    }
})

2. 提前跳过屏蔽用户(可选)

如果有用户数据库,在发送前先检查用户状态,减少无效请求:

bot.start(async (ctx) => {
    const chatId = ctx.chat.id
    console.log(chatId)
    
    // 假设isUserBlocked是自定义的数据库检查函数
    if (isUserBlocked(chatId)) {
        console.log(`用户 ${chatId} 已屏蔽机器人,跳过消息发送`)
        return
    }

    if (newClient(chatId)) {
        createLog(chatId)
        await ctx.reply("Message")
    } else {
        await ctx.reply("Message")
    }
})

注意事项

  • 用户屏蔽机器人后,只有用户主动取消屏蔽,机器人才能恢复通信权限,无法通过技术手段强制解除。
  • 不要频繁向已屏蔽用户发送请求,可能触发Telegram的请求频率限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:21:15