python - Discord bot踢功能问题
问题描述
我正在制作一个不和谐的功能,我希望实现的功能之一是 kick,它会在您不是管理员或试图踢管理员时做出响应,我编写的代码适用于踢人,但它完全停止工作当我尝试输入回复时。
这是到目前为止的代码-
@bot.command(name='kick')
async def kick(ctx, user: discord.Member, *, reason="No reason provided"):
if user.guild_permissions.administrator:
await ctx.send(f'{user.mention} is an admin')
else:
await user.kick(reason=reason)
kick = discord.Embed(title=f"Kicked {user.name}!", description=f"Reason: {reason}\nBy: {ctx.author.mention}")
await ctx.channel.send(embed=kick)
await user.send(embed=kick)
解决方案
您的 if else 语句与问题不匹配,要踢人,它应该具有管理员权限,如果它具有管理员权限但根据您的代码没有踢出原因,只有没有管理员权限的人才能踢出用户......
正确的代码应该是
@bot.command(name='kick')
async def kick(ctx, user: discord.Member, *, reason="No reason provided"):
if user.guild_permissions.administrator:
await user.kick(reason=reason)
kick = discord.Embed(title=f"Kicked {user.name}!", description=f"Reason: {reason}\nBy: {ctx.author.mention}")
await ctx.channel.send(embed=kick)
await user.send(embed=kick)
else:
await ctx.send(f'{user.mention} is not an admin')
推荐阅读
- python - 来自 seaborn distplot 的 matplotlib vlines 动态 ymax 参数
- next.js - Nextjs 导出清除“out”文件夹
- postgresql - 在 pl/pgsql 函数中动态访问 RECORD 值
- javascript - 谷歌标签管理器数据层不发送数据
- sql - 修改 SCCM 报告
- azure - Azure API 管理:使用 Oauth2 401 的授权给出“未经授权。访问令牌丢失或无效。”
- bash - 我的 Makefile 中无法识别 {a,b} 形式的目标
- spring-boot - Spring Boot 找不到 application-$profile.properties 文件:Docker 文件
- dart - auqeduct 如何获取属性的长度作为瞬态属性?
- c++ - 如何在 GDB 调试器命令行中调用 std::function 句柄