用特权系统建立电报机器人的库。

privibot的Python项目详细描述


普里维博特

这个库提供了decorator,根据授予用户的特权限制对telegrambot处理程序的访问。 特权通过SQLAlchemy(SQLite、Postgres等)存储在数据库中。在

要求

privibot需要python3.6或更高版本。在

<详细信息>要安装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

^{pr2}$

使用^{}

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

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

内置处理程序

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

  • /开始
  • /帮助
  • /请求访问
  • /我的特权
  • /授予
  • /撤销

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Frida Java windows的逆向工程   Java术语中的对象初始化   java在何处放置maven参数化junit输入xml文件   java如何在Swift中创建以日期为键、布尔值为值的字典/地图?   java Velocity动态属性访问   java Maven站点我如何找到它们?   java JavaFX按钮在显示阶段时显示为选中状态   文件io字符串方法java赋值   java为SOAP头生成证书   java Android更改EditText的setError弹出消息的背景色   java格式存储为字符串的数字   java Testcontainers+dbrider:无法清除表X,消息:启用自动提交时无法提交。,原因:无效   java程序应该可以运行,但仍然没有输出?   Java在列表末尾添加一个节点?   java类对象中的默认构造函数做什么?   java如何更快地从映射返回键和值?