【发布时间】:2016-07-22 05:28:36
【问题描述】:
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 否则我会得到一个错误,服务器是一个 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 == "!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) 这就像消息:回复 它会回复消息的来源。
【问题讨论】:
-
您是否需要检查
message.content的格式是否正确,或者client.servers:get()是否接受了您的serverID? -
Skype?我猜它的 client.servers:get() 如果我通过 Skype 与您联系并链接所有内容,我可以更好地解释它。它应该检查 serverID 是否被我的命令接受。
-
这里的服务器是什么:if (server == servers)?以下行中的频道也是如此。顺便说一句,你不需要括号。
-
if not server then return end这应该在您索引server之前完成!不是 4 行之后 :-) -
local server = client.servers:get('id', serverID) -- Unter dieser linie if not server then return end