添加过滤器。IS_BOT — 没有过滤器暴露 User.is_bot (多个机器人组聊天时需要)
□ 特性请求
增加"过滤器". IS BOT ' (及其否定)这样处理者就可以过滤是否 信件作者是一个机器人,没有手卷“MessageFilter”子类。
理由
" User.is-bot " 一直是 " User " 模型的一部分,只要Bot API 是多机器人团体聊天的天然歧视者 不过 " Filters.py"从不曝光:
控制台 (单位:美元) 导入再 src = 打开('elegram/ext/filters.py'). read (). print('is bot menues in filter.py:', src.count ('is bot')) 中的项目 m = re. search (r'-all s*=\s*\ (?)?)', src, re.S. print('ttotal 过滤器导出 :', len([x for x in m. group(1).split (',') if x.strip (])) " (中文(简体) ). 在过滤器中为 bot 发生。 py: 0 输出的过滤器总数: 66
66个出口过滤器,包括这个街区的几个过滤器——
`ViaBot'、`SenderChat'、`ChatType'、`IS AUTOMATIC-FORWARD'、`IS TOPIC MESSAGE'、`IS TOPIC-MESSAGE'、`IS AUTOMATTIC-FORWARD'、`IS TOPIC-MESSAGE'、`IS TOPIC-MESSAGE'、`IS TOPIC-MESSAGE '
`Is FROM OFFLINE'——没有人回答“这是机器人写的吗?”
最近的现有过滤器不是替代品 :
- “ViaBot ”与“via* a bot”(`message.via bot')发出的内在信息相匹配。
通常在一个团体内张贴的机器人`通过 bot是无',因此`ViaBot ' 错过了。
- QQSenderChat`**覆盖频道/匿名admin发送者,而不是bot用户.
-=YTET -伊甸园字幕组=- 翻译:
因此,今天唯一的办法是自定义过滤器:
[Python]
类 IsBot( 过滤器. MessageFilter) :
def 过滤器( 本身, 信件) :
返回 boul( 消息. from user and message. from user.is bot) 。
IS BOT = IsBot(名称为"filters.IS BOT") 互联网档案馆的存檔,存档日期2013-12-02.这是~5行,但它是5行 每个项目重写,很容易得到
低级错误( " 从 用户 " 是 " 无 " 频道广告)
message. from user.is bot' 提出属性错误',是无法发现的:
用户扫描过滤器列表后可以合理地认为 PTB 无法做到这一点。
使用大小写
我经营一队机器(2x DGX Spark, 2x Jetson Thor, AGX Orin, Orin Nano). 每个托管一个加入一个共享的Telegram组的代理。 探员需要 将机器人发来的信息与人类发来的信息区别对待——一般:读取 但只表现在人类对待他们时 所以两个家伙不能 乒乓打入一圈来.
这是关于 "is-bot " 的路线决定,是在处理者登记时间作出的, 这正是“过滤器”的目的:
# 对人类的反应 #
app.add handler(MessageHandler(filters.TEXT & ~filters.IS BOT, on human)) (中文(简体) ).
# 观察同行而不回答
app.add handler( MessageHandler( filters.TEXT & filters.IS BOT, on peer)) (中文(简体) ).与今天相比 机器人和人类的分裂必须发生 在处理器已经匹配之后 。
多机器人组越来越常见(代理舰队,桥梁,接力, 他们每个人都需要这个歧视者。
- 拟议变动
在现有“IS AUTOMATIC FORWARD”之后添加到“电报/外出/过滤器.py” / “IS TOPIC MESSAGE”模式:
类( IsBot(信封):
秒数 = ()
def 过滤器( 自,
. . . . . . .内容来源: python-telegram-bot/python-telegram-bot