过滤

Junction Bot中,您可以通过应用过滤规则来过滤传入的 电报 消息。 您可以决定接收哪些信息,哪些信息会被过滤掉,因此您不会看到(例如广告)。

滤波器可单独应用于通道,也可同时应用于所有通道。 您可以组合任何数量、任何种类的过滤器。

支持的功能:mustHave、mustNotHave、regex、按附件类型过滤等。

请注意,这里有一个非常有用的调试功能,可以为您节省很多时间。

命令

/filter- 创建一个过滤器(针对 1 个源),或者如果第二次输入,则删除一个过滤器。 与 "必须有"、"必须没有"、"每"、附件类型结合使用:必须有"、"必须没有"、"每个"、附件类型 /filterrx- 通过 regex 进行过滤(请参阅此处的示例) /filterall,/filterrxall-为所有来源创建过滤器 /filtersource_channel_reference- 查看当前应用于频道的所有过滤器

如果有多个从同一来源到不同目的地的转发规则,可以为不同目的地设置不同的设置、过滤器和替换。 点击此处查看更多详情。

必须有、必须没有过滤器

mustHave- 您将只收到包含特定文本的信息
格式:  /filter source_channel_reference mustHave text to receive
Ex.  /filter https://t.me/junction_bot_news mustHave cool cats
请记住,过滤器的文本是作为整个短语而不是单独的单词来应用的。 因此,在本例中,您将收到所有包含精确短语 "酷猫 "的信息。 您不需要像这里一样使用任何转义字符。

mustNotHave- 筛选出包含特定文本的邮件
格式:  /filter source_channel_reference mustNotHave text to filter out
Ex.  /filter https://t.me/junction_bot_news mustNotHave old hats

组合滤波器

多个必备 筛选器将根据 “OR “规则进行组合。

多个mustNotHave 过滤器将根据 “AND “规则进行组合。

注意:您不能在一条命令中将它们组合起来。 对每个过滤器使用单独的命令。

例如
/filter source_channel_reference mustHave cats
/filter source_channel_reference mustHave kittens
您将收到所有包含 "猫 "或 "小猫 "的信息
/filter source_channel_reference mustNotHave dogs
/filter source_channel_reference mustNotHave puppies 
您将不会收到任何包含 "狗 "或 "小狗 "字样的信息

按 电报 附件类型过滤

此外,您还可以过滤掉媒体信息。 为此,请使用以下字符串之一作为过滤文本: <照片>,<文档>, <音频>, <视频>, <标贴>, <嗓音>, <地点>, <动画>, <录像带>, <民意调查>.

例如
/filter source_channel_reference mustHave <audio> - 您将只收到来自该频道的包含音频附件的信息
/filter source_channel_reference mustNotHave <photo> - 您将不会从该频道收到任何包含图片的信息

高级过滤

此外,您还可以使用正则表达式 (RegEx)进行过滤。 为此,请使用 /filterrx 命令。 格式相同。

下面是一些常见的例子:
1.停止在图片说明中出现word 字样的帖子
/filterrx 信道参考 mustNotHave .*word.*<photo>.*
2.两个词 -word1 word2 - 按一定顺序排列
/filterrx source_channel_reference mustNotHave .*word1.*word2.*
3.两个单词,顺序不限
/filterrx 信道参考 mustNotHave (?=.*\bword1\b)(?=.*\bword2\b).*
5.两个单词,顺序不限,忽略寄存器
/filterrx source_channel_reference mustNotHave (?i:.*wOrd1.*woRd2.*)
6.一组词中的任何一个词
/filterrx source_channel_reference mustNotHave .*word1.*|.*word2.*|.*word3.*
7.您可以将它们组合起来。 例如,不区分大小写的任何单词
/filterrx 信道参考 mustNotHave (?i:.*wOrd1.*|.*worD2.*|.*woRd3.*)
8.任何包含俄语字母的单词
/filterrx source_channel_reference mustNotHave .*([а-яА-Я]+).*
9.任何 HTTP 链接
/filterrx source_channel_reference mustNotHave .*(http:\/\/|https:\/\/).*
10.任何数字
/filterrx source_channel_reference mustNotHave .*([0-9]+).*
11.任何 @ 用户名
/filterrx source_channel_reference mustNotHave .*@([a-zA-Z0-9=&_\-]+).*

