未提供项目说明

chaban的Python项目详细描述


查班

Python聊天机器人框架。使用了很多来自django的概念。在

链接

当前状态

正在大力发展中。Chaban应该是为许多平台开发机器人的框架。 现在正在研究电报机器人。此外,这个项目需要有强大的CLI,这也是在开发中。在

安装

pip install chaban

使用

项目结构

要引导一个新项目,我建议使用cookiecutter。在

^{pr2}$

目前,CLI还没有开发出来,但我希望它能很快上市。在

现在,运行以下命令获取chaban模板:

cookiecutter gh:ibrag8998/cookiecutter-chaban

回答问题

项目如下:

project_slug
+-- project_slug
|   +-- __init__.py
|   +-- handlers.py
|   +-- actions.py
|   +-- text.py
+-- settings
|   +-- __init__.py
|   +-- base.py
|   +-- dev.py
+-- requirements
|   +-- base.txt
|   +-- testing.txt
|   +-- local.txt
+-- scripts
|   +-- installdeps.sh
|   +-- mkenv.sh
+-- run.py
+-- ...

现在运行mkenv.sh脚本来生成.env文件,该文件存储一些配置和密钥:

cd scripts
./mkenv.sh
  • settings/包含您想要的任何设置,但也有一些必需的设置,如DEBUG。 把基本设置放在base.py中,只在dev.py中进行开发,其余的都将为您完成。 怎样?读取settings/__init__.py文件。在

  • requirements/包含单独的要求。base.txt是基础,项目将无法工作 没有他们。testing.txt仅用于测试。local.txt包含对直接开发者的要求, 例如:linter、formatter。在

  • scripts/包含用于管理项目的bash脚本。在

  • run.py是启动bot时要运行的文件。在

  • project_slug/是实际的核心:

    • handlers.py包含消息处理程序。在
    • actions.py包含消息处理程序将调用的逻辑。在
    • text.py包含要发送消息的文本片段。在

实际代码

首先,在handlers.py中定义一个消息处理程序,如下所示:

fromchaban.handlersimportCommandMHclassStartCommandMH(CommandMH):command='start'

现在,当一条消息出现时,您的处理程序看起来可以处理该消息 (通过使用regex检查,源代码中有更多信息),将调用action。但是等等。 我们没有定义任何行动!前往actions.py添加一个:

fromchaban.actionsimportActionclassStartCommandAction(Action):defact(self,message:dict)->None:self.tbot.send_message(message['chat']['id'],'Welcome!')

好吧,动作已经定义好了,现在让我们将处理程序与动作链接起来。 打开handlers.py文件和操作属性,如下所示:

...from.actionsimportStartCommandActionclassStartCommandMH(CommandMH):...action=StartCommandAction()

基本知识到此为止:D。现在打开您的终端并启动bot:

python run.py

用消息“/start”给你的机器人写一封信,看看它能不能用。在

贡献

求你了,救命。在

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

推荐PyPI第三方库


热门话题
java HQL内联查询   java重用拖缆对象   java EJB参考配置   Java Hashmap在散列上迭代并获取除当前键以外的所有键   java在AndroidX中实现Glide 4.10.0时发生错误AppGlideModuleImpl实现不正确   java JPA标准API类似/或基于关系   如何在运行时解决“java.lang.ClassNotFoundException:oracle.jdbc.driver.OracleDriver”?   java在链表中的特定位置插入节点   java如何为一个目录生成一个ID,这样即使在重命名之后也可以跟踪它   在Java中将字符串转换为哈希集   如何使用ewsjavaapi获取共享日历   类Java此类型的方法未定义   ArrayBag的java概念   java JVM在启动时占用整个XMX内存   在IE10中显示图像时发生java错误