使用telegram机器人发送通知

news2024/11/6 23:32:27

文章目录

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

背景

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

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

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

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

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

1 创建机器人

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

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

/start

/newbot

YourNameBot (给机器人取名字,以 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 json

def telegram_notification(epoch, avg_test_scalars):
    """
    Send notification to telegram

    params
    epoch: int
    avg_test_scalars: dict

    return: None
    """
    # chat id of user
    CHAT_ID: int = 1234567
    # telegram bot token
    TOKEN="1234567"

    url = 'https://api.telegram.org/bot{}/sendMessage'.format(TOKEN)
    headers = {
        'Content-Type': 'application/json'
    }
    # main text
    text = "Epoch: {} has completed!\n".format(epoch)
    text += json.dumps(avg_test_scalars)
    # pack data
    data = {
        'chat_id': '{}'.format(CHAT_ID),
        'text': text
    }
    # send request
    response = requests.post(url=url, headers=headers, json=data)
    
    return


if __name__ == "__main__":
    telegram_notification(1, {'a': '1', 'b': '2'})

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1115088.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RK3568笔记四:基于TensorFlow花卉图像分类部署

若该文为原创文章&#xff0c;转载请注明原文出处。 基于正点原子的ATK-DLRK3568部署测试。 花卉图像分类任务&#xff0c;使用使用 tf.keras.Sequential 模型&#xff0c;简单构建模型&#xff0c;然后转换成 RKNN 模型部署到ATK-DLRK3568板子上。 在 PC 使用 Windows 系统…

项目环境配置

一、后端环境搭建-前后端联调 1.1 nginx反向代理 1.2 nginx负载均衡配置 二、完善登录功能 处理密码明文&#xff0c;防止密码被别人获取破坏系统 MD5加密是单向的不可逆的 &#xff0c;不能由加密后的换算加密前的 //密码比对password DigestUtils.md5DigestAsHex ( pa…

二叉树,堆排序及TopK问题

要讲二叉树的概念&#xff0c;就要先讲树的概念。 树是什么呢&#xff1f; 树其实是一种储存数据的结构&#xff0c;因为他的结构倒过来和生活中的树很相似所以才被称之为树。 这是一颗多叉树&#xff0c;从最顶端的节点可以找到下边的几个节点&#xff0c;下边的节点又可以找…

Apollo:前端开发者的全栈探索之旅

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

【C语言必知必会 | 第四篇】一文带你精通顺序结构

引言 C语言是一门面向过程的、抽象化的通用程序设计语言&#xff0c;广泛应用于底层开发。它在编程语言中具有举足轻重的地位。 此文为【C语言必知必会】系列第四篇&#xff0c;进行C语言顺序结构的专项练习&#xff0c;结合专题优质题目&#xff0c;带领读者从0开始&#xff0…

Halcon手眼标定

手眼标定&#xff08;参考&#xff1a;B站王佳琪老师) 这里说的手眼标定中的手指的是机械手或者电机运动的轴&#xff0c;眼表示摄像头 就是两个空间坐标系的转换&#xff0c;这个转换需要一个转换矩阵&#xff0c;那么转换矩阵需要根据两个坐标系的对应的九个点来通过vec_to…

如何用记事本制作一个简陋的小网页(3)——注册信息表

目录 前提须知&#xff1a; 一、表格建立之前&#xff1a; 二、表格的建立&#xff1a; 三、信息表的内容填充&#xff1a; 1.昵称 和 电话 &#xff1a; 2.密码&#xff1a; 3.性别&#xff1a; 4. 爱好&#xff1a; 5.民族&#xff1a; 6. 出生日期&#xff1a; 7.…

Python用selenium实现自动登录和下单的项目实战

本文主要介绍了Python用selenium实现自动登录和下单的项目实战&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起学习学习吧− 前言 学python对selenium应该不陌生吧 Selenium…

什么是低代码开发平台?有什么优势?

目录 一、低代码平台演进 1. 低代码概念 2. 低代码衍生历程 二、为什么要用低代码&#xff1f; &#xff08;1&#xff09;降本提效&#xff0c;便捷开发 &#xff08;2&#xff09;降低开发门槛&#xff0c;扩大应用开发劳动力 &#xff08;3&#xff09;加快数字化转型建设 三…

“第四十五天” 数据结构基本概念

目前看的有关数据结构的课&#xff0c;估计这周就看完了&#xff0c;但感觉差很多&#xff0c;还是和c一样&#xff0c;这样过一下吧。但可能比较急&#xff0c;目前是打算争取寒假回家之前把四大件都先大致过一遍。 数据结构里面有很多新的定义和概念&#xff0c;学到现在&am…

054协同过滤算法的电影推荐系统

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…

vue el-dialog弹出框自定义指令实现拖拽改变位置-宽度-高度

前言 在实际开发中我们经常使用el-dialog弹出框做表单&#xff0c;一般情况都是居中。遮挡到了一部分数据 当我们想要查看弹出框下面的数据时&#xff0c;就只能先把弹出框关闭&#xff0c;查看完数据之后在打开弹框 我们通过动态样式&#xff0c;和鼠标事件就可以实现。但自…

OpenLDAP LDIF详解

手把手一步步搭建LDAP服务器并加域 有必要理解的概念LDAPWindows Active Directory 服务器配置安装 OpenLDAP自定义安装修改对象&#xff08;用户和分组等&#xff09;修改olcSuffix 和 olcRootDN 属性增加olcRootPW 属性修改olcAccess属性验证新属性值 添加对象&#xff08;用…

Neo4j入门教程2(看不懂评论区随便骂)

1. ORDER BY create (s4:student{age:21,num:98}),(s5:student{age:22,num:86}),(s6:student{age:23,num:99})承接上文&#xff0c;创建三个学生节点&#xff0c;标签为student1、student2、student3&#xff0c;分别拥有age属性和num属性 match(s:student) return s查看我们…

驱动day2:LED灯实现三盏灯的亮灭

head.h #ifndef __HEAD_H__ #define __HEAD_H__ #define PHY_PE_MODER 0x50006000 #define PHY_PF_MODER 0x50007000 #define PHY_PE_ODR 0x50006014 #define PHY_PF_ODR 0x50007014 #define PHY_RCC 0x50000A28#endif 应用程序 #include <stdio.h> #include <sys/…

【C语言必知必会 | 第二篇】编译器的安装与使用

引言 C语言是一门面向过程的、抽象化的通用程序设计语言&#xff0c;广泛应用于底层开发。它在编程语言中具有举足轻重的地位。 此文为【C语言必知必会】系列第二篇&#xff0c;介绍C语言编译器的安装与使用&#xff0c;为之后的学习安装环境基础 文章目录 1️⃣ Dev-C的安装与…

【2024秋招】用友项目管理部门java后端二面2023.9.12

1 rpc框架 1.1 深入讲讲你做的这个rpc框架 答&#xff1a; 1.2 你这个注册中心有实现相关的监控吗 1.2.1 如何实现注册中心有实现相关的监控 是的&#xff0c;我可以为你提供关于RPC注册中心及其监控的相关信息。RPC注册中心是用于管理微服务之间调用关系的中心化服务&…

数学建模入门

一 数学建模简介 数学建模创办于1992年&#xff0c;每年一届&#xff0c;是首批列入“高校学科竞赛排行榜”的19项竞赛之一。2022年&#xff0c;来自全国及英国、马来西亚的1606所院校/校区、54257队(本科49424队、专科4833队)、超过16万人报名参赛。是目前奖项最具有含金量的…

基于材料生成优化的BP神经网络(分类应用) - 附代码

基于材料生成优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于材料生成优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.材料生成优化BP神经网络3.1 BP神经网络参数设置3.2 材料生成算法应用 4.测试结果…