如何检查我的“变量”是否是有效的“ID”

时间:2016-07-21 18:08:14

标签: api lua libraries luvit

API: https://github.com/satom99/litcord

如果有效身份证如何,我该如何检查我的身份?

local cmd, serverID, channelID, arg = string.match(message.content, '(%S+) (%d+) (%d+) (%S+.*)')    
local server = client.servers:get('id', serverID)

serverID是变量,我需要检查serverID是否是有效的ID 否则我会收到服务器为零值的错误。

我正在尝试几天完成一个命令,这是它的一部分。 如果您需要更多内容,请告诉我,我会将其链接到您。

完整代码:

client:on(
    'message',
    function(message)
      local userID = message.author.id
      local cmd, serverID, channelID, arg = string.match(message.content, '(%S+) (%d+) (%d+) (%S+.*)')
      local server = client.servers:get('id', serverID)
      local channel = server.channels:get('id', channelID)
      local cmd = cmd or message.content
      if (cmd == "!say") and message.parent.is_private then 
        if (userID == "187590758360940545") then

          if not server then
            return
          end

          if (server == servers) then

            if (channel == channels) then
              message.channel:sendMessage(arg)
            else
              message:reply("I don't know this channel.")
              return
            end

            message:reply("I don't know this server.")

          end

        else
          message:reply(":sob: Stop!!!!")
        end
      end
    end
)

我怎样才能让它在我想要的功能中写入 message.channel:sendMessage(arg) 这就像消息:回复 它会回复消息的来源。

1 个答案:

答案 0 :(得分:0)

让我们暂时忘记验证serverID。

当然,您应始终处理案例client.servers:get('id', serverID)撤退nil

简单地以某种方式验证serverID并希望您将获得有效的服务器句柄不是一种选择。

因此要么使用Luas错误处理功能https://www.lua.org/manual/5.3/manual.html#2.3

或只是使用if语句检查server,这样如果server,您就不会使用nil

简化为:

local server = client.servers:get('id', serverID)
if not server then
  print("No server with id '" .. serverID .. "' found.")
  return -- or do something clever here, show a message box or whatever...
end
-- server won't be nil from here

除非您确定没有其他方式可以返回nil,否则您应该正确处理这种可能性。