Je fais un bot de discordance en python et j'ai essayé de l'obtenir pour faire un ping sur un site web et ensuite dire si c'est en haut ou en bas. Voici mon code:Ping sur un site web avec des robots discordants en python
import logging
logging.basicConfig(level=logging.INFO)
import discord
from discord.ext import commands
import os
website = "mywebsite.com"
des = "a website status bot"
prefix = "."
client = commands.Bot(description=des, command_prefix=prefix)
async def my_background_task():
await client.wait_until_ready()
channel = discord.Object(id='my server id went here')
response = 0
while not client.is_closed:
print("loop") #debugger
await asyncio.sleep(10)
global response
pr = response
response = os.system("ping -c 1 " + website)
if response != 0:
response = 1
if pr != response:
if response == 0:
await client.send_message(channel, 'mywebsite is up!')
else:
await client.send_message(channel, 'mywebsite is down!')
client.run("discord-bot-code-went-here")
Pour une raison quelconque, il ne court pas la boucle. Des idées?
Merci.
Sidenote: Le bot a fonctionné quand j'ai essayé de faire une commande de ping-pong avec lui donc ce n'est pas la connectivité à la discorde aussi aucune erreur n'est apparue lors de l'exécution du programme.
Merci @squaswin, mais il ne semble toujours pas courir la boucle ... J'ai réussi à obtenir mon code de travail en le plaçant dans un déclencheur on_ready mais je l'aime toujours travailler comme tâche de fond. Une idée: ce code crée une boucle mais dit-il au client de l'exécuter? –
Pourriez-vous nous montrer votre code édité dans votre question? – xNinjaKittyx
En créant la tâche, vous demandez à asyncio d'exécuter le code quand cela est possible. Comme le code est exécuté par asyncio en tant que tâche en arrière-plan, tant que le client est connecté et que la boucle while ne lance pas une exception non interceptée, le client l'exécute. – squaswin