在使用这些过滤器之前,了解什么是 RegEx 非常重要。 例如,使用正则表达式word2的过滤器不匹配邮件word1 word2 word3,因为它包含 word2 以外的单词。请记住在单词两侧添加 .*:.*word2.*

请注意一个重要的细微差别:过滤时,机器人可以在文本末尾添加空格和/或媒体内容代码。 因此,我们建议您始终在 RegEx 过滤器末尾添加.*

还有一点很重要:用于过滤器的 RegEx 通常在开头和结尾都有一个.* ,因为您希望整个信息符合表达式。 如果您想使用类似的表达式来替换,可能需要删除.* (否则替换将替换整个邮件文本)。

有一个非常方便的正则表达式测试工具:https://regex101.com。 将 Flavor 设置为 “Java 8″,并设置标志 “单行:点匹配新行 “标志。 这将使其工作方式与 @junction_bot 的匹配器相同。

正则表达式帮助

正则表达式是一个庞大的主题。 这方面的帮助超出了机器人管理的范围。 请不要私下写信给管理员,要求他们为您制定替代规则或过滤器。 此外,机器人管理部门也不会在支持小组中提供此类帮助。

根据您的需要创建正则表达式的最简单方法是询问ChatGPT,它在这方面非常擅长。

此外,您还可以在相关论坛寻求帮助。 例如StackOverflowCodeProject

为所有来源设置过滤器

要为当前所有来源添加过滤器,请使用/filterall/filterrxall (正则表达式)命令。

请注意,创建新转发规则时,过滤列表总是为空的。 您可以从现有源中复制过滤器。

例如
/filterrxall add mustNotHave .*(http:\/\/|https:\/\/).*

该命令将在所有信息源中添加一个过滤器,用于阻止任何包含链接的信息。

复制过滤器

Junction Bot中,您可以将所有过滤器从一个 电报 频道复制到另一个。 为此,请使用以下命令格式:

/filter channel_to_copy_filters_to addAllFrom channel_to_copy_filters_from

移除过滤器

要移除过滤器,只需再发送一次相同的命令。

要查看当前应用于通道的所有滤波器,使用命令

/filter source_channel_reference

要删除所有频道中的所有过滤器,请使用以下命令

/filterall DELETE ALL

对于 RegEx 过滤器,请相应使用/filterrx /filterrxall

只接收 N 个报文

Junction bot中,您可以按频率过滤 电报 消息,这样只有每 n 条消息才会被复制(在下面的示例中–每第二条消息)。 为此,请使用以下命令格式:

/filter source_channel_reference every 2

按日期和时间筛选

Junction 机器人可以根据来信的日期和时间过滤 电报 上的信息。

/filtertime source_channel_reference mustHave time interval

时间间隔设置:
– 必填信息的发送时间间隔
mustNotHave不应收到信息的时间间隔

时间间隔可包含星期、时间和时区。

星期几 它总是以字母w开头,然后是一周的天数(从周一开始)。
例如

w135
对应一周中的第 1、3 和 5 天(周一、周三、周五)

w67
对应一周中的第 6 天和第 7 天(周六、周日)

时间 时间始终为 24 小时格式,时间间隔为 – 至(含),小时:分钟。
例如
9:30-17:30
0:00-23:59

时区在此处查看可用时区列表。 如果您没有明确提及时区,则将设置为 CET – 欧洲中部时间(阿姆斯特丹/柏林/布拉格/维也纳)。

例如

/filtertime source_channel_reference mustNotHave 0:00-7:00
从午夜到欧洲中部时间早上 7 点,将不会收到信息。

