Spaces:
Runtime error
Runtime error
import nest_asyncio | |
nest_asyncio.apply() | |
from telegram import ( | |
Update, | |
InlineKeyboardMarkup, | |
InlineKeyboardButton, | |
Bot | |
) | |
from telegram.constants import ParseMode # Исправленный импорт | |
from telegram.ext import ( | |
Application, | |
CommandHandler, | |
CallbackQueryHandler, | |
ContextTypes, | |
) | |
# Замените YOUR_BOT_TOKEN на токен вашего бота | |
TOKEN = "7354282831:AAHXUpGBk1vRadIZENQjGmYE1mdfwJt2exI" | |
# Замените @YOUR_CHANNEL_NAME на ваш username канала или ID | |
CHANNEL_ID = "@yufi_ru" | |
async def send_post(bot: Bot): | |
keyboard = [ | |
[ | |
InlineKeyboardButton("Получить ключ", callback_data="check_subscription"), | |
], | |
] | |
reply_markup = InlineKeyboardMarkup(keyboard) | |
await bot.send_message( | |
chat_id=CHANNEL_ID, | |
text="Нажмите на кнопку ниже, чтобы получить ключ доступа для neurix.ru", | |
reply_markup=reply_markup, | |
parse_mode=ParseMode.HTML # Для возможности использовать HTML-форматирование | |
) | |
async def check_subscription(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: | |
query = update.callback_query | |
try: | |
# Получаем информацию о членстве пользователя в канале | |
member = await context.bot.get_chat_member(CHANNEL_ID, query.from_user.id) | |
if member.status in ['member', 'creator', 'administrator']: | |
await query.answer(text="Ключ доступа: нейрикс", show_alert=True) | |
else: | |
await query.answer(text="Пожалуйста, подпишитесь на канал.", show_alert=True) | |
except Exception as e: | |
await query.answer(text="Пожалуйста, подпишитесь на канал", show_alert=True) | |
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE): | |
await send_post(context.bot) | |
# Завершаем работу бота после отправки сообщения | |
await context.bot.stop() | |
# Необязательно, но можно отправить сообщение об успешной отправке в консоль | |
print("Сообщение отправлено в канал, бот завершил работу.") | |
def main() -> None: | |
application = Application.builder().token(TOKEN).build() | |
# Используем CommandHandler для запуска отправки поста | |
application.add_handler(CommandHandler("sendpost", start)) # Замените /start на /sendpost или другую команду | |
application.add_handler(CallbackQueryHandler(check_subscription)) | |
try: | |
application.run_polling() | |
except Exception as e: | |
print(f"Произошла ошибка: {e}") | |
if __name__ == "__main__": | |
main() |