如何根据命令踢用户

新手上路,请多包涵

我对Python了解不多,还在学习中。

我一直在对一个用 Python 2.7 编码的开源 Discord 机器人进行重大修改。

我想添加一项功能,允许我根据命令踢用户。

类似于 [commandprefix]kickuser [userid] 但我不知道如何让机器人从我发送的消息中获取 userid,当我尝试使其超特定以踢我的第二个帐户作为测试时,它不会’也不工作。

     if message_content == ',purgeIdiots':
        await kick('userid')
        return

这是我在文档中手动输入用户 ID 的超特定代码。但我无法让它工作。

我非常新,我会很感激一些帮助。

原文由 sairento 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 520
2 个回答

如果您正在研究制作命令的过程,我建议您进一步阅读有关 discord.py 的 discord.ext.commands 子库的信息。

这是关于它的常见问题解答,以及使用它的机器人示例如下:

常问问题

机器人示例

此扩展将允许您使用前缀创建命令。

关于您关于通过用户 ID 踢球的问题,使用命令扩展,您可以执行以下操作:

 @bot.command(pass_context = True)
async def kick(ctx, userName: discord.User):
    await bot.kick(userName)

我相信这应该有效,但我还不能编译它来检查。但是,一定要了解有关命令扩展的更多信息,因为它比检查消息的内容更能帮助您解决问题。

您首先需要导入 discord.ext,您可以在程序顶部使用 from discord.ext import commands 来完成。

然后您需要定义 bot 以确保您可以使用诸如 @bot.command 类的东西,因为您需要它。这样做是这样的: bot = commands.Bot(command_prefix=',', description=description) ,逗号现在被定义为命令前缀。

这应该允许我最初添加的代码片段与能够键入 ,kick <username> 的用户一起运行。

原文由 ocelot 发布,翻译遵循 CC BY-SA 4.0 许可协议

@commands.has_permissions(kick_members=True)
@bot.command()
async def kick(ctx, user: discord.Member, *, reason="No reason provided"):
        await user.kick(reason=reason)
        kick = discord.Embed(title=f":boot: Kicked {user.name}!", description=f"Reason: {reason}\nBy: {ctx.author.mention}")
        await ctx.message.delete()
        await ctx.channel.send(embed=kick)
        await user.send(embed=kick)

原文由 THEMEGACODERS 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题