폴링 모드에 작별 인사를 하고 효율적인 Telegram Webhook을 도입하세요! Telegram 서버에 지속적으로 업데이트를 요청하는 폴링 방식과 달리 Webhook을 사용하면 Telegram이 업데이트를 서버에 직접 푸시할 수 있으므로 서버 리소스 소비가 줄어들고 효율성이 크게 향상됩니다. 이전 기사에서는 Node.js를 사용하여 Telegram 로봇을 구축하고 폴링 방법을 사용하여 업데이트를 얻는 방법을 설명했습니다. 이 접근 방식이 효과적이지만 확장성을 찾고 있다면 현재 속도 제한이 발생하지 않더라도 웹훅으로 전환하면 봇이 더 효율적으로 실행되고 증가하는 트래픽을 쉽게 처리하여 서버의 부하를 줄일 수 있습니다.
웹훅을 사용할 때 다음 사항에 꼭 주의하세요.
텔레그램은 웹훅 포트 4개만 지원합니다. 이 제한사항의 이유는 현재 명확하지 않지만 향후 변경될 수 있습니다. 현재 지원되는 포트는 다음과 같습니다.
웹후크가 제대로 작동하려면 이러한 포트 중 하나가 사용 가능하고 액세스 가능해야 합니다. 포트를 명시적으로 지정하지 않으면 웹훅은 기본적으로 8443 포트로 설정됩니다.
포트는 4개만 허용되므로, 동일한 서버에서 웹훅을 사용하는 애플리케이션의 개수는 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>
웹훅으로 전환하면 Telegram 속도 제한 문제를 제거하고 봇의 효율성을 높일 수 있습니다. 서버를 올바르게 구성하고, 허용된 포트를 사용하고, HTTPS를 사용하여 연결을 보호하는지 확인하세요.
내 다음 기사가 게시되면 알림을 받으려면 나를 팔로우하세요 ?.
위 내용은 텔레그램 웹훅의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!