Github消息推送到Telegram,并使用Vercel部署

news2024/10/9 12:29:34

Github buibuibui Telegram


仓库地址:https://github.com/yesmore/gh-buibuibui-tg

借助 Github 的 Webhooks、Vercel’s Serverless API 和 Telegram Bot,连接 Github 和 Telegram,在 Telegram chat 中接收仓库的消息。

效果:你给仓库 yesmore/aka.js 点了 star,你的 telegram 频道/群组将会收到一个包含各种元数据(可选)的点赞信息, 其他 Github 事件同理。

这是部署在我的 tg 群组(https://t.me/yesmore_cc)推送,欢迎加入~

开始 Vercel 部署旅程

在这段旅程中,我们将遇到三个神秘的平台:Github / Telegram / Vercel,请确保你已经完成了账号的注册,故事将会以所需的环境变量为线索,引导你一步步探索。

跟随我一起开始旅程吧!

第一步,创造你的 tg 机器人并获取 TG_TOKEN。打开 Telegram,寻找 @BotFather,创造你属于自己的机器人。BotFather 是 Telegram 中机器人界的传奇人物,他可以协助你创造出小小的机器人。按照他的指导完成创造,一旦完成(即设置好机器人的昵称),BotFather 会向你发送一条信息,里面就包含了 HTTP API Token,也就是你需要的 TG_TOKEN。之后,你将通过这个机器人向 Telegram 的群组/频道发送消息。

第二步,创建 tg 群组/频道并获取 TG_CHAT_IDTG_CHAT_ID 就是群组/频道的 ID。Telegram 的 ID 通常是不显式的,你可以通过 Google 搜索如何获取 ID。这里推荐一个获取 ID 的 tg bot @username_to_id_bot,添加后向其发送你的群组/频道的唯一名称,就能拿到啦~

第三步,生成Payload URL(即发送 Post 请求的目标 Api)。在这一步,你有两个选择。你需要先了解最后两个参数的作用,即 GH_HOOK_SECRETPRODGH_HOOK_SECRET 用于验证请求是否来自 Github,它会在创建 Github Webhooks 和填写 Vercel 环境变量时使用。PROD 是 Vercel 环境变量之一,用于判断是否部署到生产环境。

两个参数是互斥的,即你可以选择方案一:不填写 GH_HOOK_SECRET,同时设置 PRODfalse,因为非生产环境会忽略 secret 校验;或者选择方案二:填写 GH_HOOK_SECRET,设置 PRODtrue

第四步,如果你选择方案一。点击下方的【Deploy】按钮开始部署到 Vercel。此按钮的行为是:跳转到 Vercel 部署页面,提示你克隆本仓库到你的 Github 账号下,输入仓库名称后(可同名,本质就是 fork 此仓库),点击 create,然后填写 Environment variables 环境变量,注意 PROD 设置为 false,点击部署。

第五步,如果选择方案二(若已经用方案一部署过,可以编辑修改 Vercel 环境变量即可)。根据文档 Github Webhooks,
GH_HOOK_SECRET 需要手动生成,在终端中执行 ruby -rsecurerandom -e 'puts SecureRandom.hex(20)',并保存,接着同方案一操作,注意环境变量 PROD 设置为 true,并填写 GH_HOOK_SECRET。部署成功后,Payload URL 就是你的 vercel 预览地址:https://your-github-repo-name.vercel.app/api,将在下一步创建 Hook 使用。

第六步,为仓库创建 Webhook,在你想监听的 Github 仓库中,点击 Setting,侧边栏点击 Webhooks,然后点击 add 创建,第一个参数 Payload URL 在第四/五步中获取;Content type 必须为 application/json;Secret 按照上述,方案一不用填,方案二填写即可;最后,下方选择中“Which events would you like to trigger this webhook?”,选择你需要监听的仓库事件,然后创建即可,第一次创建会触发一个 Ping 事件,测试是否生效。

“愉快的代码旅程,从部署开始!”

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hD1D3zqE-1675221096137)(null)]

Vercel Environment variables 环境变量

