Pythonで作成された、お金を稼ぐための既製Telegramボット

Pythonで作成された、お金を稼ぐための既製Telegramボット

Telegramはチャットやチャンネルだけのプラットフォームではありません。スマートフォン上で独自のミニビジネスを立ち上げるチャンスも提供しています。必要なのは少しの時間と、それを理解しようとする意欲、そしてこの記事だけです。以下に、ゼロから作成して収益化できる、すぐに使えるボットのアイデアをいくつかご紹介します。

前回の記事では、収益化と集客に関するアイデアについて議論しました。

1. デジタル商品ボットストア

アイデア:自動的に発行できるもの(ファイル、アクセス権、キー、サブスクリプションなど)を販売する。

このようなボットは何を販売できるのか?

  • プラグイン、テンプレート、チェックリスト
  • ステッカーと壁紙
  • デジタルガイド
  • プライベートチャンネルへのアクセス

🔧 Python (aiogram) での実装方法

以下に、そのようなボットの非常にシンプルな例と、JSONを使用したやや複雑な例を示します。ただし、本格的なボットを作成するには、実際の決済API(コードの下に例があります)とデータベース(MySQL、SQLite、PostgreSQL)を使用する必要があります。

@dp.message_handler(commands=['start'])
async def welcome(msg: types.Message):
    kb = InlineKeyboardMarkup().add(InlineKeyboardButton("Купить товар", callback_data='buy'))
    await msg.answer("Добро пожаловать в магазин!", reply_markup=kb)
import json
import os
from aiogram import Bot, Dispatcher, types
from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup
from aiogram.utils import executor
from aiogram.contrib.middlewares.logging import LoggingMiddleware
from dotenv import load_dotenv

load_dotenv()

TOKEN = os.getenv("BOT_TOKEN")
bot = Bot(token=TOKEN)
dp = Dispatcher(bot)
dp.middleware.setup(LoggingMiddleware())

# Загружаем список товаров
with open("products.json", "r", encoding="utf-8") as f:
    PRODUCTS = json.load(f)["items"]

# Команда /start
@dp.message_handler(commands=['start'])
async def welcome(msg: types.Message):
    kb = InlineKeyboardMarkup().add(InlineKeyboardButton("🛒 Купить товар", callback_data='buy'))
    await msg.answer("Добро пожаловать в магазин цифровых товаров!", reply_markup=kb)

# Выводим список товаров
@dp.callback_query_handler(lambda c: c.data == 'buy')
async def show_products(callback_query: types.CallbackQuery):
    kb = InlineKeyboardMarkup()
    for product in PRODUCTS:
        kb.add(InlineKeyboardButton(f"{product['title']} — {product['price']}₽", callback_data=f"product_{product['id']}"))
    await bot.send_message(callback_query.from_user.id, "Выберите товар:", reply_markup=kb)

# Подтверждение покупки и ссылка на оплату
@dp.callback_query_handler(lambda c: c.data.startswith("product_"))
async def product_selected(callback_query: types.CallbackQuery):
    product_id = callback_query.data.split("_")[1]
    product = next((item for item in PRODUCTS if item["id"] == product_id), None)

    if not product:
        await bot.send_message(callback_query.from_user.id, "Товар не найден.")
        return

    kb = InlineKeyboardMarkup().add(
        InlineKeyboardButton("✅ Я оплатил", callback_data=f"paid_{product_id}")
    )
    await bot.send_message(
        callback_query.from_user.id,
        f"Товар: {product['title']}\nЦена: {product['price']}₽\n\nОплатить можно по ссылке:\n{product['pay_url']}",
        reply_markup=kb
    )

# Подтверждение оплаты и выдача товара
@dp.callback_query_handler(lambda c: c.data.startswith("paid_"))
async def confirm_payment(callback_query: types.CallbackQuery):
    product_id = callback_query.data.split("_")[1]
    product = next((item for item in PRODUCTS if item["id"] == product_id), None)

    if not product:
        await bot.send_message(callback_query.from_user.id, "Ошибка: товар не найден.")
        return

    # Вариант вручную (доверительный) — для MVP
    try:
        with open(product["file"], "rb") as file:
            await bot.send_document(callback_query.from_user.id, file, caption=f"Вот ваш товар: {product['title']}")
    except Exception as e:
        await bot.send_message(callback_query.from_user.id, "Ошибка при отправке файла.")

# Запуск
if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)
  • 支払い方法: ロボカッサ, かっさ などがあります。
  • 支払い後、ボットが商品(ファイル/リンク)を送信します。

2. AIボット(ChatGPTベース)

