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

如何在discord.py中创建支持自定义数值范围的RNG随机数命令

Discord RNG命令实现方案

你现有代码存在3个影响功能的问题:

  1. 随机数方法名拼写错误:Python标准库random生成整数随机数的方法为randint(),你写的randiant()不存在,会直接抛出名称错误
  2. 命令装饰器写法错误:discord.py要求@bot.command必须加括号才能正常注册命令,否则命令不会被识别
  3. 未配置参数接收逻辑:无法读取用户输入的范围参数,自然不能按用户指定的范围生成随机数

可直接使用的完整实现代码

import random
# 此处省略你已有的bot初始化、其他命令等代码

@bot.command()
async def rng(ctx, *, range_str: str = "1,100"):
    # 统一替换中文逗号为英文逗号,兼容输入法误输入
    range_str = range_str.replace(",", ",")
    try:
        min_val, max_val = map(int, [i.strip() for i in range_str.split(",")])
    except (ValueError, TypeError):
        await ctx.send("输入格式错误,请使用 `$rng 最小值,最大值` 格式调用,例如:`$rng 1,10`")
        return

    # 自动修正大小值顺序,避免用户把上下限写反
    if min_val > max_val:
        min_val, max_val = max_val, min_val

    result = random.randint(min_val, max_val)
    await ctx.send(f"🎲 范围[{min_val}, {max_val}]的随机数结果:{result}")

实现说明

  • 参数接收用*通配符捕获命令后所有输入内容,避免逗号被识别为参数分隔符导致解析失败
  • 给range_str设置了默认值"1,100",用户直接发送$rng不带参数时,会默认生成1-100范围内的随机数
  • 做了多层错误兼容:非数字输入、参数数量不对、中文逗号输入、上下限写反这些场景都不会导致机器人崩溃
  • 生成的随机数包含输入的上下限两端值,和random.randint()的原生逻辑一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:51:20