2016-07-21 22 views
0

API:https://github.com/satom99/litcordWie kann ich überprüfen, ob mein „Variable“ ist eine gültige „ID“

Wie kann ich meine valiable wenn sein überprüfen eine gültige ID?

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

serverID ist die Variable, und ich muss überprüfen, ob die serverID eine gültige ID ist Ansonsten werde ich eine Fehlermeldung erhalten, dass Server ein Nullwert ist.

Ich versuche Tage einen Befehl zu beenden und das ist ein Teil davon. Wenn Sie mehr Inhalt benötigen, dann sagen Sie mir bitte, ich werde es mit Ihnen verknüpfen.

Voll Code:

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 
) 

Und wie kann ich es in den Kanal I mit Funktionen message.channel:sendMessage(arg) diese wie Nachricht wollen schreiben lassen: antworten antwortet sie zurück woher die Nachricht kam.

+0

Müssen Sie überprüfen, ob 'message.content' im richtigen Format ist oder ob' client.servers: get() 'Ihre' serverID' akzeptiert? – mpeterv

+0

Skype? Ich denke, es Client.servers: get() Ich kann es besser erklären, wenn ich skype Sie und alles verknüpfen. Es sollte überprüfen, ob serverID von meinem Befehl akzeptiert wird. – jepjep40

+0

ok geändert .... – jepjep40

Antwort

0

Vergessen wir die Bestätigung der ServerID für einen Moment.

Natürlich sollten Sie immer den Fall behandeln returing nil.

Einfach nur serverID validieren und hoffen, dass Sie einen gültigen Server-Griff zurück erhalten, ist keine Option.

Also entweder Funktionen Handhabung Luas Fehler https://www.lua.org/manual/5.3/manual.html#2.3

oder einfach server mit einer if-Anweisung überprüfen verwenden, so dass Sie nicht server verwenden, wenn es nil ist.

Vereinfacht:

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 

Es sei denn, Sie wissen sicher, dass es keine andere Möglichkeit für null ist man richtig diese Möglichkeit behandeln zurückgegeben werden sollte.

+0

Und du hast skype :o? Dann füg einfach ein i hinzu nach meinem ersten jep und schon hast du mein skype name wenn du den anderen teil dann zusammen fügst. Ich schreibe es so damit man es nicht so leicht herausfindet. – jepjep40

+0

Der Sinn von Stackoverflow besteht darin Fragen so zu stellen, dass das Problem daraus ersichtlich wird und Antworten zu liefern die jedem weiterhelfen der das gleiche Problem hat. SO ist keine Skype-Vermittlung. Bearbeite deine Frage so, dass das was du mir auf Skype erzählen willst drin steht. – Piglet

+0

Habe es geändert. – jepjep40