Бот для продажи подарков

創建於:2025年3月8日

使用 GPT-4o 回答 Chat01

問題

напиши бота в телеграм который будет продавать телеграм подарки за телеграм звёзды

回答

Чтобы создать Telegram-бота, который будет продавать подарки за Telegram Stars, тебе понадобится:

  1. Бот в Telegram – создаётся через @BotFather.
  2. Telegram Payments API – для приема Telegram Stars.
  3. Сервер с ботом – на Python (например, с библиотекой aiogram).
  4. База данных – для хранения информации о товарах и пользователях.

Пошаговая инструкция:

1. Создание бота

Перейди в @BotFather и создай нового бота:

  • Отправь /newbot
  • Укажи имя и юзернейм бота
  • Получи TOKEN для работы с Telegram API

2. Установка необходимых библиотек

На сервере или локально установи:

sh
pip install aiogram

3. Настройка бота

Создай файл bot.py:

python
import logging from aiogram import Bot, Dispatcher, types from aiogram.types import LabeledPrice from aiogram.utils import executor TOKEN = "ТВОЙ_ТОКЕН_ОТ_BOTFATHER" PAYMENT_PROVIDER_TOKEN = "ТВОЙ_ПЛАТЁЖНЫЙ_ТОКЕН" # Получи в @BotFather bot = Bot(token=TOKEN, parse_mode=types.ParseMode.HTML) dp = Dispatcher(bot) logging.basicConfig(level=logging.INFO) # Товары ITEMS = { "gift1": {"title": "Подарок 1", "description": "Описание подарка 1", "price": 100}, "gift2": {"title": "Подарок 2", "description": "Описание подарка 2", "price": 200}, } @dp.message_handler(commands=['start']) async def start(message: types.Message): keyboard = types.InlineKeyboardMarkup() for item_id, item in ITEMS.items(): keyboard.add(types.InlineKeyboardButton(f"{item['title']} - {item['price']}⭐", callback_data=item_id)) await message.answer("Выберите подарок:", reply_markup=keyboard) @dp.callback_query_handler(lambda c: c.data in ITEMS) async def process_payment(callback_query: types.CallbackQuery): item = ITEMS[callback_query.data] price = [LabeledPrice(label=item["title"], amount=item["price"] * 100)] # в копейках await bot.send_invoice( callback_query.from_user.id, title=item["title"], description=item["description"], provider_token=PAYMENT_PROVIDER_TOKEN, currency="RUB", prices=price, payload=callback_query.data ) @dp.pre_checkout_query_handler(lambda query: True) async def checkout(pre_checkout_query: types.PreCheckoutQuery): await bot.answer_pre_checkout_query(pre_checkout_query.id, ok=True) @dp.message_handler(content_types=types.ContentType.SUCCESSFUL_PAYMENT) async def successful_payment(message: types.Message): await message.answer("Спасибо за покупку! 🎁") if __name__ == '__main__': executor.start_polling(dp, skip_updates=True)

4. Запуск бота

Сохрани код в bot.py и запусти:

sh
python bot.py

Бот будет принимать Telegram Stars и выдавать подарки пользователям.

Что улучшить:

  • База данных (SQLite/PostgreSQL) для хранения покупок.
  • Больше товаров с динамическим добавлением.
  • Интерфейс – добавить фото, анимации.
  • Автоматическая доставка – например, купоны или коды.

Если нужна помощь с доработкой или развертыванием, спрашивай!

問題

напиши телеграм бота который отправляет stargifts телеграм подарки пользователям

回答

Создание Telegram-бота, который отправляет Telegram StarGifts пользователям, требует использования Telegram Stars API и Payments API. Вот пошаговая инструкция по созданию такого бота:


1. Что понадобится

  1. Создать бота через @BotFather.
  2. Получить платежный токен в @BotFather для работы с Telegram Payments.
  3. Настроить сервер с ботом на Python (aiogram).
  4. API StarGifts – Телеграм автоматически отправляет подарки при успешной оплате.

2. Установка библиотек

Установи нужные библиотеки:

sh
pip install aiogram

3. Код бота для отправки StarGifts

Создай файл stargift_bot.py:

python
import logging from aiogram import Bot, Dispatcher, types from aiogram.types import LabeledPrice from aiogram.utils import executor # 🔹 Токены TOKEN = "ТВОЙ_ТОКЕН_ОТ_BOTFATHER" PAYMENT_PROVIDER_TOKEN = "ТВОЙ_ПЛАТЁЖНЫЙ_ТОКЕН" # Получи в @BotFather bot = Bot(token=TOKEN, parse_mode=types.ParseMode.HTML) dp = Dispatcher(bot) logging.basicConfig(level=logging.INFO) # 🔹 Список доступных подарков (цены в Telegram Stars) STAR_GIFTS = { "gift1": {"title": "Золотая звезда", "description": "Золотая звезда в подарок!", "price": 100}, "gift2": {"title": "Серебряная медаль", "description": "Получите серебряную медаль!", "price": 200}, } @dp.message_handler(commands=['start']) async def start(message: types.Message): keyboard = types.InlineKeyboardMarkup() for gift_id, gift in STAR_GIFTS.items(): keyboard.add(types.InlineKeyboardButton(f"{gift['title']} - {gift['price']}⭐", callback_data=gift_id)) await message.answer("🎁 Выберите подарок:", reply_markup=keyboard) @dp.callback_query_handler(lambda c: c.data in STAR_GIFTS) async def send_gift(callback_query: types.CallbackQuery): gift = STAR_GIFTS[callback_query.data] price = [LabeledPrice(label=gift["title"], amount=gift["price"] * 100)] # Цена в копейках await bot.send_invoice( callback_query.from_user.id, title=gift["title"], description=gift["description"], provider_token=PAYMENT_PROVIDER_TOKEN, currency="RUB", prices=price, payload=callback_query.data ) @dp.pre_checkout_query_handler(lambda query: True) async def checkout(pre_checkout_query: types.PreCheckoutQuery): await bot.answer_pre_checkout_query(pre_checkout_query.id, ok=True) @dp.message_handler(content_types=types.ContentType.SUCCESSFUL_PAYMENT) async def successful_payment(message: types.Message): gift_id = message.successful_payment.invoice_payload gift = STAR_GIFTS.get(gift_id) if gift: await message.answer(f"🎉 Поздравляем! Вы получили подарок: {gift['title']}") if __name__ == '__main__': executor.start_polling(dp, skip_updates=True)

4. Запуск бота

Сохрани код в stargift_bot.py и запусти:

sh
python stargift_bot.py

5. Как это работает

  1. Пользователь вводит команду /start.
  2. Бот предлагает список подарков, доступных за Telegram Stars.
  3. После успешной оплаты бот подтверждает получение подарка.

Дополнительные улучшения

  • Добавить больше подарков и персонализировать их.
  • Использовать базу данных (например, SQLite/PostgreSQL) для хранения информации о покупках.
  • Реализовать систему наград за активность.

Если нужна помощь с доработкой или развертыванием, спрашивай! 🚀

分享這個問答