Vk-io: Es sieht so aus, als ob context.hasText() nicht richtig funktioniert.

Erstellt am 12. Jan. 2018  ·  22Kommentare  ·  Quelle: negezor/vk-io

Knoten - v9.2.0
VK-IO - 4.0.0-alpha.8

Der Scheck selbst:

if (!message.hasText() && message.isOutbox() && message.text[0] !== '/' && message.getChatId() != 4) return next();
let command = message.text.split(" ")[0].slice(1).toLowerCase()

(Der Fehler zeigt auf die letzte Zeile)

Handle polling update error: TypeError: Cannot read property 'split' of null
at vk.updates.on (/home/bots/vk/vk.js:198:29)
at Array.use (/home/bots/vk/node_modules/vk-io/lib/updates/index.js:136:15)
at next (/home/bots/vk/node_modules/middleware-io/lib/middleware.js:80:22)
at stack.(anonymous function) (/home/bots/vk/node_modules/middleware-io/lib/middleware.js:80:34)
at Array.use (/home/bots/vk/node_modules/vk-io/lib/updates/index.js:140:13)
at next (/home/bots/vk/node_modules/middleware-io/lib/middleware.js:80:22)
at Middleware.run (/home/bots/vk/node_modules/middleware-io/lib/middleware.js:87:10)
at Updates.dispatchMiddleware (/home/bots/vk/node_modules/vk-io/lib/updates/index.js:678:28)
at Updates.handlePollingUpdate (/home/bots/vk/node_modules/vk-io/lib/updates/index.js:213:23)
at Promise.all.response.updates.map (/home/bots/vk/node_modules/vk-io/lib/updates/index.js:660:22)

Hilfreichster Kommentar

vk.setOptions({Agent});

Alle 22 Kommentare

if (message.isOutbox() || message.getChatId() !== 4 || !message.hasText() || message.getText()[0] !== '/') {
  await next();
}

Nehmen Sie isOutbox aus gutem Grund separat heraus, um zu überprüfen, ob ausgehende Nachrichten nicht benötigt werden.

if (message.isOutbox()) {
  return;
}

Jetzt gibt es 2 Fehler.

Handle polling update error: Error: next() called multiple times
at next (/home/bots/vk/node_modules/middleware-io/lib/middleware.js:69:11)
at stack.(anonymous function) (/home/bots/vk/node_modules/middleware-io/lib/middleware.js:80:34)
at vk.updates.on (/home/bots/vk/vk.js:376:15)
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:228:7)


Handle polling update error: TypeError: Cannot read property 'split' of null
at vk.updates.on (/home/bots/vk/vk.js:200:33)
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:228:7)

Wie sieht der Code allgemein aus?

Redest du von Linie 376?
Davor gibt es eine Reihe von Prüfungen auf Übereinstimmung verschiedener Texte und in Zeile 376 gibt es else await next();
JENE. Wenn keine Übereinstimmung gefunden wird, warten Sie als nächstes ()

  1. Der Fehler zeigt an, dass next() mehrmals aufgerufen wird.
  2. Es wird versucht, auf Split von null zuzugreifen. Ich denke, es ist logisch, dass dies daran liegt, dass es keinen Text gibt.

Ok, ich denke, ich werde es mit dem ersten herausfinden, aber was soll ich mit dem zweiten Fehler machen?
Warum erhalte ich null in message.getText()?

Weil der Text fehlt.

Sollte die Funktion context.hasText() dies nicht überprüfen?

Methode hasText() gibt true wenn Text vorhanden ist, andernfalls false . Wie gesagt, das Problem liegt in einer Reihe von Überprüfungen.

Nun, ich habe Ihre Kontrollreihenfolge durchgeführt, und es gab ein Problem damit.

if (message.isOutbox() || message.getChatId() !== 4 || !message.hasText() || message.getText()[0] !== '/') {
  await next();
}

Ich kann mit diesem Code nicht das ganze Bild sehen. Es liegt ein Fehler vor, weil die Bedingungen falsch platziert wurden oder ein vollständiges Missverständnis der Funktionsweise der Promise-Middleware vorliegt.

Ich habe die Struktur des Codes aus meiner Sicht in eine korrektere geändert, mal sehen, ob der Fehler nur auf die Strukturkurve zurückzuführen ist.

Mir ist auch aufgefallen, dass die Proxy-Informationen irgendwo verschwunden sind.
Haben Sie ihre Unterstützung entfernt?

Der Support bleibt bestehen, nur müssen Sie jetzt https-Agenten für das Proxying verwenden.

Wo finde ich Informationen zur Verwendung?
Und weiter...
Anscheinend verfügen Ihre Docks nicht über eine Liste aller Ereignisse, die Sie anhören können.
Es wäre schön, wenn Sie das hinzufügen)

Nun, im Allgemeinen reicht es, https proxy agent zu googeln, ich denke, ich werde es später tun.

Es bleibt fast keine Zeit, eine Dokumentation zu erstellen, aber ich denke, es wird irgendwie klappen.

Es musste wieder ein Proxy verwendet werden ...
Können Sie ein Beispiel für ihre Verwendung mit Ihrer Bibliothek zeigen?

Sie müssen die Implementierung des Agenten in den Optionen übergeben. Hierfür eignet sich möglicherweise das Modul

Welche Optionen?

vk.setOptions({Agent});

Vielen Dank

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

nitreojs picture nitreojs  ·  3Kommentare

Pacmard picture Pacmard  ·  3Kommentare

zardoy picture zardoy  ·  18Kommentare

T1MOXA picture T1MOXA  ·  29Kommentare

SOS
helix-team picture helix-team  ·  4Kommentare