/filtertime source_channel_reference mustHave w12345 8:00-20:00 America/New_York
信息只在工作日(周一至周五)发送,从纽约时间上午 8 点开始,到晚上 8 点结束。

要为所有信号源添加时间过滤器,可以使用/filtertimeall 命令。 例如
/filtertimeall add mustNotHave 0:00-7:00
移除:
/filtertimeall remove mustNotHave 0:00-7:00

按组内主题筛选

要设置主题过滤器,请使用以下命令:

/filtertopic source_channel_reference mustHave topicID

要了解小组的主题编号,请链接该主题中的任何帖子。 链接中间的数字是主题编号。 例如,如果链接是 https://t.me/publicchat/1723/36753,则主题编号是 1723。

例如

/filtertopic source_channel_reference mustHave 1723
只允许从主题编号 1723 开始发帖。

/filtertopic source_channel_reference mustNotHave 7231
过滤掉主题编号为 7231 的帖子。

要将信息从源的不同主题复制到不同的目标频道,首先要创建从源到目标的必要转发规则。 然后,对于每个特定的转发规则,按照以下说明使用/filtertopic 命令设置所需的过滤器。 例如,命令可能是这样的
/filtertopic &123456789#151617181->-1001222333444 mustHave 1723

要将消息从源主题复制到目标中的相同主题,需要手动创建目标主题。 然后,您需要为每个主题创建一个中间频道。 对于每个主题,首先要设置复制到具有所需主题过滤器的中间频道。 然后从中间信道到目的地,使用所需的topic 设置。

重复

在某些情况下,一条信息可能会向您发送数次。 例如,如果您订阅了两个频道,而这两个频道都转发了相同的帖子。 要过滤掉Junction Bot中所有相同的 电报 信息,请使用/setting duplicate 命令。 它适用于 24 小时内出现的相同信息。

/setting duplicate+ 下列选项之一:

通过- 禁用,允许重复
Ex.  /setting duplicate pass

过滤- 将重复的信息过滤掉
Ex.  /setting duplicate filter

要将此设置仅应用于一个通道,请将命令/setting 替换为/settingchannel source_channel_reference (更多信息)。

请注意,重复邮件过滤器会对原始邮件进行比较。 这就意味着,如果要避免在目标频道中出现因替换规则而导致的重复,就需要使用稍微复杂一点的方法–通过中间频道。

创建通道 C 并设置从 A(源)到 C(中间)的重定向。 将所有替换规则应用于通道 A。

接下来,设置从 C(中间站)到 B(目的地)的重定向。 我们对该重定向设置了一条过滤规则(使用/settingchannel C duplicate filter 命令),它将删除所有重复的内容,甚至包括那些由于替换规则而出现的内容。

完成! 如果您为第一个重定向(从 A 到 C)设置了重复过滤器,那么就不会影响因替换规则而出现的重复。

批量修改过滤器

/filterall– 此命令会将此过滤器添加到所有订阅和转发中。 请注意,并不存在一套通用的筛选器–一套适用于所有规则的筛选器并不存在。 每个具体的订阅/转发规则都有一组过滤器。

/filterall 的工作原理与 /filter 相同。

您可以设置一个操作来代替 source_channel:添加或删除。

/filterall add- 向所有频道添加新的过滤器。
格式:  /filterall add [rule] text to receive
Ex.  /filterall add mustHave bitcoin/filterall add mustNotHave litecoin

/filterall remove- 删除所有通道中的过滤器。
格式:  /filterall remove [rule] text to filter out
Ex.  /filterall remove mustHave bitcoin/filterall remove mustNotHave litecoin

将命令改为/filterrxall以使用正则表达式。

一个来源 – 多个目的地

如果您有多个从一个源转发到不同通道的转发规则,并且只想将一个过滤器设置为一个源-目的地规则,请按此说明操作。

