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) 这就像消息:回复 它会回复消息的来源。
答案 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,否则您应该正确处理这种可能性。