Как добавить true и false в мой сценарий discord?

#python #discord

Вопрос:

Я написал скрипт на python, который открывает firefox, и по этому вопросу он переходит в раздор.

Когда я запускаю сценарий, он переходит на личный канал, который я создал, и должен реагировать на сообщение, которое я опубликовал. (Он также предназначен для реагирования на каждое сообщение, на которое уже есть реакция.)

Он делает именно то, что я хочу, за исключением одной проблемы. Он не перестает реагировать на сообщение, когда «отреагировал» на веб-сайте = True.

Причина, по которой у меня есть свой while loop , заключается в том, что он всегда проверяет наличие новых сообщений с реакциями.

Я не знаю, как это исправить. Полный код приведен ниже.

(Я знаю, что это против разногласий и беру на себя полную ответственность.)

 #! /usr/bin/python

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time 

Email = "YourEmail"
Password = "YourPassword"

# The Function that will Auto React
def Auto_React():
    Click_Emote = driver.find_element_by_class_name('reactionInner-15NvIl').click()
    # This is where the Auto React code will go


# Open browser
driver = webdriver.Firefox()
# Go to Discord
driver.get("YourDiscordChannelLink")

# Login to Discord
email_box = driver.find_element_by_name("email")
email_box.send_keys(Email)

password_box = driver.find_element_by_name("password")
password_box.send_keys(Password)

# Pressing enter on the password box will trigger the login
driver.find_element_by_name("password").send_keys(Keys.RETURN)

# The page needs to load fully before the script can move forward
time.sleep(15)

# Bypass school email popup
bypass_school_signup = driver.find_element_by_class_name('close-hZ94c6').click()

time.sleep(5)

while True:
    Auto_React()
 

Комментарии:

1. Хотя код вообще не ищет «отреагировал» на веб-сайте? Это просто заканчивается бесконечным циклом, который ничего не проверяет.

2. @ChrisG Посмотрите на функцию Auto_React. Я сам это проверил. Это отлично работает

3. «это отлично работает»? Все, что он делает, — это нажимает на что-то. Опять же, если вы хотите, чтобы он перестал реагировать на сообщение, вам нужно каким-то образом прочитать информацию из сообщения, чтобы узнать, отреагировали ли вы на него уже. Как я уже сказал, я не вижу никакого кода, который даже пытается выяснить, существует ли слово «отреагировал». Как он должен останавливаться на основе условия, если он даже не пытается проверить это условие?

4. Опять же: вы говорите It does not stop reacting to the message when "reacted" on the website = True. так, как будто ожидаете, что он это сделает, но нигде вы не говорите ему об этом на самом деле

5. Я также сказал выше, что не знаю, как проверить, была ли реакция на сообщение или нет. Функция ищет элемент, который имеет class_name "reactionInner-15NvIl" . Этот элемент является кнопкой реакции, и на него нажимают.

Ответ №1:

Похоже, у вас бесконечный цикл (если я чего-то не упускаю?), вы продолжаете работать Auto_React , в котором нет оператора break, я не думаю, что вам нужен цикл while здесь, но в случае, если вы все же добавите в него оператор break, чтобы ваш код не повторялся бесконечно!

РЕДАКТИРОВАТЬ: Я не уверен точно , как это будет реализовано в коде, но вместо этого вы могли бы сделать что-то вроде for all messages that are already reacted to : сначала получить все сообщения с реакцией, а затем повторить их и снова реагировать, таким образом, ваш код завершится, когда вы закончите.

Комментарии:

1. Посмотрите на функцию Auto_React. Я сам это проверил. Это отлично работает. В нем нет оператора break, потому что я хочу, чтобы он реагировал на каждое сообщение, на которое уже отреагировали. Спасибо за ответ, тхо.

2. Теоретически это кажется хорошим, но решения все еще нет. Я дам вам право голоса, хотя.

3. Это не ответ