唯一一个什么也不做的电报机器人库

DepyTG的Python项目详细描述


折旧

唯一的python3 telegram bot库不做nothing

等等,什么?

当然这根本不起作用。然而,与其他许多telegram bot库相比,它什么也做不了,这是一个设计目标。

设计目标

主要目的是亲吻-保持简单,愚蠢。

除了简单,depytg还试图:

  • 与Telegram的官方API规范有1:1的对应关系。您需要的唯一文档是电报。
  • 与您可能要使用的任何http库兼容-requests、flask、json+urllib、任何内容
  • 确保99.9999%的对象是json可序列化的
  • 提供一个简单(但完全可选)的api来完成网络任务
  • 与支持代码洞察的ide紧密集成,通过类型暗示可以暗示的所有内容
  • 不要试图重新发明轮子。telegram的api非常简单,我们不会实现简化的“send_message”方法。

大音符

这是一项正在进行的工作!我白手起家写这个是为了写我自己的电报机器人。我没怎么测试过。我在做的时候会测试的。我很快会写一些测试并添加ci。

快速介绍

创建对象
  • 手动
>>>types.Document(file_id='doc_id',file_name='ciao.pdf',thumb=PhotoSize(file_id='thumb_id',width=100,height=50))Document({'file_id':'doc_id','thumb':PhotoSize({'file_id':'thumb_id','width':100,'height':50}),'file_name':'ciao.pdf'})
  • 来自dict/json
>>>types.Document.from_json({'file_id':'doc_id','file_name':'ciao.pdf','thumb':{'file_id':'thumb_id','height':50,'width':100}})Document({'file_id':'doc_id','thumb':PhotoSize({'file_id':'thumb_id','width':100,'height':50}),'file_name':'ciao.pdf'})# Notice how the type of "thumb" (PhotoSize) is automatically detected.

调用方法

方法是常规的python对象。”调用“它们一次生成参数字典,然后两次(传递api令牌)实际发送请求。

  • 使用内置的API
#                     ↓ Pass fields here              ↓ Pass token here >>>methods.setWebhook("https://my.super.webhook.com")("my_bot_token")True>>>methods.getWebhookInfo()("my_bot_token")WebhookInfo({'url':'https://my.super.webhook.com','has_custom_certificate':False,'pending_update_count':0})
  • 使用外部库
#   ↓ Store to variable        ↓ Only pass fields>>>method=methods.setWebhook("https://my.super.webhook.com")>>>r=requests.post("https://api.telegram.org/botmy_bot_token/setWebhook",json=method)>>>method.read_result(r.json())True>>>r=requests.get("https://api.telegram.org/botmy_bot_token/getWebhookInfo")#   ↓ "read_result" is specific for each method>>>methods.getWebhookInfo.read_result(r.json())WebhookInfo({'url':'https://my.super.webhook.com','has_custom_certificate':False,'pending_update_count':0})

注意:

接受InputFile对象的方法有点特殊。首先,任何接受InputFile的字段都是可选的,即使telegram的api引用正好相反。

InputFile是唯一不能序列化json的对象,因此需要特殊处理。如果使用自定义http库,则需要按照telegram文档中的说明自行上载文件。

内置的请求api将自动处理InputFile对象,并将字段作为multipart/form-data发送。如果安装了requests-toolbelt,它将用于传输文件。

可能的问题

为什么要在api中定义每个可能的对象every

因为我的目标之一就是完成代码。

所有电报api对象和方法都是TelegramObjectBase的子类,它是dict的子类。这意味着所有内容(除了InputFile)都是json可序列化的,可以在此库之外使用。

dict已经被扩展为检查字段类型并使用标准的点表示法访问它们,这样,pycharm之类的ide就可以在您做错什么时发出警告。

它们被“重写”的原因是为了允许类型检查。

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

推荐PyPI第三方库


热门话题
java如何将cassandra中的行数据转换为与列相关的嵌套json   java如何使用jcr XPath在jcr:content/@jcr:data中搜索?   java在使用openCV进行安卓开发时如何利用手机的广角镜头   java解析扩展了接口,结束了一个潜在的无限循环   位置服务的@Override方法中存在java Android应用程序错误   java本地线程的用途和需求是什么   具有左右子访问的java节点树遍历   java验证JsonWebToken签名   JUL日志处理程序中的java日志记录   嵌入式Java读取给定时间段的串行数据。   java有没有办法从多个URL获取多个图像?   java线程通过等待intent阻止自己发送intent   java Spring MVC解析多部分内容请求   java JPA/Hibernate静态元模型属性未填充NullPointerException   java格式错误的字符(需要引号,得到I)~正在处理   java为什么PrintWriter对象抛出FileNotFoundException?   java Neo4j未正确保存标签   java IE不加载图像