そのアイデアとは、人工知能を使ってユーザーの質問に答えるボットを作るというものだ。

できること:

  • テキスト、アイデア、記事を生成する
  • 質問に答える
  • 勉強の手伝い
import openai

openai.api_key = "your_openai_key"

@dp.message_handler()
async def gpt_reply(message: types.Message):
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": message.text}]
    )
    await message.reply(response['choices'][0]['message']['content'])

収益化:

  • サブスクリプション
  • リクエスト数の制限
  • 寄付またはブースト

3. コースボット(教育的なレッスンを提供するボット)

アイデア: Telegramを使って何かを教えるボット。

コース例:

  • Pythonをゼロから学ぶ
  • スマートフォンからデザイン
  • オンラインでお金を稼ぐ方法

🔧 FSMアプローチ(アイオグラム):

以下に、単純な例とより複雑な例を再び示します。

class Learning(StatesGroup):
    Lesson1 = State()
    Lesson2 = State()

@dp.message_handler(commands=['start_course'])
async def start_course(msg: types.Message):
    await msg.answer("Урок 1: Что такое Python?")
    await Learning.Lesson1.set()
from aiogram import Bot, Dispatcher, types
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.utils import executor

TOKEN = 'YOUR_BOT_TOKEN'

bot = Bot(token=TOKEN)
dp = Dispatcher(bot, storage=MemoryStorage())

# Состояния курса
class Learning(StatesGroup):
    Lesson1 = State()
    Lesson2 = State()
    Done = State()

# Кнопки
kb_next = ReplyKeyboardMarkup(resize_keyboard=True).add(KeyboardButton("➡️ Далее"))

# Команда старта курса
@dp.message_handler(commands=['start_course'])
async def start_course(msg: types.Message):
    await msg.answer("👨‍🏫 Урок 1: Что такое Python?\n\nPython — это простой язык программирования, с которого удобно начинать.\n\n❓Вопрос: Как называется язык, о котором идет речь?", reply_markup=kb_next)
    await Learning.Lesson1.set()

# Проверка ответа на 1 урок
@dp.message_handler(state=Learning.Lesson1)
async def lesson1_handler(msg: types.Message, state: FSMContext):
    if "python" in msg.text.lower():
        await msg.answer("✅ Верно! Переходим к Уроку 2...\n\n🧠 Урок 2: Где используют Python?\n- Веб-сайты\n- ИИ\n- Сценарии автоматизации\n\n❓Вопрос: Назови хотя бы одно применение Python.")
        await Learning.Lesson2.set()
    else:
        await msg.answer("❌ Не совсем. Подсказка: язык начинается на 'P'.")

# Проверка второго ответа
@dp.message_handler(state=Learning.Lesson2)
async def lesson2_handler(msg: types.Message, state: FSMContext):
    if any(keyword in msg.text.lower() for keyword in ['веб', 'бот', 'автоматизация', 'ии', 'сайт']):
        await msg.answer("🎉 Отлично! Ты прошёл мини-курс по Python.\n\nХочешь пройти снова? Напиши /start_course")
        await state.finish()
    else:
        await msg.answer("🤔 Попробуй ещё раз. Например: 'веб-разработка', 'боты' или 'автоматизация'.")

# Фоллбэк
@dp.message_handler(state='*')
async def default_handler(msg: types.Message):
    await msg.answer("Напиши /start_course чтобы начать обучение.")

# Запуск бота
if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)

稼ぎ方:

  • アクセス権を販売する
  • アフィリエイトプログラムを利用して無料コースを作成する
  • 広告とリンクを追加する

4. CPAボット(アフィリエイトプログラム対応ボット)

そのアイデアとは、リンクをクリックするだけで「ボーナス」を提供するボットを作成し、アフィリエイトプログラムから収益を得るというものです。

🔧簡単な例:

@dp.message_handler(commands=['start'])
async def start(msg: types.Message):
    kb = InlineKeyboardMarkup().add(
        InlineKeyboardButton("Получить бонус", url="https://ваша-ссылка.ru/?ref=рефералка")
    )
    await msg.answer("Нажми кнопку и получи подарок 🎁", reply_markup=kb)

CPAネットワーク: Admitad、CityAds

ボットを実行する場所

結論:Telegramボットはあなたのプロジェクトの出発点です

Pythonでボットを構築するのは、初心者でも簡単です。まずはシンプルなものから始め、MVP(最小実行可能製品)をリリースし、徐々に改良していきましょう。動作するボットが1つあれば、不労所得を生み出し、より大きなものへの出発点となる可能性があります。

リファレンス

注釈

まだコメントはありません。最初のコメントを投稿してみませんか?