如何检查我的变量是否是有效的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 否则我将收到一个server为nil值的错误。

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

完整代码:

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 ==“!说”)并且message.parent.is_private then
 if(userID ==“187590758360940545”)then

 如果没有服务器
退货

如果(server == servers)then

 如果(channel == channels)然后
 message.channel:sendMessage(arg)
 否则
 message:reply(“我不知道这个频道。”)
 返回
 结束

message:reply(“我不知道这个服务器。”)

结束

)

否则
 message:reply(“:sob:停止!!”)
 结束
 结束
)

并且如何让它在我想要的频道中写入功能 message.channel:sendMessage(arg) 这就像message:reply 它回复来自消息的位置。

点赞
用户2858170
用户2858170

让我们暂时不去验证 serverID。

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

简单验证 serverID 并希望你会得到一个有效的服务器句柄是不可行的。

因此,要么使用 Lua 的错误处理特性 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("没有找到 ID 为'" .. serverID .. "'的服务器。")
  return -- 或者在这里做一些聪明的事情,显示一个消息框或其他什么...
end
-- 从这里开始,server 就不会是 nil

除非你确定没有其他方法返回 nil,否则应该适当处理可能出现的情况。

2016-07-21 19:50:22