Code Monkey home page Code Monkey logo

policr's Introduction

注意,本项目当前处于暂停运营、离线维修的阶段。这个时间可能很长,请使用 policr-mini 项目替代。

PolicrBot

Build Status GitHub issues License: MIT

大概是 Telegram 平台最强大的审核机器人

介绍

本项目的设计原则是定制、专注和私有部署。核心审核功能完备且复杂,能应对各种意外情况,还有人性化的验证容错设计。

专注体现在不做不相干的功能,定制体现在提供友好的设置菜单和众多的可选项,并支持多种验证方式(之所以称之为最强大,这也是核心原因。如果不是,请打醒)。

注意:无论是官网还是本页面都可能是过时的,想知道最新功能请关注更新频道。

功能概括

构成审核的四大子功能

  1. 新入群用户验证(支持六种方式)
  2. 封杀清真名称和发表清真消息的用户
  3. 自动限制普通成员新拉入的机器人
  4. 黑名单系统:举报、投票、预先封禁和申诉

内容审查功能(严格模式)

  1. 限制消息的长度和行数
  2. 限制上传文件格式
  3. 编写规则(基于自主规则引擎)屏蔽内容

定制内容屏蔽(不合规、垃圾或广告内容)

  1. 订阅全局规则,可选自动上报至黑名单投票
  2. 编写私有规则,视情况而自行定义屏蔽内容

附带的周边小功能

  1. 调查通过验证用户的来源
  2. 给通过验证用户发送欢迎消息
  3. 删除服务消息

强大的定制能力

  1. 定制审核子功能启用状态
  2. 定制周边功能启用状态
  3. 定制各种痕迹消息的删除以及延迟时间
  4. 定制验证方式
  5. 自定义验证问题
  6. 定制验证提示模板
  7. 定制验证倒计时时长
  8. 定制删除服务消息的类型

自由、安全而开放

  1. 可启用容许错误的验证机制
  2. 基于被信任管理员的机器人调整权
  3. 所有用户皆可举报违规消息
  4. 自动化且无法程序模拟的申诉流程
  5. 自助申请投票权(暂未开放)

额外特殊说明:

  1. 本项目(永远)不会支持图片验证码,因为我们提供了更加高级而友好的验证方式(这里有详细原因
  2. 黑名单系统不仅是自由开关的,其透明开放的设计也是保证公信力的前提。毕竟已经有一些被质疑黑箱操作的机制简单的黑名单机器人作为前车之鉴:)

开发技术

得益于原生语言 Crystal 的优势,机器人实例能以极低的成本高效率执行。编译完成后的二进制只有区区 4.9MB 大小,内存占用不超过 10MB,在保持低资源占用的同时能处理超高并发量的消息。

不同于很多将处理逻辑都集中于一个文件中的简单机器人,此项目源码有清晰的文件结构和良好的消息处理单元抽象。具备很高的扩展性和可维护性,能在不侵入已有功能代码的情况下进行扩展和定制。

使用&部署

相关说明已经全部迁移到官网首页,请访问这里

加入我们

policr's People

Contributors

satouriko avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

policr's Issues

重启后恢复定时任务

例如验证倒计时,延迟消息清理等行为会产生随时间触发的任务调度。目前没有对相关任务进行持久化保存和重启恢复的机制。对于重启后恢复的任务时间(例如已经超时)的处理也有待进一步思考,对依赖运行时状态的任务不能直接恢复。

添加清真白名单

考虑到有部分使用清真名字的正常用户被无差别的封锁且没有途径解除,决定更新相关功能和机制:

  1. 现在开始,清真将不会直接进行移除,而是进行限制
  2. 被识别的清真将会保留时间让他们主动选择抗议,时间内没有选择的将会被直接移除
  3. 被限制的清真消息底部将会提供「我是正常用户(PROTEST)」和「加入白名单」按钮
  4. PROTEST 按钮作为清真用户自行可点击的按钮,将会产生投票消息,审核通过即加入白名单
  5. 直接加入白名单功能仅管理员可用
  6. 被加入白名单的用户将不会再进入清真识别流程

通过指令调整审核功能的子功能开关

相关指令:/subfunctions

  • 支持群组指令
  • 支持私聊指令(意义不大)
  • 通过内联键盘显示子功能开关按钮列表
    • 新入群用户验证
    • 入群机器人限制
    • 封杀清真和消息
    • 预封禁问题用户
  • 应用所有开关状态

限制最小验证时间

最小验证时间需要大于 0 而小于某个数字,同时不会跟无限(0 或负数)产生冲突。

给设置指令提供内联键盘

  • 设置验证时间,包含内联键盘,包括无限(不限时)
  • 管理员可信状态,使用内联键盘调整和显示。精简为一条指令
  • 工作模式,使用内联键盘调整和显示。精简为一条指令

增强日志系统

  • 统一 TelegramBotKemal 的日志格式
  • Jennifer 框架共用日志对象
  • 改进日志输出

新的图片验证方式

类似 Google 的图片验证,但与之相反。给出一张图片和多个候选词汇,判断图片内容。

例如给出图片:

image

给出候选答案:

截至此计划实现仅支持单选即可。

增加功能禁用/启用指令

在当前群组发送指令禁用指定功能,并持久化存储

  • 使用 /disable_examine 禁用审核功能
  • 使用 /enable_examine 启用审核功能
  • 使用 /disable_from 禁用来源调查
  • 使用 /enable_from 启用来源调查

后台管理功能初步总计划

  • 通过私聊机器人获取 Token
    • 机器人自身为该群管理员,私聊用户为该群创建人,同时符合便生成 Token
    • 包含用以直接进入后台的链接按钮

默认验证问题有缺陷,待修改

恰好我在某个群看到有个人称自己被 PolicrBot 干懵了,我就顺便问了一下他的感受:

image

我认为这个回答非常有参考意义。虽然我企图用傻瓜式的问题减少用户思考的时间和降低出错的可能,但是这种傻瓜式反而加重了某些人的思考,延长了时间,甚至可能导致非有意的验证错误。

我需要一种不会误解有深意,并且仍然是傻瓜式的默认验证。

添加允许管理员修改设置的指令

  • 使用 /trust_admin 让 Bot 信任此群的管理员
  • 默认只允许创建人使用指令,信任管理员之后允许管理员使用指令
  • 使用 /distrust_admin 移除信任

服务群组列表后台管理

  • 使用机器人 Token 登录,重定向到此特殊管理页面
  • 获取数据包括:群组ID、群组链接、群组名称、是否具有 admin 权限
  • 表格显示所有服务群组,可加入和手动退出,刷新权限

纯动态化动态验证

当前的动态验证只有答案和问题是动态的,但正确答案索引是固定的。问题和正确答案的随机也保持在 1-9 数字范围内,仅支持加法等固定规律。

纯动态的动态验证:

  • 动态化正确答案索引
  • 动态化数字范围
  • 动态化更多运算符号(避免答题难度提升不考虑)

更完善的清真判定规则

  1. 将相关实现代码迁移至 Policr::HalalMessageHandler 模块
  2. 安全长度以内。以包含空格的正则表达式来全文匹配
  3. 安全长度以外。以(去掉空格的)清真字符来计算占比,进行判定

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.