NameDescriptionExample
TG_TOKENTelegram Bot Token0123456789:ZBX2mpx9Wjg4iqAs6izMKDXVgVV92dOA0a
TG_CHAT_IDTelegram Chat ID to which updates are sent9876543210
GH_HOOK_SECRETGithub Hook Secretyour github hook seret
PRODProduction deployment or nottrue

支持的 Handlers & TODOs

目前仅支持私人仓库推送,暂不支持组织仓库,欢迎pr

私人仓库
  • ping
  • star
  • push
  • fork
  • repository
  • issues
  • issue_comment
  • pull_request
  • member
  • watch
组织仓库
  • ping
  • star
  • push
  • fork
  • repository
  • issues
  • issue_comment
  • pull_request
  • member
  • watch

所有 handler 在 event_handler.js 中查看

推送原理

git push -> touch Github webhooks then call Vercel’s api (http post) -> catch event then handle it -> use Telegram’s open api to send event message.

参考资料

  • Github Webhooks
  • Github Webhooks events

感谢支持

开源许可

gh-buibuibui-tg is open source software licensed as GPL.

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

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

相关文章

深入分析ConcurrentHashMap1.8的扩容实现

什么情况会触发扩容 当往hashMap中成功插入一个key/value节点时,有可能触发扩容动作: 1、如果新增节点之后,所在链表的元素个数达到了阈值 8,则会调用treeifyBin方法把链表转换成红黑树,不过在结构转换之前&#xff0…

做跨境电商日本市场,如何才能让客户满意?

跨境电商作为互联网技术的产物,现如今早就风靡全世界。我国跨境电商行业的发展起步时间比较晚,但在各方力量的加持下,行业的发展日趋完善,行业对国内经济的带动作用也更加明显。当下许多国潮品牌在Starday等跨境电商服务平台的支持…

如何选择研发效能管理平台?好用的研发效能管理平台有哪些

本文将对比介绍8款比较知名的效能度量管理平台:1.PingCode;2.思码逸;3.云效;4.金山云;5.Git;6.Jenkins;7.Bamboo;8.Docker。但在对比研发效能平台之前,我们先来聊一些研发…

Linux驱动开发基础__POLL机制

目录 1 适用场景 2 POLL机制的内核代码详解 2.1 sys_poll 函数 2.2 do_sys_poll 函数 2.3 do_poll函数 3 poll机制使用流程 4 驱动编程 5 应用编程 6 代码 6.1 gpio_key_drv.c 6.2 button_test.c 6.3 Makefile 可以看 字符设备驱动程序之poll机制 那篇文章中的机…

【认证相关】FTA

FTA 测试需要涉及的工作与流程测试大致流程及涉及的工作送测Lab 之前需做的准备工作项目与测试样机基本信息如下信息请填写发给MTK,以便MTK 了解基本的认证项目与产品信息PICS 相关MTK 会提供一份Chip 的default PICS,但是客户还需要自行修改一些项的Val…

分享154个ASP源码,总有一款适合您

ASP源码 分享154个ASP源码,总有一款适合您 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下..., 154个ASP源码下载链接:https://pan.baidu.com/s/1Jt3X-WAZv-rZswzjwyEtSQ?pwdt46u 提取码&#x…

【C++初阶】七、STL---vector模拟实现

目录 一、模拟实现接口总览 1.1 接口总览 1.2 vector整体框架 1.3 vector成员变量介绍 二、vector模拟实现 2.1 构造函数 2.1.1 无参构造 2.1.2 迭代器区间构造 2.1.3 n个val构造 2.1.4 拷贝构造 2.2 赋值运算符重载 2.2.1 传统写法 2.2.2 现代写法 2.3 析构函数…

蓝桥杯刷题018——和与乘积(贪心)

2021国赛:和与乘积 题目描述 给定一个数列 ,问有多少个区间[L,R] 满足区间内元素的乘积等于他们的和,即 输入描述 输入第一行包含一个整数 n,表示数列的长度。 第二行包含 n 个整数,依次表示数列中的数 a1​,a2​,⋯,a…

【Vue】模板语法——文本插值

一、模板语法什么是模板语法Vue 使用一种基于 HTML 的模板语法,使我们能够声明式地将其组件实例的数据绑定到呈现的 DOM 上。所有的 Vue 模板都是语法层面合法的 HTML,可以被符合规范的浏览器和 HTML 解析器解析。在底层机制中,Vue 会将模板编…

