python - 当静音用户离开服务器并重新加入时,如何保持静音角色?
问题描述
我正在开发一个 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}")
解决方案
一种方法是将当前静音的用户存储在 .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
推荐阅读
- javascript - 使用javascript检查var中的字符
- python - 如何在 PGPy 中使用公钥解密 PGP 文件
- django - 石墨烯错误消息
- javascript - 如何在 React Native 中使用 componentDidUpdate 和 shouldComponentUpdate?
- docker - VueCLI3 应用程序(nginx/docker)使用环境特定变量
- sql - 这个公式可以添加到 WHERE 子句中吗?
- java - 如何在 Eclipse 和/或 STS IDE 中启用自动重建 Spring Boot 项目
- python - 在 Python 中装饰方法期间传递“self”参数
- vue.js - 如何将道具传递给命名视图
在 Vue.js 中? - python - Python - 如何删除不平衡的括号和引号