You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将discord.py机器人Kick命令的可选Reason改为必填项?

解决discord.py Kick命令理由必填的问题

要将reason参数改为必填字符串类型,你需要做以下修改:

  1. 调整参数定义:将原代码中的reason: Optional[str] = None直接改为reason: str——discord.py的斜杠命令会自动将没有默认值的参数识别为必填项,无需额外配置。
  2. 移除不必要的导入:如果你的代码里有from typing import Optional,现在可以删除这一行,因为不再需要Optional类型注解。

修改后的完整代码如下:

import discord
import asyncio
import datetime
from discord import appcommands

@bot.tree.command(name="kick", description="Kicks specified user from the server.")
async def kick(interaction: discord.Interaction, member: discord.Member, reason: str):
    if interaction.user.guild_permissions.kick_members:
        await member.kick(reason=reason)
        embed = discord.Embed(
            title="Successfully Kicked.",
            description=f"{member.mention} has been successfully kicked off the server.\nFor {reason} reason.",
            color=discord.Color.green(),
            timestamp=datetime.datetime.utcnow()
        )
        embed.set_footer(text=interaction.user.name, icon_url=interaction.user.avatar.url)
        await interaction.response.send_message(embed=embed)
        await asyncio.sleep(10)
        await interaction.delete_original_response()

额外说明:

  • 原代码中interaction.user.avatar需要改为interaction.user.avatar.url才能正确获取头像的URL,否则可能会触发属性错误。
  • 修改后用户使用/kick命令时,Discord客户端会强制要求填写reason参数,不填写无法完成命令提交。

内容的提问来源于stack exchange,提问作者Hylex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 13:35:18