3 回答

TA貢獻1804條經驗 獲得超8個贊
如果您分配None給reason,那么您可以檢查它。例如reason = None。之后,您可以檢查命令是否原因為None。這是代碼:
@client.command()
@commands.has_permissions(kick_members=True)
async def kick(ctx, user: discord.Member, *, reason = None):
if not reason:
await user.kick()
await ctx.send(f"**{user}** has been kicked for **no reason**.")
else:
await user.kick(reason=reason)
await ctx.send(f"**{user}** has been kicked for **{reason}**.")

TA貢獻1831條經驗 獲得超4個贊
很簡單,只需寫:
@client.command()
@commands.has_permissions(kick_members=True)
async def kick(self, ctx, user: discord.Member, *, reason=None):
await user.kick(reason=reason)
await ctx.send(f'{user.mention} has been kicked for {reason}!')

TA貢獻1851條經驗 獲得超5個贊
您收到該錯誤是因為您的函數如下所示:
async def kick(ctx, user: discord.Member, *, reason: str):
Reason 在這里不是可選的,因此它是一個required argument
. 這意味著在沒有該參數的情況下調用此函數將導致錯誤。添加默認值使其成為可選。
def function(requiredArgument, optionalArgument=defaultValue)
在這種情況下,defaultValue
應該是None
. 現在,當您不為該參數傳遞任何內容時,將使用它的默認值。這樣,您就不再需要添加理由。
添加回答
舉報