【问题标题】:How to keep the muted role when a muted user leaves the server and rejoins?当静音用户离开服务器并重新加入时,如何保持静音角色?
【发布时间】:2021-10-23 12:35:04
【问题描述】:

我正在开发一个 discord.py 机器人,但我发现了一个问题。当静音用户离开服务器并重新加入时,该用户的静音角色将消失。

这是我的静音/取消静音命令:

@bot.command()
@commands.has_permissions(manage_messages=True)
async def mute(ctx, member:discord.Member, *, reason=None):
      guild = ctx.guild
      mutedRole = discord.utils.get(guild.roles, name="Muted")    
      await member.add_roles(mutedRole, reason=reason)

      embed=discord.Embed(title="Muted.")
      embed.add_field(name="Muted.", value=(f"Muted {member.mention} for reason {reason}"))                     
      await ctx.send(embed=embed)
      await member.send(f"You were muted in the server {guild.name} for {reason}")
      list_of_muted_members.append(member)
      print(list_of_muted_members)

@bot.command(description="Unmutes a specified user.")
@commands.has_permissions(manage_messages=True)
async def unmute(ctx, member: discord.Member, reason=None):
      mutedRole = discord.utils.get(ctx.guild.roles, name="Muted")

      embed=discord.Embed(title="You have been unmuted.")
      embed.add_field(name="Unmuted.", value=(f"Unmuted {member.mention} Reason: {reason}"))
      await ctx.send(embed=embed)
      await member.remove_roles(mutedRole)
      await member.send(f"You were unmuted in the server {ctx.guild.name}")

【问题讨论】:

  • 您好!你有数据库吗
  • 不,我没有数据库

标签: python discord.py


【解决方案1】:

只需创建一个包含所有静音成员的列表,每次可能的新成员加入时都会检查此列表,如果该成员在其中,只需再次添加静音角色。

【讨论】:

    【解决方案2】:

    您可以尝试创建一个简单的数据库来保存静音用户的用户 ID,然后在用户重新加入组时查询它。

    【讨论】:

    • 你能举个例子吗?
    【解决方案3】:

    一种方法是将当前静音的用户存储在 .json 文件中,然后当用户重新加入服务器时,您可以引用该文件。

    {
       "USERID": true
    }
    

    那么你可以:

    with open('JSONFILE.json', 'r') as f:
      jsonfile = json.load(f)
      try:
         status = jsonfile[str(user.id)]
         if status:
            # add role to member
      except:
         # user wasn't found in json
         return
    

    【讨论】:

    • 让我知道该怎么做 :) 谢谢
    猜你喜欢
    • 2021-07-06
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    相关资源
    最近更新 更多