Коротко — два пути.
1) Готовые боты для розыгрышей
- Да, такие боты есть (обычно их называют giveaway/raffle bots). Поискать их удобно через каталог @storebot (в Telegram) или по ключевым словам "giveaway", "raffle", "contest".
- Готовые боты часто предоставляют возможность создать пост с кнопкой «Участвовать», считать участников и случайно выбирать победителя, но гибкость текста/действия кнопки у разных ботов разная — у некоторых можно задать собственный текст кнопки, у некоторых — только предустановленный «Join»/«Participate».
2) Свой бот (полный контроль)
- Если нужно полностью произвольный текст на кнопке и специфическое поведение — проще создать собственного бота. Порядок:
1. Создать бота через @BotFather (получите token).
2. Сделать бота админом вашего канала (чтобы он мог отправлять сообщения в канал).
3. Отправлять сообщения с inline-кнопкой (inline keyboard) — у кнопки можно вольный текст и различные типы действий: callback_data (нажатие обрабатывается ботом), url, switch_inline_query и т. д.
4. При нажатии на кнопку бот получает CallbackQuery — можно сохранять в базе участников и в нужный момент выбирать победителя.
Пример формата inline-кнопки (JSON):
{
"reply_markup": {
"inline_keyboard": [
[
{"text": "Мой произвольный текст", "callback_data": "enter_contest"}
]
]
}
}
Минимальный пример на python (python-telegram-bot / telebot / aiogram — схожая идея):
from telegram import Bot, InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import Updater, CallbackQueryHandler
bot = Bot("ВАШ_TOKEN")
keyboard = InlineKeyboardMarkup([[InlineKeyboardButton("Участвовать", callback_data="enter")]])
bot.send_message(chat_id="@your_channel", text="Розыгрыш! Нажми кнопку:", reply_markup=keyboard)
# обработчик нажатий: записывать user_id в БД и отвечать пользователю
Дополнительные замечания
- В канале работают именно inline-кнопки (создаёт бот) — обычные reply-кнопки не подходят.
- Если не хотите программировать, можно попробовать no-code сервисы/конструкторы ботов (ManyBot/Chatfuel/Make/Integromat) — они умеют отправлять сообщения с кнопками, но уровень кастомизации зависит от сервиса.
- Могу помочь: либо подобрать конкретные готовые боты (с учётом того, что в Telegram каталог постоянно меняется), либо подсказать шаги/код для собственного бота — скажите, хотите ли вы готовое решение без кода или готовы немного программировать?