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

Aiogram内置IDFilter无法适配动态更新用户ID列表问题

问题

需验证消息发送者是否在“特殊”用户列表中,仅允许该列表内用户使用特定命令,遂采用Aiogram内置IDFilter实现。但该列表会动态更新,测试发现IDFilter无法识别列表更新内容:即使执行clear命令清空config.mylist,IDFilter仍能验证通过并触发secret命令;而使用lambda message: message.from_user.id in config.mylist作为过滤条件时,可正常响应列表的动态变化。询问该现象的原因。

原因分析

核心差异在于两者读取列表的时机和方式不同:

  • Aiogram的IDFilter是静态缓存机制:当你创建IDFilter实例时,它会把传入的用户ID列表直接复制一份并存在内部,后续无论原列表(比如config.mylist)怎么修改、清空,IDFilter验证时只会用初始化时缓存的那份旧数据,自然无法识别动态更新。
  • lambda表达式是实时动态读取:用lambda message: message.from_user.id in config.mylist作为过滤条件时,每次有消息触发命令验证,都会实时去读取config.mylist的当前状态,所以列表的清空、新增等变化能立刻生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 04:09:52