当前位置: 首页 > 开发杂谈 >

#19 Telegram Bot 起手式

今天开始做我们的 Telegram Bot!

Telegram

Telegram 是一个通讯软件,就像是 Messenger 或 Line 一样,只不过它更加的「开放」,你甚至可以自己写一个喜欢的介面。

他的 API 文件非常完整,我们在写 Bot 的时候应该会常常需要用到,先在这里提供个连结

Cloudflare Workers

Cloudflare Workers 是 Cloudflare 提供的一个 Serverless 运算服务,免费方案的上限是一天 100,000 个请求,对我们自用的 Bot 非常够用。

限制

在使用前,我们需要先了解一下免费方案的一些相关限制。

  • 单一 Script 的大小限制是 1 MB
  • 一次执行的时间上限是 10 ms
  • 一次执行的发送请求数最多为 50 个

第一个限制代表你不能将整个 JSDOM 这种大 Package 包起来丢上去。
第二个限制代表你程序不能写太复杂的运算,像是大量文字比对或是图片处理之类的。
第三个请求应该跟我们要做的关系比较不大,但还是提醒一下,如果你要做合并很多资料来源的事,要小心不要超过 50 个。

我在这里推测你都先注册好 Cloudflare 帐号了,那就让我们开始吧!

用途

我认为 Cloudflare Workers 的用途很广,这里列出几个例子:

  • Reverse Proxy
  • API on Edge
  • Website Uptime Checker
  • Chat Bot Client
  • 刷流量

你可以将 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 了。

这样专案大致就建置完成了,明天就该来想点重要的部分罗。


每日铁人赛热门 Top 10 (1002)

以 10/02 20:00 ~ 10/03 20:00 文章观看数增加值排名

  1. +1337 #18 用免费 Serverless 及 JavaScript 写 Telegram 聊天机器人!
    • 作者: JacobLinCool
    • 系列:JavaScript Easy Go!
  2. +242 JS 07 - 原型方法:欲达则必速
    • 作者: Felix
    • 系列:JavaScript 从 50% 开始,打造函式库不是问题!
  3. +141 D19 - 「呐,你想要成为什麽颜色?」:打造一个调色盘吧!
    • 作者: 鳕鱼
    • 系列:你渴望连结吗?将 Web 与硬体连上线吧!
  4. +126 # 18 数据上的各种距离(3)
    • 作者: 新增资料夹9
    • 系列:终极大数据地狱
  5. +124 Proxmox VE 挂接网路储存 (二)
    • 作者: Jason Cheng (节省哥)
    • 系列:突破困境:企业开源虚拟化管理平台
  6. +112 Day 1 无限手套 AWS 版:掌控一切的 5 + 1 云端必学主题
    • 作者: 用图片高效学程序
    • 系列:无限手套 AWS 版:掌控一切的 5 + 1 云端必学主题
  7. +107 [区块链&DAPP介绍 Day25] Dapp 实战 投票系统 - 1
    • 作者: syhlion
    • 系列:区块链&DAPP介绍
  8. +102 DAY 18 制作 Nav Bar - dropdown
    • 作者: Tilda
    • 系列:SASS 基础初学三十天
  9. +102 Day20 - 用 Ruby on Rails 抓台湾证券交易所资料-每日收盘行情
    • 作者: 小菜
    • 系列:Ruby on Rails 与它们相关的东西 II
  10. +99 Day18 Let's ODOO: Paper Format
    • 作者: 盖瑞
    • 系列:Let's ODOO 开发与应用30天挑战

看吧,Cloudflare Workers 可以用来刷流量


相关文章:

  • DAY23:Service背景服务之实作
  • 亚马逊账户审核注意事项
  • 北美市场CSA认证指南
  • 对亚马逊Review内容存疑,如何进行申诉?
  • [Day 29 ] SQLite 上
  • 亚马逊卖家狂蹭流量!美国蹿升速度最快的独立站爆发的秘密是什么
  • Day19-JDK中的多功能工具:jcmd(二)
  • 【Day 17】混合云 x AWS Outposts 共享资源 x 网路设置
  • vue3 Composition API 学习手册-30 实战API练习
  • [Day 24] 新功能又来了!时间相关的测试!
  • 外贸人在顾客收到商品后要去不断跟踪
  • Wish+产品如何才能重新上架?
  • 亚马逊印度站卖家走过的“路”,您走过吗?
  • CLOUDWAYS主机限时6折优惠码,只到2020/12/2
  • 跨境电商解决退换货问题可以找海外仓,巴西站有哪些海外仓?
  • 教程/魔改BBR 一键安装脚本 for CentOS/Debian 7+
  • WordPress怎么建多语言网站:Polylang怎么用?如何用Polylang建多语言网站
  • 正规社交寻海外cps、网盟合作
  • Pinterest的商业指南(信息图):为什么以及如何在在Pinterest上推广你的业务
  • PayPal国外买东西教程:银联卡(国内储蓄卡信用卡)怎么用PayPal买国外的东西更安全
  • 瑞士银行开户指南:0门槛开户欧洲银行卡教程【Dukascopy开户教程】
  • 让 Rank Math SEO 输出关键词 keywords meta 字段信息
  • WordPress SEO插件-Yoast V13.3 汉化中文版高级版
  • 如何引导用户快速购买下单的冲动?引导用户购买行为的方法(Call To Action)
  • Google Play Store报错DF-DFERH-01怎么办
  • WordPress主题开发基础:Body 类指南
  • 使用MailPoet扩展您的电子商务邮件列表
  • Google Fi怎么在国内激活的方法和教程
  • 菲律宾虚拟卡预付卡大全
  • vultr.com怎么申请退款教程和方法