File size: 2,943 Bytes
6612857
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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()