用特权系统建立电报机器人的库。
privibot的Python项目详细描述
普里维博特
这个库提供了decorator,根据授予用户的特权限制对telegrambot处理程序的访问。 特权通过SQLAlchemy(SQLite、Postgres等)存储在数据库中。在
要求
privibot需要python3.6或更高版本。在
<详细信息># install pyenv git clone https://github.com/pyenv/pyenv ~/.pyenv # setup pyenv (you should also put these three lines in .bashrc or similar)exportPATH="${HOME}/.pyenv/bin:${PATH}"exportPYENV_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 --user pipx pipx install --python python3.6 privibot
使用
要限制对处理程序的访问,请将回调函数装饰为如下所示:
fromprivibotimportrequire_access,require_admin@require_accessdefcallback_for_registered_users(update,context):pass@require_admindefcallback_for_admins_only(update,context):pass
要使用自定义权限,请按如下方式定义它们:
# privileges.pyfromprivibotimportPrivilege,PrivilegesasPsclassPrivileges(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.")
现在只需对装饰者使用这些特权:
fromprivibotimportrequire_privilegesfrom.privilegesimportPrivileges@require_privileges([Privileges.USER_MANAGER])defcallback_for_user_managers_only(update,context):pass
您还可以手动检查权限,如下所示:
fromprivibotimportUserfrom.privilegesimportPrivilegesdefsome_callback(update,context):telegram_user=update.effective_userdb_user=User.get_with_id(telegram_user.id)ifdb_user.has_privilege(Privileges.TESTER):# do somethingelifdb_user.has_privileges([Privileges.MEDIA_MANAGER,Privileges.USER_MANAGER]):# do something else
未通过权限测试的用户将收到一条消息,说明他们已被拒绝访问。在
内置处理程序
此库还为以下命令提供处理程序及其回调:
- /开始
- /帮助
- /请求访问
- /我的特权
- /授予
- /撤销
- 项目
标签: