跳转到主要内容

用于构建具有权限系统的Telegram机器人的库。

项目描述

privibot

这个库提供了装饰器,可以根据用户授予的权限限制对您的Telegram机器人处理程序的访问。权限通过SQLAlchemy(SQLite、Postgres等)存储在数据库中。

要求

privibot需要Python 3.6或更高版本。

要安装Python 3.6,我建议使用pyenv
# install pyenv
git clone https://github.com/pyenv/pyenv ~/.pyenv

# setup pyenv (you should also put these three lines in .bashrc or similar)
export PATH="${HOME}/.pyenv/bin:${PATH}"
export PYENV_ROOT="${HOME}/.pyenv"
eval "$(pyenv init -)"

# install Python 3.6
pyenv install 3.6.8

# make it available globally
pyenv global system 3.6.8

安装

使用pip

python3.6 -m pip install privibot

使用pipx

python3.6 -m pip install --user pipx

pipx install --python python3.6 privibot

使用方法

要限制对处理程序的访问,请像以下这样装饰您的回调函数

from privibot import require_access, require_admin


@require_access
def callback_for_registered_users(update, context):
    pass
  
  
@require_admin
def callback_for_admins_only(update, context):
    pass

要使用自定义权限,请定义如下

# privileges.py
from privibot import Privilege, Privileges as Ps


class Privileges(Ps):
    MEDIA_MANAGER = Privilege(
        name="media_manager",
        verbose_name="Media Manager",
        description="This privilege allows users to act (accept or reject) on media-related requests.",
    )
    USER_MANAGER = Privilege(
        "user_manager", "User Manager", "This privilege allows users to manage access of other users to the bot."
    )
    TESTER = Privilege("tester", "Tester", "This privilege allows users to test new things.")

现在只需使用这些权限与装饰器一起使用即可

from privibot import require_privileges

from .privileges import Privileges


@require_privileges([Privileges.USER_MANAGER])
def callback_for_user_managers_only(update, context):
    pass

您也可以手动检查权限,如下所示

from privibot import User

from .privileges import Privileges


def some_callback(update, context):
    telegram_user = update.effective_user
    db_user = User.get_with_id(telegram_user.id)
    
    if db_user.has_privilege(Privileges.TESTER):
        # do something
    elif db_user.has_privileges([Privileges.MEDIA_MANAGER, Privileges.USER_MANAGER]):
        # do something else

未通过权限测试的用户将收到一条消息,说明他们已被拒绝访问。

内置处理程序

此库还提供了以下命令的处理程序及其回调

  • /start
  • /help
  • /requestAccess
  • /myPrivileges
  • /grant
  • /revoke

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

privibot-0.1.1.tar.gz (8.8 kB 查看哈希值)

上传时间: 源代码

构建版本

privibot-0.1.1-py3-none-any.whl (11.1 kB 查看哈希)

上传时间: Python 3

由以下支持