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 puedo hacer para que una regla que un administrador en un servidor no cambie la regla de otro servidor?

Problema: La regla se vuelve a escribir en todos los servidores, no solo en el servidor en el que se escribió.

¿Cómo soluciono este problema?

Un ejemplo que tengo es que mi amigo creó una regla, digamos que es: ‘No me menciones’. Seguro que cambia la regla ahora y la gente puede ver que la regla ha cambiado, pero para otros servidores, sus reglas también cambiarán a ‘No me menciones’. Ese es el problema con el que estoy atrapado. Quiero que solo el servidor en el que se escribió la regla vea ese cambio y no cualquier otro servidor.

regla_ = 'hola'</p>

<p>@commands.has<em>permissions(administrator=True)
@client.command()
async def reglacrear(ctx, *, regla):
    global regla</em>
    regla_ = regla
    embed = discord.Embed(title = 'Regla(s)', color = discord.Colour.blurple())
    embed.add<em>field(name = "Pregunta: ", value = regla, inline = False)
    embed.set</em>footer(icon<em>url = ctx.author.avatar</em>url, text = f"Solicitado por {ctx.author.name}")
    await ctx.send(embed=embed)</p>

<p>@client.command()
async def reglas(ctx):
    embed = discord.Embed(title = 'Regla(s)')
    embed.add<em>field(name = 'Regla(s)', value = regla</em>, inline = False)
    embed.set<em>footer(icon</em>url = ctx.author.avatar_url, text = f"Solicitado por {ctx.author.name}")
    await ctx.send(embed=embed)
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema es que la variable global rule_ se está utilizando, lo que significa que cualquier cambio realizado en ella afectará a todos los servidores donde actualmente esté ejecutándose el bot. Una forma de solucionar esto sería almacenar la regla para cada servidor por separado, de modo que los cambios realizados en un servidor no afecten a los demás.

    Una forma de hacer esto sería utilizar un diccionario para almacenar las reglas, con el ID del servidor como clave y la regla como valor. Por ejemplo:

    rules = {}
    
    @commands.has_permissions(administrator=True)
    @client.command()
    async def rulecreate(ctx, *, rule):
        rules[ctx.guild.id] = rule
        embed = discord.Embed(title='Regla(s)', color=discord.Colour.blurple())
        embed.add_field(name='Pregunta:', value=rule, inline=False)
        embed.set_footer(icon_url=ctx.author.avatar_url, text=f'Solicitado por {ctx.author.name}')
        await ctx.send(embed=embed)
    
    @client.command()
    async def rules(ctx):
        rule = rules.get(ctx.guild.id, 'No se ha establecido ninguna regla.')
        embed = discord.Embed(title='Regla(s)')
        embed.add_field(name='Regla(s)', value=rule, inline=False)
        embed.set_footer(icon_url=ctx.author.avatar_url, text=f'Solicitado por {ctx.author.name}')
        await ctx.send(embed=embed)
    

    En esta versión del código, el diccionario rules se utiliza para almacenar las reglas de cada servidor, utilizando el ID del servidor como clave. Cuando se crea una nueva regla, esta se almacena en el diccionario utilizando el ID del servidor actual. Cuando se muestran las reglas, se recupera la regla del servidor actual del diccionario, o se muestra un mensaje predeterminado si no se ha establecido ninguna regla. De esta manera, los cambios realizados en un servidor solo afectarán a ese servidor y no a los demás.

Comments are closed.