1

Тема: непрцюють кнопки з бота

мені бот присилає повідомленні  скрінот з активацією промокода, і під повідомленням створюється 4 кнопки, від 1-4, і кожна кнопка виконує свій скрипт в хроміумі, алле чомусь кнопки не робочі 

from selenium.webdriver.support.wait import WebDriverWait as WB
from pyrogram import Client, types, filters
from pyrogram.handlers import MessageHandler, callback_query_handler
from aiogram import Bot
import shutil
import subprocess
import undetected_chromedriver as uc
import requests
import os
import re
import time
import logging

logging.basicConfig(
    filename='app.log', #
    level=logging.INFO, # 
    format='%(asctime)s %(levelname)s: %(message)s', 
    datefmt='%Y-%m-%d %H:%M:%S'
)

def get_id_session(app: Client):
#неважливо


def init_driver(headless: bool):
#неважливо


def get_domen():
#неважливо


def open_web_site(driver: uc.Chrome):
#неважливо

async def send_notify(promocode: str, result: float, balance: int):
    # кнопочки
    reply_markup = types.InlineKeyboardMarkup([
        [
            types.InlineKeyboardButton("Button 1", callback_data="0"),
            types.InlineKeyboardButton("Button 2", callback_data="1"),
        ],
        [
            types.InlineKeyboardButton("Button 3", callback_data="2"),
            types.InlineKeyboardButton("Button 4", callback_data="3"),
        ],
    ])

    await bot.send_photo(
        chat_id=sender_id,
        photo=open('temp.png', 'rb'),
        caption=f'Попытка активации промокода: {promocode}????\n'
                f'Статистика по активации :\n\n'
                f'*Общее время активации : *{result}'
                f'*Актуальный баланс : *{balance}',
        parse_mode='Markdown',
        reply_markup=reply_markup
    )
    os.remove('temp.png')

#обрпботчик кла
async def button_handler(client: Client, callback_query: types.CallbackQuery):
    button_id = int(callback_query.data)
    logging.info(f'Натиснута кнопка з номером {button_id}')
    if button_id == 0:
        driver.execute_script('document.querySelectorAll("div.captcha__variants > button")[0].click()')
    elif button_id == 1:
        driver.execute_script('document.querySelectorAll("div.captcha__variants > button")[1].click()')
    elif button_id == 2:
        driver.execute_script('document.querySelectorAll("div.captcha__variants > button")[2].click()')
    elif button_id == 3:
        driver.execute_script('document.querySelectorAll("div.captcha__variants > button")[3].click()')
    elif button_id == 4:
        driver.execute_script('document.querySelectorAll("div.captcha__variants > button")[3].click()')    
    await callback_query.answer()


def activate_promocode(promocode: str, driver: uc.Chrome):
#неважливо


async def get_promo_handler(client: Client, message: types.Message):
#неважливо


if __name__ == "__main__":
    print('Меню:\n1. Запустити скрипт.\n2. Авторизовутись в аккаунт.\n3. Почистити кеш скрипту.\n4. Завершити всі процеси скрипта.')
    _func = input('\nВведите нужную вам функцию - ')

    subprocess.call('taskkill /f /im chrome.exe', stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
    subprocess.call('taskkill /f /im undetected_chromedriver.exe', stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)

    if _func == '1':
        baza_promocode = []
        driver = init_driver(False)
        open_web_site(driver)
        channels = [-100184339344, -1001348070579, -1001686106961, -1001680254374]


        try:
            with open("files\\channels.txt", "r", encoding='utf8') as f:
                if read := f.read():
                    for channel in read.strip().split('\n'):
                        channels.append(int(channel))

        except FileNotFoundError:
            open('files\\channels.txt', 'w').close()

        app = Client("files\\session", api_id=#неважливо, api_hash='#неважливо')
        bot = Bot(bytes(
            [54, 51, 15, 65, 70, 90, 90, 115, 82, 118, 76, 111, 122, 113, 75, 95, 118,
              69, 76, 112, 111, 95, 114, 103, 48, 112, 45, 78, 87, 102, 95, 71, 115, 67, 53, 110, 107]).decode())
        with app:
            sender_id = get_id_session(app)

        app.add_handler(MessageHandler(get_promo_handler, filters=filters.chat(list(map(int, channels)))))
        app.add_handler(lambda client, callback_query: callback_query_handler(client, callback_query, button_handler))
        print('Обнаружил авторизацию, успешно запустился.')
        app.run()

    if _func == '2':
    #неважливо

    if _func == '3':
    #неважливо

    if _func == '4':
    #неважливо
    input('\nExit')

2

Re: непрцюють кнопки з бота

важко сказати без додаткових пояснень, але, можливо ось ця частина коду

driver.execute_script('document.querySelectorAll("div.captcha__variants > button")[0].click()')

яка шукає та натискає кнопки не може натиснути кнопку на сторінці бо вона ще не загрузилася або вона тупо поза межами сторінки або що

дивись, на сайті вводиться промокод і відправляється статистика активації, і якщо промокдо робочий то появляється капча, і там 4 кнопки, https://imgur.com/a/O86fLLW