Vk-io: context.hasText()κ°€ μ œλŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2018λ…„ 01μ›” 12일  Β·  22μ½”λ©˜νŠΈ  Β·  좜처: negezor/vk-io

λ…Έλ“œ - v9.2.0
VK-IO - 4.0.0-μ•ŒνŒŒ.8

μˆ˜ν‘œ 자체:

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

(였λ₯˜λŠ” λ§ˆμ§€λ§‰ 쀄을 가리킴)

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)

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

vk.setOptions({ μ—μ΄μ „νŠΈ });

λͺ¨λ“  22 λŒ“κΈ€

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

νƒ€λ‹Ήν•œ 이유둜, λ³΄λ‚΄λŠ” λ©”μ‹œμ§€κ°€ ν•„μš”ν•˜μ§€ μ•Šμ€μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ isOutboxλ₯Ό λ³„λ„λ‘œ κΊΌλ‚΄μ‹­μ‹œμ˜€.

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

이제 2개의 였λ₯˜κ°€ μžˆμŠ΅λ‹ˆλ‹€.

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)

μ½”λ“œλŠ” 일반적으둜 μ–΄λ–»κ²Œ μƒκ²ΌμŠ΅λ‹ˆκΉŒ?

376라인 λ§μ”€ν•˜μ‹œλŠ”κ±΄κ°€μš”?
κ·Έ 전에 λ‹€λ₯Έ ν…μŠ€νŠΈμ˜ μΌμΉ˜μ— λŒ€ν•œ λ§Žμ€ 검사가 있고 376ν–‰μ—λŠ” else await next();
저것듀. μΌμΉ˜ν•˜λŠ” ν•­λͺ©μ΄ μ—†μœΌλ©΄ λ‹€μŒμ„ κΈ°λ‹€λ¦½λ‹ˆλ‹€()

  1. 였λ₯˜λŠ” next() κ°€ μ—¬λŸ¬ 번 호좜되고 μžˆμŒμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
  2. nullμ—μ„œ 뢄할에 μ•‘μ„ΈμŠ€ν•˜λ €κ³  ν•©λ‹ˆλ‹€. ν…μŠ€νŠΈκ°€ μ—†κΈ° λ•Œλ¬Έμ΄λΌκ³  μƒκ°ν•˜λŠ” 것이 논리적이라고 μƒκ°ν•©λ‹ˆλ‹€.

μ•Œκ² μŠ΅λ‹ˆλ‹€. 첫 번째 였λ₯˜λ‘œ ν•΄κ²°ν•  수 μžˆμ„ 것 같은데 두 번째 였λ₯˜λŠ” μ–΄λ–»κ²Œ ν•΄μ•Ό ν•˜λ‚˜μš”?
message.getText()μ—μ„œ null이 λ‚˜νƒ€λ‚˜λŠ” μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

ν…μŠ€νŠΈκ°€ μ—†κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

context.hasText() ν•¨μˆ˜κ°€ 이λ₯Ό 확인해야 ν•˜μ§€ μ•ŠμŠ΅λ‹ˆκΉŒ?

hasText() λ©”μ†Œλ“œλŠ” ν…μŠ€νŠΈκ°€ 있으면 true λ°˜ν™˜ν•˜κ³  그렇지 μ•ŠμœΌλ©΄ false λ°˜ν™˜ν•©λ‹ˆλ‹€. λ‚΄κ°€ λ§ν–ˆλ“―μ΄ λ¬Έμ œλŠ” 일련의 검사에 μžˆμŠ΅λ‹ˆλ‹€.

κΈ€μŽ„, λ‚˜λŠ” λ‹Ήμ‹ μ˜ 일련의 검사λ₯Ό λ°›μ•˜κ³  그것에 λ¬Έμ œκ°€μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

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

이 μ½”λ“œλ‘œ 전체 그림을 λ³Ό 수 μ—†μŠ΅λ‹ˆλ‹€. 쑰건이 잘λͺ» λ°°μΉ˜λ˜μ—ˆκ±°λ‚˜ Promise 미듀웨어가 μž‘λ™ν•˜λŠ” 방식에 λŒ€ν•œ μ™„μ „ν•œ μ˜€ν•΄λ‘œ 인해 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

λ‚΄ κ΄€μ μ—μ„œ μ½”λ“œμ˜ ꡬ쑰λ₯Ό 더 μ •ν™•ν•œ ꡬ쑰둜 λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€. 였λ₯˜κ°€ ꡬ쑰 κ³‘μ„ μœΌλ‘œ μΈν•œ 것인지 λ΄…μ‹œλ‹€.

λ‚˜λŠ” λ˜ν•œ ν”„λ‘μ‹œ 정보가 μ–΄λ”˜κ°€μ— 사라진 것을 λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€.
지원을 μ œκ±°ν–ˆμŠ΅λ‹ˆκΉŒ?

지원은 남아 μžˆμ§€λ§Œ 이제 ν”„λ‘μ‹œμ— https μ—μ΄μ „νŠΈλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.

μ‚¬μš© 방법에 λŒ€ν•œ μ •λ³΄λŠ” μ–΄λ””μ—μ„œ 찾을 수 μžˆμŠ΅λ‹ˆκΉŒ?
그리고 더 λ‚˜μ•„κ°€...
도크에 μ²­μ·¨ν•  수 μžˆλŠ” λͺ¨λ“  이벀트 λͺ©λ‘μ΄ μ—†λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.
μΆ”κ°€ν•΄μ£Όμ‹œλ©΄ 쒋을 것 κ°™μŠ΅λ‹ˆλ‹€)

κΈ€μŽ„μš”, 일반적으둜 ꡬ글링 https proxy agent ν•˜λ©΄ μΆ©λΆ„ν•©λ‹ˆλ‹€. λ‚˜μ€‘μ— ν•΄λ³Ό μƒκ°μž…λ‹ˆλ‹€.

λ¬Έμ„œλ₯Ό μž‘μ„±ν•  μ‹œκ°„μ΄ 거의 μ—†μ§€λ§Œ μ–΄λ–»κ²Œλ“  잘 될 것이라고 μƒκ°ν•©λ‹ˆλ‹€.

ν”„λ‘μ‹œλ₯Ό λ‹€μ‹œ μ‚¬μš©ν•  ν•„μš”κ°€μžˆμ—ˆμŠ΅λ‹ˆλ‹€ ...
λ‹Ήμ‹ μ˜ λ„μ„œκ΄€κ³Ό ν•¨κ»˜ μ‚¬μš©ν•˜λŠ” 예λ₯Ό 보여쀄 수 μžˆμŠ΅λ‹ˆκΉŒ?

μ˜΅μ…˜μ—μ„œ μ—μ΄μ „νŠΈ κ΅¬ν˜„μ„ 전달해야 ν•©λ‹ˆλ‹€. https-proxy-agent λͺ¨λ“ˆμ΄ 이에 적합할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ–΄λ–€ μ˜΅μ…˜μ΄ μžˆμŠ΅λ‹ˆκΉŒ?

vk.setOptions({ μ—μ΄μ „νŠΈ });

감사 ν•΄μš”

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