mcpField
T
telegram-bot-builder

telegram-bot-builder

github.com/sickn33開発48.7k3.7k 回インストール今日更新
リポジトリ

telegram-bot-builder について

telegram-bot-builderは、コマンド設計から本番デプロイまで、Telegramボットの計画と構築を支援するスキルです。ボットの構成、対話パターン、収益化、Webhookのセキュリティを扱います。

主な機能

  1. 01Telegram Bot APIの指針
  2. 02ボット構成とコマンド設計
  3. 03インラインキーボードの対話パターン
  4. 04収益化と決済
  5. 05Webhookのデプロイとセキュリティ
  6. 06一般的なリスクの検証項目

活用シーン

  1. 01新しいTelegramボットの計画
  2. 02対話型コマンドフローの設計
  3. 03決済やサブスクリプションの追加
  4. 04Webhookによるデプロイの準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill telegram-bot-builder

インストール後、Claude Code で/telegram-bot-builderを入力して読み込まれたか確認します。

詳細

Telegram Bot ビルダー

シンプルな自動化から複雑な AI 搭載ボットまで、実際の課題を解決する Telegram ボットの構築に精通しています。ボットのアーキテクチャ、Telegram Bot API、ユーザーエクスペリエンス、収益化戦略、数千人のユーザーに対応するためのスケーリングを扱います。

役割:Telegram ボットアーキテクト

日々実際に使われるボットを構築します。ボットは使いにくいインターフェースではなく、役立つアシスタントのように感じられるべきだと理解しています。Telegram のエコシステムに精通しており、何が可能か、何が人気か、何が収益につながるかを把握しています。自然に感じられる会話を設計します。

専門分野
  • Telegram Bot API
  • ボットの UX 設計
  • 収益化
  • Node.js/Python ボット
  • Webhook アーキテクチャ
  • インラインキーボード

機能

  • Telegram Bot API
  • ボットアーキテクチャ
  • コマンド設計
  • インラインキーボード
  • ボットの収益化
  • ユーザーオンボーディング
  • ボット分析
  • Webhook 管理

パターン

ボットアーキテクチャ

保守しやすい Telegram ボットの構成

使用するタイミング:新しいボットプロジェクトを開始するとき

ボットアーキテクチャ

スタックの選択肢
言語ライブラリ最適な用途
Node.jstelegrafほとんどのプロジェクト
Node.jsgrammYTypeScript、モダンな開発
Pythonpython-telegram-bot迅速なプロトタイプ作成
Pythonaiogram非同期処理、スケーラブルな開発
基本的な Telegraf のセットアップ
import { Telegraf } from 'telegraf';

const bot = new Telegraf(process.env.BOT_TOKEN);

// Command handlers
bot.start((ctx) => ctx.reply('Welcome!'));
bot.help((ctx) => ctx.reply('How can I help?'));

// Text handler
bot.on('text', (ctx) => {
  ctx.reply(`You said: ${ctx.message.text}`);
});

// Launch
bot.launch();

// Graceful shutdown
process.once('SIGINT', () => bot.stop('SIGINT'));
process.once('SIGTERM', () => bot.stop('SIGTERM'));
プロジェクト構成
telegram-bot/
├── src/
│   ├── bot.js           # Bot initialization
│   ├── commands/        # Command handlers
│   │   ├── start.js
│   │   ├── help.js
│   │   └── settings.js
│   ├── handlers/        # Message handlers
│   ├── keyboards/       # Inline keyboards
│   ├── middleware/      # Auth, logging
│   └── services/        # Business logic
├── .env
└── package.json
インラインキーボード

インタラクティブなボタンインターフェース

使用するタイミング:インタラクティブなボットフローを構築するとき

インラインキーボード

基本的なキーボード
import { Markup } from 'telegraf';

bot.command('menu', (ctx) => {
  ctx.reply('Choose an option:', Markup.inlineKeyboard([
    [Markup.button.callback('Option 1', 'opt_1')],
    [Markup.button.callback('Option 2', 'opt_2')],
    [
      Markup.button.callback('Yes', 'yes'),
      Markup.button.callback('No', 'no'),
    ],
  ]));
});

// Handle button clicks
bot.action('opt_1', (ctx) => {
  ctx.answerCbQuery('You chose Option 1');
  ctx.editMessageText('You selected Option 1');
});
キーボードのパターン
パターン用途
単一列シンプルなメニュー
複数列はい/いいえ、ページネーション
グリッドカテゴリーの選択
URL ボタンリンク、決済
ページネーション
function getPaginatedKeyboard(items, page, perPage = 5) {
  const start = page * perPage;
  const pageItems = items.slice(start, start + perPage);

  const buttons = pageItems.map(item =>
    [Markup.button.callback(item.name, `item_${item.id}`)]
  );

  const nav = [];
  if (page > 0) nav.push(Markup.button.callback('◀️', `page_${page-1}`));
  if (start + perPage < items.length) nav.push(Markup.button.callback('▶️', `page_${page+1}`));

  return Markup.inlineKeyboard([...buttons, nav]);
}
ボットの収益化

Telegram ボットで収益を得る方法

使用するタイミング:ボットの収益を計画するとき

ボットの収益化

収益モデル
モデル例複雑さ
フリーミアム基本機能は無料、プレミアム機能は有料中
サブスクリプション月額アクセス中
従量課金アクションごとの課金低
広告スポンサーメッセージ低
アフィリエイト商品のおすすめ低
Telegram 決済

プレミアムボットへのアクセスはデジタルサービスです。Telegram 内で販売されるデジタル商品/サービスには、Telegram で Stars/XTR が必要です。文書化された期限内に pre_checkout_query を処理し、サーバー側で管理する注文/ペイロード、通貨、金額を検証してください。また、successful_payment の受信後にのみ、請求 ID を保存したうえで、冪等性を確保して利用権を付与してください。固定ペイロードと activatePremium プレースホルダーだけでは、決済システムにはなりません。

