使用telegram机器人发送通知

2023-10-21 01:36

本文主要是介绍使用telegram机器人发送通知,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 背景
  • 1 创建机器人
  • 2 与机器人的会话
  • 3 调用API让机器人发送消息

背景

在训练深度学习模型时,除了粗略估计外,很难预测训练何时结束。此外,我们可能还想随时随地查看训练情况,如果每次都需要登录回服务器的话并不方便。因此,为我们的训练设置自动通知会大有裨益。

相关的插件和库其实很多,例如而knockknock、dinglingling,但是存在着以下缺点:

  • 依赖第三方服务,dinglingling依赖于ServerChan在微信端发送通知,是需要付费订阅会员的。
  • 需要添加装饰器,代码可读性下降。
  • 自定义能力差,仅仅起到通知作用。

基于此,个人认为比较好的方式是直接能使用免费的服务给自己发送消息,我比较推荐使用telegram(电报),因为飞书、钉钉、企业微信等都或多或少在逐步限缩个人版的机器人使用,以后可能会成为付费专属功能。

可以正常使用telegram的情况下,可以按照下面的步骤操作。

1 创建机器人

电报的机器人是我们可以自己创建的一个聊天对象,表现形式和添加的好友一样,只是名字需要以 bot 结尾,不区分大小写。

要使用机器人发消息给自己或群组,先得有一个机器人,创建一个属于自己的机器人很简单,添加BotFather这个账号,依次发送以下内容即可:

/start/newbotYourNameBot (给机器人取名字,以 bot 结尾,不区分大小写,直接发送过去即可,如果重名了会提示重新输入)

创建成功后BotFather会返回一个token,这是用来调用API接口的,后面会用到。

2 与机器人的会话

上面我们创建了“YourNameBot”这个机器人,要与之对话,在任意聊天窗口发送 “@YourNameBot” 然后点击这条消息即可打开与YourNameBot的聊天。

如果你需要机器人发送消息给群组,还需要把机器人拉入到群组中。

特别注意:我们需要先与机器人之间创建会话,主动给它发一次消息,机器人才能给我们发消息,否则机器人无法主动发送消息。

通过发送第一条消息,我们可以访问

https://api.telegram.org/bot<YourBOTToken>/getUpdates

这个链接,把token替换成刚刚我们获得的机器人的token,就可以查看机器人的会话信息,因为我们向机器人主动发了消息,所以我们可以获取以message为key下面的[‘chat’][‘id’],这就是我们需要的chat_id(消息室的标识)。

3 调用API让机器人发送消息

现在,我们有了token、chat_id,接下来我们只需要组建我们的message就可以发送了,这个接口是:

https://api.telegram.org/bot<YourBOTToken>/sendMessage

我们可以使用python的requests库来发送post请求。写了个简易的代码,大家可以根据自己的需求进行修改。

import requests
import jsondef telegram_notification(epoch, avg_test_scalars):"""Send notification to telegramparamsepoch: intavg_test_scalars: dictreturn: None"""# chat id of userCHAT_ID: int = 1234567# telegram bot tokenTOKEN="1234567"url = 'https://api.telegram.org/bot{}/sendMessage'.format(TOKEN)headers = {'Content-Type': 'application/json'}# main texttext = "Epoch: {} has completed!\n".format(epoch)text += json.dumps(avg_test_scalars)# pack datadata = {'chat_id': '{}'.format(CHAT_ID),'text': text}# send requestresponse = requests.post(url=url, headers=headers, json=data)returnif __name__ == "__main__":telegram_notification(1, {'a': '1', 'b': '2'})

效果如图:
在这里插入图片描述

这篇关于使用telegram机器人发送通知的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/251047

相关文章

Java Thread中join方法使用举例详解

《JavaThread中join方法使用举例详解》JavaThread中join()方法主要是让调用改方法的thread完成run方法里面的东西后,在执行join()方法后面的代码,这篇文章主要介绍... 目录前言1.join()方法的定义和作用2.join()方法的三个重载版本3.join()方法的工作原

Spring AI使用tool Calling和MCP的示例详解

《SpringAI使用toolCalling和MCP的示例详解》SpringAI1.0.0.M6引入ToolCalling与MCP协议,提升AI与工具交互的扩展性与标准化,支持信息检索、行动执行等... 目录深入探索 Spring AI聊天接口示例Function CallingMCPSTDIOSSE结束语

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

在Java中使用OpenCV实践

《在Java中使用OpenCV实践》用户分享了在Java项目中集成OpenCV4.10.0的实践经验,涵盖库简介、Windows安装、依赖配置及灰度图测试,强调其在图像处理领域的多功能性,并计划后续探... 目录前言一 、OpenCV1.简介2.下载与安装3.目录说明二、在Java项目中使用三 、测试1.测

Go语言并发之通知退出机制的实现

《Go语言并发之通知退出机制的实现》本文主要介绍了Go语言并发之通知退出机制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、通知退出机制1.1 进程/main函数退出1.2 通过channel退出1.3 通过cont

C++中detach的作用、使用场景及注意事项

《C++中detach的作用、使用场景及注意事项》关于C++中的detach,它主要涉及多线程编程中的线程管理,理解detach的作用、使用场景以及注意事项,对于写出高效、安全的多线程程序至关重要,下... 目录一、什么是join()?它的作用是什么?类比一下:二、join()的作用总结三、join()怎么

mybatis中resultMap的association及collectio的使用详解

《mybatis中resultMap的association及collectio的使用详解》MyBatis的resultMap定义数据库结果到Java对象的映射规则,包含id、type等属性,子元素需... 目录1.reusltmap的说明2.association的使用3.collection的使用4.总

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分