简介
一个Telegram Covid-19 Bot 定时缓存数据 渲染图表
第三方模块
遇到的问题以及解决
- 无头浏览器无中文字体—添加字体文件
- tgbot使用缓存图片不更新—添加时间戳参数
- iding空转自动i休眠—cron自己ping自己
- Heroku Go依赖错误—生成Go的Vendor依赖文件
我的环境以及用到的服务
- Go 1.17
- Debian 10
- Telegram Api
- Heroku
- Telegram 客户端
开发及部署
目录结构
- bot—bot初始化以及路由
- Channel—全局channel
- data—网络客户端从Api获取数据以及无头浏览器
- maker—将数据处理成Tg的消息格式
- model—各种结构体
- public文件—个人主页
- list.json文件—由于支持地区较为固定这里直接保存成文件
关于getUpdates和setWebhook
官方文档解释机器人的两种接受消息的方法一个是轮询一个是Webhook,前者即机器人不断请求Api询问有无最新消息需要处理,后者即你的Webhook通知你的机器人有消息来了,前者胜在本地调试方便。后者胜在耗费资源少,处理消息快,也更优雅,但是webhook需要有服务器和证书条件,这里Heroku提供免费的使用额度。
如何使用webhook
机器人部分
这里官方文档有解释配置部分。简单说就是写一个网络客户端,开一个地址给Webhook,钩子接受到消息解析成Api里面Update再传递给机器人。
Heroku部分
到App的设置面板添加你的Webhook,注意与程序中的一致,建议为你的Heroku App的地址+你的机器人token,因为除了你自己没人知道。
部署
Heroku提供了自动部署,建议阅读使用文档。
ChangeLog
- 2022.1.20 全局概览
- 2022.1.16 初始化数据,定时更新数据,风险地区优化
- 2022.1.15 图表中文支持
- 2022.1.14 使用文件传输图表,优化了定时器,初始化图表
数据以及图表来源
丁香园
腾讯
百度
参考项目及文档
煎蛋爬虫
go-telegram-bot-api
Marvin的Webhook奇妙指南
Tg Api
Preview
折线图
饼图
风险地区
概览
实时新闻