source_channel_reference 中添加以下结构:->-1001251642436
其中,-1001251642436 是目的地通道在 电报 系统中的标识符,加上前缀”-100″(这是 电报 区分通道编号和其他对象编号的方法)。 查找该号码非常简单,只需在互联网上搜索相关说明即可。 例如,将频道中的信息转发给机器人 @junction_helper0_bot。 你会在 forward_from_chat.id 或 forward_from.id 中看到频道号码。
因此,举例来说,配置命令可能如下所示:
/filter source_channel_reference->-1001251642436 mustHave cats

过滤特定人员的帖子

您可以让Junction Bot过滤特定用户的 电报 消息。 假设 @source 是源聊天。 要只转发 @ 用户的信息,请执行以下操作:

  1. 使用命令创建新的转发规则 /new
  2. 使用以下命令打开复制作者姓名的功能
    /settingchannel source_channel_reference author full
  3. 使用命令为所需名称设置过滤器
    /filter source_channel_reference mustHave user_reference
    如果需要信息来自特定用户,同时包含特定文本,则需要使用稍有不同的命令:
    /filterrx source_channel_reference mustHave .*user_reference.*specific text.*

在大多数情况下,作为user_reference 可以使用用户的 @username。 在某些情况下,它将不起作用(例如,如果用户没有公开的用户名,或者机器人没有用户的完整信息)。 在这种情况下,您需要启用解释报告,查看用户在信息中的引用方式,然后使用该字符串。

如果设置为author ,生成的邮件将包含邮件作者的姓名。 有时,作者姓名不出现也是必要的。 这需要一个稍微复杂一点的过程–通过中间渠道。

创建通道 C 并设置从 A(源)到 C(中间)的重定向。 应用第 2 页和第 3 页的设置:
/settingchannel A author full
/filter A mustHave @user

接下来,设置从 C(中间站)到 B(目的地)的重定向。 我们在重定向中设置了一条替换规则(使用/replace 命令),它将删除作者姓名。
/replace B @user&nbsp;(User's&nbsp;name)

完成! 如果为第一次重定向(从 A 到 C)设置了该替换规则,则不会影响作者姓名。 作者姓名和源频道名称一样,都是服务文本,不受/replace 命令的影响,也可以通过其他方式调整。

过滤转发的帖子

您可以让Junction Bot过滤转发到源频道的 电报 消息。 假设 @source 是源频道。 要只复制 @source 的原始信息,而不复制从其他频道转发到 @source 的信息,请执行以下操作:

  1. 使用命令创建新的转发规则 /new
  2. 使用以下命令打开复制作者姓名的功能
    /settingchannel source_channel_reference header from_only
    它会在转发信息的开头添加一段文字:”来自” + 频道名称。
  3. 为要过滤掉的频道名称设置过滤器。 例如,如果转发的帖子来自名为 “转发来源 “的频道
    /filter source_channel_reference mustNotHave from Source of forwards
    如果要删除从其他频道转发的帖子,则需要使用稍有不同的命令:
    /filter source_channel_reference mustNotHave from

人工智能过滤

您可以自由描述任何过滤标准,让人工智能自动过滤您的邮件。 有趣的是,通过这种方式,您不仅可以根据信息文本本身进行筛选,还可以根据其含义和情感进行筛选。 例如,您可以要求人工智能只让正面新闻出现在您的频道 ☺️。

如何设置,请参阅此处

手动过滤

如果您想手动控制是否复制或跳过帖子,请使用审核模式

找出行不通的地方

检查当前的滤波器是否正确:

/filter source_channel_reference
/filterrx source_channel_reference

如果设置了很多过滤器,就很难弄清为什么某条信息可以通过或不能通过。 为了帮助您完成这项工作,有一个特殊的设置叫做 “解释”。 您可以使用命令将其设置为开启:

/settingchannelsource_channel_reference 解释

如果启用,您将收到来自该源信道的每条新信息的报告。 报告将解释为何该信息被过滤掉或允许通过。

要禁用解释模式,请使用命令

/settingchannelsource_channel_reference 解释为关闭