使用git repo作为主存储的日记机器人

GitDiaryBot的Python项目详细描述


telegrambot,将传入的消息写入文本文件并使用Git存储库进行同步。 除了纯文本输入,它还可以理解位置、语音记录和照片。在

这个机器人应该是自托管的。 Demo bot正在多用户模式下运行,可以用于试用。在

决策和权衡

问题

我想写私人日记。我把现在对我重要的东西贴在那里。 有时我会重新组织内容,编辑旧记录。我不想分享任何一部分。在

要求

GitDiaryBot必须:

  1. 私人-任何第三方都不应能够查看或控制日记。
  2. 简单-不需要特殊的软件来读/写记录。
  3. 可靠-网络/硬盘驱动器故障不应导致记录丢失或未保存。
  4. 独立-支持自托管服务器端,私有存储库。

选择

GitDiaryBot的设计基于三个假设:

  1. 日记是一个单一的纯文本文件,它通过附加记录而增长。
  2. Git用于同步和备份。
  3. 新记录来自聊天机器人的消息。

虽然每个部件都可以更换,但主要目标是让这种组合起作用。在

面向对象的体系结构

调度程序正在对电报。机器人通过委派到2个类进行更新:

  1. 安装程序
  2. 接受者

接收方尝试使用传入更新中的有效用户ID加载租户。 若租户不存在,调度程序将调用安装程序来运行安装流程。在

对于成功加载的租户,调度程序调用从中提取GitDiaryBot事件的接收器 电报更新消息并调用适当的处理程序。在

处理程序使用核心类处理事件。在

核心课程的职责是:

  • 保存日志记录。
  • 与上游同步。
  • 转录声音。
  • 地理编码坐标。
  • 注释照片。

核心类不允许导入核心目录之外的任何内容。在

Transformers使用核心类从其他媒体提取纯文本记录。在

技能结合电报过滤器,提取器,事件类型和处理程序。 Skillset定义租户可用的功能。在

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

推荐PyPI第三方库


热门话题
javascript如何找到socket。同一局域网上的IO服务器?   将Java代码格式化为Word/RTF格式   java学习对象以及如何将分配的变量封装到私有变量   java Websocket客户端不在Tomcat中工作   java如何在点击按钮时打开本机表情键盘?   java使用哪个Maven GlassFish插件?   Eclipse Java构建路径不允许添加外部JAR   继承Java6集合。勾选适当的用法   JavaApacheDateUtils:使用多个模式解析日期   java hibernate如何生成查询?   具有id或链接的java Dropbox下载文件或文件夹   java模态对话框未在PrimeFaces 5上显示   java将类对象转换为人类可读的字符串   更新数据库中字段的java通用方法   java无法通过Apache Tomcat访问网络文件夹