首页 > 解决方案 > 检查 discord 命令参数

问题描述

我没什么好说的,我正在尝试使用 python 制作一个不和谐的机器人。

命令是我做的时候

+permissions <user>

它显示了用户权限的列表

继承人的问题: 命令

所以,我开始的权限是“管理员”

并且取决于用户是否有权限,它会显示一条独特的消息,说明他是否有权限

正如你在这里看到的

if ctx.message.user.server_permissions.administrator == True:
    embed.add_field(name="Administrator", value=":white_ckeck_mark: Permission Granted!", inline=True)
if ctx.message.user.server_permissions.administrator == False:    
    embed.add_field(name="Administrator", value=":x: Permission Denied!", inline=True)

但它显示错误说我没有输入参数(用户)

不和谐的错误

所有代码

@bot.command(pass_context=True)
async def permissions(ctx, user: discord.Member):
    embed = discord.Embed(name="USER_PERMISSIONS", description="------------------------------------------------------", color=0x0099ff)
    embed.set_author(name="USER_PERMISSIONS: {}'s Permissions".format(user.name))
if ctx.message.user.server_permissions.administrator == True:
    embed.add_field(name="Administrator", value=":white_ckeck_mark: Permission Granted!", inline=True)
if ctx.message.user.server_permissions.administrator == False:    
    embed.add_field(name="Administrator", value=":x: Permission Denied!", inline=True)
if ctx.message.user.server_permissions.view_audit_logs == True:
    embed.add_field(name="View Audit Logs", value=":white_ckeck_mark: Permission Granted!", inline=True)
if ctx.message.user.server_permissions.view_audit_logs == False:
    embed.add_field(name="View Audit Logs", value=":x: Permission Denied!", inline=True)
embed.set_thumbnail(url=user.avatar_url)
embed.set_footer(text="Requested by {}".format(author), icon_url=author.avatar_url)
await bot.say(embed=embed)

标签: pythondiscord.py

解决方案


这是工作代码

@bot.command(pass_context=True)
async def permissions(ctx, user: discord.Member):
  embed = discord.Embed(name="USER_PERMISSIONS", description="------------------------------------------------------", color=0x0099ff)
  embed.set_author(name="USER_PERMISSIONS: {}'s Permissions".format(user.name))
  if user.server_permissions.administrator == True:
    embed.add_field(name="Administrator", value=":white_check_mark:  Permission Granted!", inline=True)
  if user.server_permissions.administrator == False:    
    embed.add_field(name="Administrator", value=":x: Permission Denied!", inline=True)
  if user.server_permissions.view_audit_logs == True:
    embed.add_field(name="View Audit Logs", value=":white_check_mark:  Permission Granted!", inline=True)
  if user.server_permissions.view_audit_logs == False:
    embed.add_field(name="View Audit Logs", value=":x: Permission Denied!", inline=True)
  embed.set_thumbnail(url=user.avatar_url)
  embed.set_footer(text="Requested by {}".format(ctx.message.author), icon_url=ctx.message.author.avatar_url)
  await bot.say(embed=embed)

有几件事,首先,ctx.message.user.server_permissions如果您已经初始化了用户是什么,则不需要使用,因此只需使用没有称为“用户” user.server_permissions的属性ctx.message

其次作者未定义,用于ctx.author显示谁发送了消息

最后你拼错了:white_check_mark:

希望这有帮助!

这就是最终的样子


推荐阅读