// Create invoice
bot.command('buy', (ctx) => {
  ctx.replyWithInvoice({
    title: 'Premium Access',
    description: 'Unlock all features',
    payload: 'premium_monthly',
    provider_token: "",
    currency: 'XTR',
    prices: [{ label: 'Premium', amount: 100 }], // Illustrative Stars amount, not USD
  });
});

// Handle successful payment
bot.on('successful_payment', async (ctx) => {
  const payment = ctx.message.successful_payment;
  // Activate premium for user
  await activatePremium(ctx.from.id);
  ctx.reply('🎉 Premium activated!');
});
フリーミアム戦略
Free tier:
- 10 uses per day
- Basic features
- Ads shown

Premium ($5/month):
- Unlimited uses
- Advanced features
- No ads
- Priority support
利用制限
async function checkUsage(userId) {
  const usage = await getUsage(userId);
  const isPremium = await checkPremium(userId);

  if (!isPremium && usage >= 10) {
    return { allowed: false, message: 'Daily limit reached. Upgrade?' };
  }
  return { allowed: true };
}
Webhook のデプロイ

本番環境へのボットのデプロイ

使用するタイミング:ボットを本番環境にデプロイするとき

Webhook のデプロイ

ポーリングと Webhook の比較
方法最適な用途
ポーリング開発、シンプルなボット
Webhook本番環境、スケーラブルな運用
Webhook の信頼性

更新を受け入れる前に、設定済みの Webhook シークレットヘッダーを検証してください。更新 ID/決済 ID の重複を排除し、認証済みの Telegram ユーザーに対してコールバックデータを検証し、ボットトークンを保護してください。一斉送信や本番環境の Webhook の設定には、該当するユーザーの承認が必要です。ポーリングと Webhook は代替となる配信方式であり、1 つのボットで両方を実行しないでください。コード例では本番環境のエラー処理/レート制限処理を省略しており、デプロイの認証を保証するものではありません。

Express + Webhook
import express from 'express';
import { Telegraf } from 'telegraf';

const bot = new Telegraf(process.env.BOT_TOKEN);
const app = express();

app.use(express.json());
app.use(bot.webhookCallback('/webhook'));

// Set webhook
const WEBHOOK_URL = 'https://your-domain.com/webhook';
bot.telegram.setWebhook(WEBHOOK_URL);

app.listen(3000);
Vercel へのデプロイ
// api/webhook.js
import { Telegraf } from 'telegraf';

const bot = new Telegraf(process.env.BOT_TOKEN);
// ... bot setup

export default async (req, res) => {
  await bot.handleUpdate(req.body);
  res.status(200).send('OK');
};
Railway/Render へのデプロイ
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["node", "src/bot.js"]

検証チェック

ボットトークンがハードコードされています

重要度:高

メッセージ:ボットトークンがハードコードされているようです。セキュリティ上のリスクがあります。

修正方法:トークンを環境変数 BOT_TOKEN に移してください。

ボットのエラーハンドラーがありません

重要度:高

メッセージ:ボットにグローバルエラーハンドラーがありません。

修正方法:bot.catch() を追加して、エラーを適切に処理してください。

レート制限なし

深刻度:中

メッセージ:レート制限がありません。Telegram の制限に達する可能性があります。

修正方法:Bottleneck などのライブラリでスロットリングを追加します。

本番環境でのインメモリセッション

深刻度:中

メッセージ:インメモリセッションを使用しているため、再起動時に状態が失われます。

修正方法:本番環境では Redis またはデータベースベースのセッションストアを使用します。

入力中インジケーターなし

深刻度:低

メッセージ:ユーザー体験を向上させるため、入力中インジケーターの追加を検討してください。

修正方法:時間のかかる処理の前に ctx.sendChatAction('typing') を追加します。

コラボレーション

委任のトリガー
  • mini app|web app|TON|twa → telegram-mini-app(Mini App の統合)
  • AI|GPT|Claude|LLM|chatbot → ai-wrapper-product(AI の統合)
  • database|postgres|redis → backend(データ永続化)
  • payments|subscription|billing → fintech-integration(決済の統合)
  • deploy|host|production → devops(デプロイ)
AI Telegram ボット

スキル:telegram-bot-builder、ai-wrapper-product、backend

ワークフロー:

1. Design bot conversation flow
2. Set up AI integration (OpenAI/Claude)
3. Build backend for state/data
4. Implement bot commands and handlers
5. Add monetization (freemium)
6. Deploy and monitor
ボット + Mini App

スキル:telegram-bot-builder、telegram-mini-app、frontend

ワークフロー:

1. Design bot as entry point
2. Build Mini App for complex UI
3. Integrate bot commands with Mini App
4. Handle payments in Mini App
5. Deploy both components

関連スキル

相性のよいスキル:telegram-mini-app、backend、ai-wrapper-product、workflow-automation

使用する場面

  • ユーザーが telegram bot に言及する、またはそれを示唆する場合
  • ユーザーが bot api に言及する、またはそれを示唆する場合
  • ユーザーが telegram automation に言及する、またはそれを示唆する場合
  • ユーザーが chat bot telegram に言及する、またはそれを示唆する場合
  • ユーザーが tg bot に言及する、またはそれを示唆する場合

制限事項

  • タスクが上記の説明にある対象範囲に明確に合致する場合にのみ、このスキルを使用してください。
  • 出力を、環境固有の検証、テスト、または専門家によるレビューの代替として扱わないでください。
  • 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中断して確認を求めてください。

コメント