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

PySpigot中registerCommand报错:无法转换Python函数为PyFunction

PySpigot命令注册TypeError问题解决

错误核心

报错TypeError("registerCommand(): 1st arg can't be coerced to org.python.core.PyFunction"),说明registerCommand方法要求第一个参数是Python函数,但你传入的是命令名称字符串,问题出在参数顺序错误。

解决步骤

1. 修正registerCommand参数顺序

PySpigot的registerCommand方法签名应为函数在前,命令名在后,把调用代码改成:

for c in ["promote","suspend","demote","staff_ban","staff_unban","punish","activate","status"]:
    ps.command.registerCommand(onCommand, c, onTabComplete)

2. 修复onCommand返回值类型

Bukkit API要求onCommand必须返回布尔值(True表示命令处理成功,False表示显示用法),你的当前代码缺少正确返回值,修改如下:

def onCommand(sender,command,label,args):
    if gdata is None:
        print("[Staff] Failed to load remote config")
        return False  # 添加布尔返回值
    cmd=command.getName().lower()
    if hasattr(sender, "getUniqueId"):
        u=uuid(sender)
        ensure(u)
        f=data[u]
    allowed = ["owner","manager"]
    # ... 其余业务逻辑
    return True  # 处理完成返回True

3. 确保onTabComplete符合要求

如果onTabComplete未正确定义,也可能引发连锁问题,确保它的签名和返回值符合规范:

def onTabComplete(sender, command, alias, args):
    # 这里编写你的补全逻辑
    return []  # 返回补全选项列表

测试

调整后重新执行/pyspigot reload player_manager.py,验证错误是否消失。

内容的提问来源于stack exchange,提问作者Mohamed Ali Martins Agoussine

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.07 13:12:32