如何在Discord.py中实现非斜杠命令的自定义输入随机选择功能
解决方案
下面是完善后的代码,实现支持任意数量自定义选项的随机选择功能:
import discord import random from discord.ext import commands # 初始化机器人,替换成你的前缀和Token bot = commands.Bot(command_prefix="!", intents=discord.Intents.all()) @bot.command(name="random") async def random_choice(ctx, *args): # 检查是否提供了选项 if not args: await ctx.send(f"{ctx.author.mention} 请提供至少一个选项,比如:`!random text1 text2 text3`") return # 随机选中一个选项 selected = random.choice(args) # 创建结果Embed embed = discord.Embed( colour=0xc81f9f, title="随机选择结果", description=f"{ctx.author.mention} 随机选中了:**{selected}**" ) await ctx.send(embed=embed) # 启动机器人 bot.run("你的机器人Token")
关键改进说明:
- 用
*args接收参数:这能让命令支持任意数量的输入选项,完全匹配你想要的!random text1 text2 text3...使用场景。 - 增加参数校验:如果用户没输入任何选项,会发送提示信息,避免程序报错。
- 规避内置关键字:不再用
str、list这类Python内置关键字当变量名,避免语法冲突。 - 优化内容表述:把Embed的标题和描述改成贴合“随机选择”功能的内容,结果展示更直观。
- 规范命令命名:明确将命令名设为
random,和你期望的触发指令一致(原代码用的是r作为命令名)。
内容的提问来源于stack exchange,提问作者MrCooper
相关产品推荐
相关产品推荐

