>웹 프론트엔드 >JS 튜토리얼 >텔레그램 웹훅

텔레그램 웹훅

Patricia Arquette
Patricia Arquette원래의
2025-01-19 20:36:10807검색

telegram webhook

폴링 모드에 작별 인사를 하고 효율적인 Telegram Webhook을 도입하세요! Telegram 서버에 지속적으로 업데이트를 요청하는 폴링 방식과 달리 Webhook을 사용하면 Telegram이 업데이트를 서버에 직접 푸시할 수 있으므로 서버 리소스 소비가 줄어들고 효율성이 크게 향상됩니다. 이전 기사에서는 Node.js를 사용하여 Telegram 로봇을 구축하고 폴링 방법을 사용하여 업데이트를 얻는 방법을 설명했습니다. 이 접근 방식이 효과적이지만 확장성을 찾고 있다면 현재 속도 제한이 발생하지 않더라도 웹훅으로 전환하면 봇이 더 효율적으로 실행되고 증가하는 트래픽을 쉽게 처리하여 서버의 부하를 줄일 수 있습니다.

텔레그램 웹훅 주요 고려사항

웹훅을 사용할 때 다음 사항에 꼭 주의하세요.

허용된 포트

텔레그램은 웹훅 포트 4개만 지원합니다. 이 제한사항의 이유는 현재 명확하지 않지만 향후 변경될 수 있습니다. 현재 지원되는 포트는 다음과 같습니다.

  • 443 (HTTPS 권장)
  • 80
  • 88
  • 8443

웹후크가 제대로 작동하려면 이러한 포트 중 하나가 사용 가능하고 액세스 가능해야 합니다. 포트를 명시적으로 지정하지 않으면 웹훅은 기본적으로 8443 포트로 설정됩니다.

서버 제한

포트는 4개만 허용되므로, 동일한 서버에서 웹훅을 사용하는 애플리케이션의 개수는 4개를 초과할 수 없습니다.

전제조건

설정을 시작하기 전에 다음 사항을 확인하세요.

  • Node.js 설치: 아직 설치되지 않은 경우 nodejs.org에서 Node.js를 다운로드하여 설치하세요.
  • 텔레그램 계정: 봇 토큰을 받고 봇과 상호 작용하려면 텔레그램 계정이 필요합니다.
  • HTTPS URL용 Ngrok: Telegram은 HTTPS 엔드포인트를 사용하려면 웹후크가 필요합니다. Ngrok을 사용하여 로컬 서버를 인터넷에 노출하세요.

전체 코드는 Github에서 확인할 수 있습니다.

텔레그램 웹훅 설정(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>

텔레그램 웹훅 라우팅

<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.