我如何检查我的 "variable" 是否有效 "ID"

How can I check if my "variable" is a valid "ID"

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

如何检查我的有效 ID 是否有效?

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

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

我正在尝试几天来完成一个命令,这是其中的一部分。 如果您需要更多内容,请告诉我,我会 link 给您。

完整代码:

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(参数) 这就像 message:reply 它会回复消息的来源。

让我们暂时忘记验证 serverID。

当然你应该总是处理 client.servers:get('id', serverID) 返回 nil 的情况。

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

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

或者简单地用 if 语句检查 server 这样如果它是 nil 就不会使用 server

简体:

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,否则您应该妥善处理这种可能性。