es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo detener la ejecución si se encuentra “!stop” en el canal de Discord?

Cómo detener la ejecución del script si el bot recibe el comando “”!stop” desde el canal?
Actualmente estoy aprendiendo a crear este tipo de bot, por lo que mi código actual es el siguiente:

bot = commands.Bot(command_prefix='!')
@bot.command(name='stop')
async def here(ctx):
        while True:
            print(2)
            time.sleep(15)

bot.run(TOKEN)

Tengo 3 controladores de Selenium trabajando en diferentes máquinas y quiero establecer una comunicación a través de un canal de Discord (cada máquina tendrá su propio bot). Actualmente, la máquina que abre una URL específica primero enviará un mensaje de detención al canal y cerrará la conexión con el chat, mientras que las otras dos máquinas deberían detenerse inmediatamente después del mensaje.

Entonces, las ideas serían:

page_opened = True
while page_opened = True:
    hacer algo y escuchar
    si hay un mensaje de detención:
        page_opened = False

¿Cómo debo manejar esta idea con los bots de Discord? ¿Algún consejo?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para detener la ejecución del script si el bot recibe el comando “!stop” desde el canal, puedes usar el siguiente código:

    bot = commands.Bot(command_prefix='!')
    
    @bot.command(name='stop')
    async def stop(ctx):
        await ctx.send('Deteniendo el bot...')
        await bot.logout()
    
    bot.run(TOKEN)
    

    Este código crea un bot que escucha el comando “!stop”. Cuando se recibe el comando, se llama a la función stop, que envía un mensaje al canal de Discord diciendo que el bot se está deteniendo y luego cierra la sesión de la cuenta del bot, deteniendo el script.

    Para implementar tu idea de tres máquinas comunicándose a través de un canal de Discord, cada máquina puede ejecutar su propio bot y escuchar el comando “!stop”. Cuando una máquina recibe el comando, puede enviar un mensaje al canal diciendo que se está deteniendo y luego detiene su propio script. Aquí tienes un ejemplo:

    import discord
    from discord.ext import commands
    
    bot = commands.Bot(command_prefix='!')
    client = discord.Client()
    
    @bot.command(name='stop')
    async def stop(ctx):
        await ctx.send(f'Deteniendo {ctx.author.name}...')
        await bot.logout()
    
    @client.event
    async def on_message(message):
        if message.content == '!stop':
            await message.channel.send(f'Deteniendo {message.author.name}...')
            await client.close()
    
    bot.run(TOKEN)
    

    En este ejemplo, cada máquina tiene su propio bot en ejecución. Cuando una máquina recibe el comando “!stop”, envía un mensaje al canal diciendo que se está deteniendo y luego detiene su propio script. Las otras máquinas recibirán el mensaje y también detendrán sus scripts. La función on_message escucha los mensajes enviados al canal y detiene el script si el mensaje es “!stop”.

Comments are closed.