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

如何让Telegram自动回复Bot不回复特定用户?(Python实现)

解决Telegram Bot不回复特定用户的问题

你原代码里的 user_id = not(userlist) 写法是错误的,user_id 过滤器不支持这种反向排除的语法,下面给你两种可行的实现方式:

方法一:在处理函数内部判断拦截

直接在回复逻辑前检查用户ID,如果是需要排除的用户就跳过回复:

@dp.message_handler(content_types=['text', 'video', 'audio', 'photo', 
                                   'document', 'voice', 'animation'],
                    is_forwarded=False)
async def check(message):
    # 如果用户ID在排除列表里,直接返回不处理
    if message.from_user.id in userlist:
        return
    # 其他用户正常回复
    await message.reply("Thank you for your enquiry.")

方法二:用自定义过滤器在装饰器中拦截

利用user_id过滤器支持lambda函数的特性,直接在装饰器里排除目标用户:

@dp.message_handler(content_types=['text', 'video', 'audio', 'photo', 
                                   'document', 'voice', 'animation'],
                    is_forwarded=False,
                    # 只处理不在排除列表里的用户
                    user_id=lambda user_id: user_id not in userlist)
async def check(message):
    await message.reply("Thank you for your enquiry.")

另外注意你原代码里的字符串有语法错误:"Thank you for your enquiry.) 少了一个闭合的双引号,记得修正,否则会触发代码报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 22:25:41