今天开始做我们的 Telegram Bot!
Telegram 是一个通讯软件,就像是 Messenger 或 Line 一样,只不过它更加的「开放」,你甚至可以自己写一个喜欢的介面。
他的 API 文件非常完整,我们在写 Bot 的时候应该会常常需要用到,先在这里提供个连结。
Cloudflare Workers 是 Cloudflare 提供的一个 Serverless 运算服务,免费方案的上限是一天 100,000 个请求,对我们自用的 Bot 非常够用。
在使用前,我们需要先了解一下免费方案的一些相关限制。
第一个限制代表你不能将整个 JSDOM 这种大 Package 包起来丢上去。
第二个限制代表你程序不能写太复杂的运算,像是大量文字比对或是图片处理之类的。
第三个请求应该跟我们要做的关系比较不大,但还是提醒一下,如果你要做合并很多资料来源的事,要小心不要超过 50 个。
我在这里推测你都先注册好 Cloudflare 帐号了,那就让我们开始吧!
我认为 Cloudflare Workers 的用途很广,这里列出几个例子:
你可以将 Reverse Prooxy 的逻辑写在 Cloudflare Workers 上,把它当 Load Balancer 之类的东西。
也可以把它当成 API 或定时向网站传请求确认状态,当然也可以用来做 Chat Bot。
除此之外,因为 1 - 50 请求的比例,所以也可以当放大器,且请求是由 Cloudflare 在各地的节点送出,分散位置。不过因为 Cloudflare 为了安全因素有限制每分钟请求数,所以基本上不太可能成为攻击的工具,不过用来说流量不用那麽大量请求,就像是昨天的文章观看数,我用四五行程序 + Cron 5 mins
持续 8 小时就变这样了。
首先,我们一样需要再建立一个新的专案资料夹,这次就叫它 bot 好了。
接着, 安装 Wrangler 至全域环境:
npm i -g @cloudflare/wrangler
然後在 bot 资料夹中执行:
wrangler init
Wrangler 就会帮你生成好初始的 wrangler.toml 了:
name = "bot"
type = "webpack"
route = ''
zone_id = ''
usage_model = ''
compatibility_flags = []
workers_dev = true
compatibility_date = "2021-10-03"
这个档案就是 Cloudflare Workers 的专案设定档,之後 publish 到 Edge 时就会用到它的设定。
接着,因为我们之後会用到 webpack 来打包,所以还需要建立一个设定档 webpack.config.js:
module.exports = {
context: __dirname,
entry: "./index.js",
mode: "production",
target: "webworker",
optimization: {
minimize: true,
},
};
再来,因为我们也还是要用 NPM 做开发,所以还是要:
npm init -y
来初始或我们专案 npm 管理的部分。
接着,安装我们会需要用到的开发套件:
npm i -D @cloudflare/wrangler webpack webpack-cli
中间的 -D
代表的是这些套件是开发时要用的,并不是「产品」的一部分。
以及:
npm i itty-router
这个是「产品」的一部分,所以不用加 -D
。
然後建立一个 src 子资料夹,并在其中新增一个 main.js:
import { Router } from "itty-router";
const router = Router();
router.all("*", async (request) => {
const { query, headers } = request;
return response({ data: JSON.stringify({ ...request }, null, query.min ? 0 : 2) });
});
async function main() {
addEventListener("fetch", (event) => {
event.respondWith(router.handle(event.request));
});
}
export { main };
并在专案资料夹中建立 index.js:
import { main } from "./src/main.js";
main();
来引用并执行 main 来监听讯息传入。
与之前使用的 require
不同,我们在这里就用到 ESM 的 import
以及 export
了。
这样专案大致就建置完成了,明天就该来想点重要的部分罗。
以 10/02 20:00 ~ 10/03 20:00 文章观看数增加值排名
+1337
#18 用免费 Serverless 及 JavaScript 写 Telegram 聊天机器人!
+242
JS 07 - 原型方法:欲达则必速
+141
D19 - 「呐,你想要成为什麽颜色?」:打造一个调色盘吧!
+126
# 18 数据上的各种距离(3)
+124
Proxmox VE 挂接网路储存 (二)
+112
Day 1 无限手套 AWS 版:掌控一切的 5 + 1 云端必学主题
+107
[区块链&DAPP介绍 Day25] Dapp 实战 投票系统 - 1
+102
DAY 18 制作 Nav Bar - dropdown
+102
Day20 - 用 Ruby on Rails 抓台湾证券交易所资料-每日收盘行情
+99
Day18 Let's ODOO: Paper Format
看吧,Cloudflare Workers 可以用来刷流量
即使HTTP基本身份验证确实使用Base64来编码用户ID和密码,HTTP仍以明文形式传输编码,并依...
新增心情随笔资料 今天我们开始新增心情随笔资料, 根据之前的路由, 我们在 App\Http\Con...
如今,YouTube、TikTok、Dailymotion 等在线网站越来越受欢迎,并吸引了全球大量...
前言 这篇文章主要会提到资料分组 会继续利用kaggle上的开源资料进行更多的pandas练习 Ka...
今天也要让大家来练习,只不过今天的东西会稍微难想一点,所以今天一个题目而已。那我们就开始吧 题目 今...