如何使用DISCORDIA(LUA)通过机器人创建警告命令

如何在discordia中创建警告命令? 我已经尝试过这个但是 .json 在 cmd 中返回 null (没有错误),我已经尝试了好久但我就是想不出问题在哪里:

elseif args[1]:lower():sub(3, #".warn") == ".warn" then
  local wopen = io.open("warns.json", "r")
    local wparse = json.parse(wopen:read("*a"))
    wopen:close()
    if args[2] then
        local mentioned_user = message.mentionedUsers.first
        local mentioned_member = message.guild:getMember(mentioned_user)
        local mentioned = message.guild:getMember(mentioned_member)

        if mentioned ~= nil then
            if args[3] then
                table.remove(args, 1) --// removes command and mention arguments
                local reason = table.concat(args) --// turns remaining contents of the table into one long string value
                if wparse[mentioned.id] then --// checks if the mentioned user exists in the database
                  wparse[mentioned.id] = wparse[mentioned.id] + 1 --// big brain math (if the user already exists, add 1 to their warnings)
                    message:reply(mentioned.username.." 被警告了,因为: "..reason.."。他们现在有 "..wparse[mentioned.id].." 个警告。")
                else --// if they mentioned user doesn't exist, we should add them to it
                    wparse[mentioned.id] = 1 --// if they don't exist, add them to the database and set their warnings to 1
                    message:reply(mentioned.username.." 被警告了,因为: "..reason.."。他们现在有 1 个警告。")
                end
            end
        end
    else
        message:reply("提供一个要警告的成员。")
    end

    wopen = io.open("warns.json", "w")
    wopen:write(json.stringify(wparse))
    wopen:close()
点赞
用户3342050
用户3342050

猜测你的 :sub() 命令是错误的。

它从第三个位置开始,但是结束位置在字符串结尾的 ".warn" 的长度,这是 5。

因此,:sub(3, 5) 永远不会返回任何 == ".warn" 的东西。

充其量,它可能会给你 ".wa"。

你需要在 sub() 的第二个参数上加上三个。

:sub(3, #".warn" +3) == ".warn"
2021-01-06 07:25:56