ホームページ >ウェブフロントエンド >jsチュートリアル >電報ウェブフック
ポーリング モードに別れを告げ、効率的な Telegram Webhook を活用してください。 Telegram サーバーに更新を継続的に要求するポーリング方法とは異なり、Webhook を使用すると、Telegram が更新をサーバーに直接プッシュできるため、サーバーのリソース消費が削減され、効率が大幅に向上します。 前回の記事では、Node.js を使用して Telegram ロボットを構築し、ポーリング メソッドを使用して更新を取得する方法を説明しました。このアプローチは機能しますが、スケーラビリティを求める場合は、現在レート制限が発生していない場合でも、Webhook に切り替えることでボットがより効率的に実行され、増加するトラフィックを簡単に処理できるようになり、サーバーの負荷が軽減されます。
Webhook を使用する場合は、次の点に必ず注意してください。
Telegram は 4 つの Webhook ポートのみをサポートします。この制限の理由は現時点では不明ですが、将来変更される可能性があります。現在サポートされているポートは次のとおりです:
Webhook が適切に動作するには、これらのポートのいずれかが使用可能でアクセス可能である必要があります。ポートを明示的に指定しない場合、Webhook はデフォルトでポート 8443 に設定されます。
許可されるポートは 4 つだけであるため、Webhook を使用するアプリケーションの数は同じサーバー上で 4 つを超えることはできません。
セットアップを始める前に、以下のものがあることを確認してください:
完全なコードは Github にあります。
<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>
<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>
Webhook に切り替えると、Telegram のレート制限の問題が解消され、ボットの効率が向上します。サーバーを正しく設定し、許可されたポートを使用し、HTTPS を使用して接続を保護していることを確認してください。
次の記事が公開されたときに通知を受け取るには、私をフォローしてください。
以上が電報ウェブフックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。