Rumah > hujung hadapan web > tutorial js > telegram webhook

telegram webhook

Patricia Arquette
Lepaskan: 2025-01-19 20:36:10
asal
806 orang telah melayarinya

telegram webhook

Ucapkan selamat tinggal kepada mod pengundian dan terima Telegram Webhook yang cekap! Tidak seperti kaedah pengundian yang meminta kemas kini secara berterusan daripada pelayan Telegram, Webhook membenarkan Telegram untuk menolak kemas kini terus ke pelayan anda, dengan itu mengurangkan penggunaan sumber pelayan dan meningkatkan kecekapan dengan ketara. Dalam artikel sebelum ini, saya menerangkan cara menggunakan Node.js untuk membina robot Telegram dan menggunakan kaedah pengundian untuk mendapatkan kemas kini. Walaupun pendekatan ini berfungsi, jika anda mencari kebolehskalaan, walaupun anda tidak mengalami had kadar pada masa ini, beralih kepada webhooks akan memastikan bot anda berjalan dengan lebih cekap dan boleh mengendalikan peningkatan trafik dengan mudah, mengurangkan beban pada pelayan anda.

Pertimbangan utama untuk Telegram Webhook

Apabila menggunakan webhooks, pastikan anda memberi perhatian kepada perkara berikut:

Port yang dibenarkan

Telegram hanya menyokong empat port webhook. Walaupun sebab sekatan ini tidak jelas pada masa ini, ia mungkin berubah pada masa hadapan. Port yang disokong pada masa ini ialah:

  • 443 (HTTPS disyorkan)
  • 80
  • 88
  • 8443

Pengendalian webhook yang betul memerlukan salah satu port ini tersedia dan boleh diakses. Jika anda tidak menyatakan port secara eksplisit, webhook akan lalai ke port 8443.

Had Pelayan

Memandangkan hanya empat port dibenarkan, bilangan aplikasi yang menggunakan webhooks tidak boleh melebihi empat pada pelayan yang sama.

Prasyarat

Sebelum anda mula menyediakan, sila pastikan anda mempunyai yang berikut:

  • Node.js dipasang: Jika ia belum dipasang, muat turun dan pasang Node.js daripada nodejs.org.
  • Akaun Telegram: Anda memerlukan akaun Telegram untuk mendapatkan token bot dan berinteraksi dengan bot anda.
  • Ngrok untuk URL HTTPS: Telegram memerlukan webhooks untuk menggunakan titik akhir HTTPS. Gunakan Ngrok untuk mendedahkan pelayan tempatan anda kepada internet.

Kod lengkap boleh didapati di Github.

Tetapan Webhook Telegram (contoh Node.js)

<code class="language-javascript">// 导入Telegram Bot API
const TelegramBot = require('node-telegram-bot-api');

// 使用您的机器人令牌替换
const token = 'your telegram token'; // 请查看我的文章,了解如何在Telegram上从@BotFather获取机器人令牌

const WEB_HOOK_URL = 'https://localhost:3000/telegram-bot-webhook'; 
// 注意:它在localhost上无法工作,因此请使用ngrok之类的隧道服务。

// 创建使用Webhook的机器人
const bot = new TelegramBot(token, {
  webHook: {
    port: 88, // Telegram Webhook允许的端口:443、80、88、8443
  },
});

// 初始化Webhook
const initWebHook = async () => {
  const webhookInfo = await bot.getWebHookInfo();
  if (webhookInfo.url !== WEB_HOOK_URL) {
    await bot.setWebHook(WEB_HOOK_URL, {
      max_connections: 100,
    });
  }
};
initWebHook();

// 监听任何消息
bot.on('message', (msg) => {
  const chatId = msg.chat.id;

  // 简单命令处理
  if (msg.text.toLowerCase() === '/start') {
    bot.sendMessage(chatId, '欢迎!今天我能如何帮助您?', {
      reply_markup: {
        keyboard: [['/start', '/help']],
      },
    });
  } else if (msg.text.toLowerCase() === 'hello') {
    bot.sendMessage(chatId, `你好,${msg.from.first_name}!`);
  } else {
    bot.sendMessage(chatId, "我不确定如何回应。");
  }
});

// 导出机器人模块
module.exports = bot;
</code>
Salin selepas log masuk

Penghalaan Telegram Webhook

<code class="language-javascript">const express = require("express");
const app = express();
const bot = require("./bot");

// 解析POST请求的JSON主体
app.use(express.json());

app.get("/", (req, res) => {
  res.send("Hello World");
});

app.post("/telegram-bot-webhook", (req, res) => {
  bot.processUpdate(req.body);
  res.sendStatus(200);
});

app.listen(process.env.PORT || 3000, () => {
  console.log("服务器正在3000端口运行");
});</code>
Salin selepas log masuk

Ringkasan

Bertukar kepada webhooks boleh menghapuskan isu pengehadan kadar Telegram dan menjadikan bot anda lebih cekap. Cuma pastikan anda mengkonfigurasi pelayan anda dengan betul, menggunakan port yang dibenarkan dan selamatkan sambungan anda menggunakan HTTPS.

Ikuti saya untuk dimaklumkan apabila artikel saya seterusnya diterbitkan ?.

Atas ialah kandungan terperinci telegram webhook. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan