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.

Transmita un mensaje a todos los servidores en los que el bot esté presente, excepto en el canal de reglas.

He buscado y he descubierto cómo hacer que un mensaje se transmita a todos los servidores, pero sería molesto para los propietarios de los servidores tener anuncios de bots en las reglas. ¿Cuál sería la mejor manera de modificar este código para enviar a todos los servidores, pero no a su canal de reglas?

@client.command(pass_context=True)
async def transmitir(ctx, *, msg):
    for server in client.guilds:
        for channel in server.text_channels:
            try:
                await channel.send(msg)
            except Exception:
                continue
            else:
                break

Muchas gracias por la ayuda

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para modificar el código y enviar mensajes a todos los servidores, pero no a su canal de reglas, puedes agregar una declaración condicional para verificar si el canal es el canal de reglas antes de enviar el mensaje. Aquí hay un ejemplo:

    @client.command(pass_context=True)
    async def broadcast(ctx, *, msg):
        for server in client.guilds:
            for channel in server.text_channels:
                if channel.name.lower() == "rules":
                    continue
                try:
                    await channel.send(msg)
                except Exception:
                    continue
                else:
                    break
    

    En este código modificado, verificamos si el nombre del canal es “rules” usando .lower () para hacer la cadena insensible a mayúsculas y minúsculas. Si lo es, omitimos enviar el mensaje a ese canal y continuamos con la iteración. De lo contrario, intentamos enviar el mensaje al canal como antes.

Comments are closed.