(十四)docker安装nacos

一、简介 操作系统:Linux CentOS 7.3 64位 docker版本:19.03.8 nacos版本:默认拉取最新版本 二、实践 1、拉取镜像 docker pull nacos/nacos-server 2、运行容器 docker run --name nacos -p 8848:8848 \ --privilegedtrue \ --restar…

二、什么是GStreamer

GStreamer是一个用于创建流媒体应用程序的框架。基本的设计来自俄勒冈研究生院的视频管道,还有一些来自DirectShow的想法。 GStreamer的开发框架使编写任何类型的流媒体应用程序成为可能。GStreamer框架旨在使编写处理音频或视频或两者同时处理的应用程序变得容易。…

01_学习springdoc的基本使用

文章目录1 什么是 springdoc ?2 springdoc 基本信息3 maven 依赖4 正文来袭4.1 给 Controller 加注解4.2 给 Model 加注解5 大功告成1 什么是 springdoc ? 网上冲浪🏄🏻‍♂️时,无意间发现 java web 应用程序的在线接口文档,除…

开源大数据分析平台的内容有什么?

在大数据时代,做好数据管理是非常重要的一个步骤。可以给企业做出正确的经营决策,指引新的发展方向。因此,随着数字化时代的到来,很多企业都倾向于寻找适宜的开源大数据分析平台,以此提升企业办公协作效率,…

【184】Win10下Java8调用Python的face_recognition库来实现人脸识别

前言 face_recognition 是一个开源的、人脸识别的Python库。本文讲解了在 Windows 10操作系统上,使用 Java8 来调用 Python 的 face_recognition 库来实现人脸识别。虽然 Java8 有 Jython,但是由于截至发文时 Jython 支持的版本太老(只有Pyt…

oracle——列表分页查询(原理)

文章目录前言数据表的准备分页sql1、简单分页实现2、排序分页3、排序优化前言 在平时的开发中,Oracle的分页查询用的特别多,接下来不止是说使用,更讲分页sql写法的原理。 数据表的准备 创建一张数据表,并填充大量的数据。 cre…

大数据技术架构(组件)12——Hive:判断函数

1.4.6、判断函数1.4.6.1、ifselect if(11,a,b),if(12,a,b) ;1.4.6.2、isnullselect isnull(1),isnull(null);1.4.6.3、isnotnullselect isnotnull(1),isnotnull(null);1.4.6.4、nvlselect nvl(1,1),nvl(null,1);1.4.6.5、coalesceselect coalesce(1,null,2,3,null,4,null),coal…

感谢第三弹 | 开启地铁国产化浪潮 GBASE获多方城市“地下动脉”肯定

岁末年初,GBASE收到了来自深圳地铁、高新现代智能系统股份有限公司、深圳达实智能股份有限公司等客户及合作伙伴发来的荣誉证书及感谢信。作为亲密无间的战友,GBASE携手高新现代、达实智能在深圳地铁CLC、ACC、AFC多个条线项目中通力合作,助力…

背包问题学习

01背包 01背包(0-1 Knapsack Problem) 有NNN件物品和一个容量为VVV的背包。放入第iii件物品耗费的费用是CiC_iCi​,得到的价值为WiW_iWi​。求解将哪些物品装入背包可以使价值总和最大 设F[i,v]F\left[i,v\right]F[i,v]表示前iii件物品敲好放入一个容量…

软件防错设计

出现非预期错误的原因解决方案原理介绍断根原理原理:将可能造成人错误的原因/条件从根本上排除断绝掉。通过冗余设计,屏蔽掉其中9种错误的方式;案例:USB的SD卡防写开关。4种可能性断根设计为只有1种可能是正确的。软件设计&#x…

Linux学习之环境准备【Vm+Centos】

文章目录前言一 VMware Workstation17 Pro下载和安装1.1 Vm下载指南1.2 VM安装指南二 Centos7安装2.1 装机器2.2 装系统三 补充内容3.1 卸载Centos前言 工欲善其事,必先利其器,我们要学习Linux当然需要Linux的环境由于大部分人使用的是Windows系统无法进…