【问题标题】:Temp Mute command临时静音命令
【发布时间】:2020-01-02 06:21:24
【问题描述】:

我正在努力让服务器版主能够暂时将用户的Discord静音。我不是 Discord 机器人中经验丰富的开发人员,但我在学习。

我想做什么? 我正在努力让服务器所有者能够在他们的 Discord 服务器中临时静音用户。

这是我目前的静音命令:

@bot.command(pass_context=True)
async def mute(ctx, user: discord.Member):
    if ctx.message.author.server_permissions.kick_members:
        role = discord.utils.get(user.server.roles, name="Muted")
        embed = discord.Embed(title="{} has been muted!".format(user.name), description="When the user needs unmuting do !unmute @user!" , color=0x0072ff)
        embed.set_footer(text="Reversed by Damian#9209 | Reduction#9975")
        embed.set_thumbnail(url=user.avatar_url)
        await bot.add_roles(user, role)
        await bot.say(embed=embed)
    else:
       embed = discord.Embed(title="Permission Denied.", description="You don't have permission to use this command.", color=0xff0000)
       embed.set_footer(text="Reversed by Damian#9209 | Reduction#9975")
       await bot.say(embed=embed)

【问题讨论】:

  • 您的问题是什么? (将其编辑成问题而不是评论)
  • 你有什么问题?
  • 不确定。我希望在静音上度过一段时光。
  • 在这种情况下,我会改为维护一些用户和时间戳的映射。每当您在映射中收到来自用户的消息时,您都会根据该时间戳检查当前时间。如果该时间尚未到来,请删除该消息。如果已经出现,请从映射中删除该用户。

标签: discord.py


【解决方案1】:

我相信您知道,Discord.py 库已更改为不再包含 rewrite 分支。这意味着静音命令对您来说变得更容易了。我将提供一些代码来帮助您入门。我还将为每一行提供所有文档的链接。

@bot.command(name="tempmute",description="Temporarily mute a member")
@commands.has_permission(mute_members=True)
async def _tempmute(ctx,user:discord.Member):
    muteRole = discord.utils.get(ctx.guild.roles,name="Muted")
    await user.add_roles(muteRole)

has_permission 是对 Discord 用户权限的检查

utils.get 是一个实用函数,可以逐步遍历迭代并找到正确的搜索过滤器。在这里,我们使用它来查找名称为“静音”的角色

add_roles 是一个协程函数(又名需要等待),它为用户添加一个或多个角色。

我建议还确保该角色禁用了speak 权限,这样您就不必通过on_message 事件来处理它。希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 2023-01-19
    • 2019-07-28
    • 2021-10-31
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多