@builderbot/cli 1.0.30-alpha.0 → 1.0.31-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/dist/index.cjs +4 -1
  2. package/dist/interactive/index.d.ts.map +1 -1
  3. package/dist/starters/apps/base-js-baileys-json/Dockerfile +2 -1
  4. package/dist/starters/apps/base-js-baileys-json/_gitignore +10 -0
  5. package/dist/starters/apps/base-js-baileys-json/package.json +1 -1
  6. package/dist/starters/apps/base-js-baileys-json/src/app.js +111 -111
  7. package/dist/starters/apps/base-js-baileys-memory/Dockerfile +2 -1
  8. package/dist/starters/apps/base-js-baileys-memory/_gitignore +10 -0
  9. package/dist/starters/apps/base-js-baileys-memory/package.json +1 -1
  10. package/dist/starters/apps/base-js-baileys-memory/src/app.js +111 -111
  11. package/dist/starters/apps/base-js-baileys-mongo/Dockerfile +2 -1
  12. package/dist/starters/apps/base-js-baileys-mongo/_gitignore +10 -0
  13. package/dist/starters/apps/base-js-baileys-mongo/package.json +1 -1
  14. package/dist/starters/apps/base-js-baileys-mongo/src/app.js +111 -111
  15. package/dist/starters/apps/base-js-baileys-mysql/Dockerfile +2 -1
  16. package/dist/starters/apps/base-js-baileys-mysql/_gitignore +10 -0
  17. package/dist/starters/apps/base-js-baileys-mysql/package.json +1 -1
  18. package/dist/starters/apps/base-js-baileys-mysql/src/app.js +111 -111
  19. package/dist/starters/apps/base-js-baileys-postgres/Dockerfile +2 -1
  20. package/dist/starters/apps/base-js-baileys-postgres/_gitignore +10 -0
  21. package/dist/starters/apps/base-js-baileys-postgres/package.json +1 -1
  22. package/dist/starters/apps/base-js-baileys-postgres/src/app.js +111 -111
  23. package/dist/starters/apps/base-js-meta-json/Dockerfile +2 -1
  24. package/dist/starters/apps/base-js-meta-json/_gitignore +10 -0
  25. package/dist/starters/apps/base-js-meta-json/package.json +1 -1
  26. package/dist/starters/apps/base-js-meta-json/src/app.js +111 -111
  27. package/dist/starters/apps/base-js-meta-memory/Dockerfile +2 -1
  28. package/dist/starters/apps/base-js-meta-memory/_gitignore +10 -0
  29. package/dist/starters/apps/base-js-meta-memory/package.json +1 -1
  30. package/dist/starters/apps/base-js-meta-memory/src/app.js +111 -111
  31. package/dist/starters/apps/base-js-meta-mongo/Dockerfile +2 -1
  32. package/dist/starters/apps/base-js-meta-mongo/_gitignore +10 -0
  33. package/dist/starters/apps/base-js-meta-mongo/package.json +1 -1
  34. package/dist/starters/apps/base-js-meta-mongo/src/app.js +111 -111
  35. package/dist/starters/apps/base-js-meta-mysql/Dockerfile +2 -1
  36. package/dist/starters/apps/base-js-meta-mysql/_gitignore +10 -0
  37. package/dist/starters/apps/base-js-meta-mysql/package.json +1 -1
  38. package/dist/starters/apps/base-js-meta-mysql/src/app.js +111 -111
  39. package/dist/starters/apps/base-js-meta-postgres/Dockerfile +2 -1
  40. package/dist/starters/apps/base-js-meta-postgres/_gitignore +10 -0
  41. package/dist/starters/apps/base-js-meta-postgres/package.json +1 -1
  42. package/dist/starters/apps/base-js-meta-postgres/src/app.js +111 -111
  43. package/dist/starters/apps/base-js-twilio-json/Dockerfile +2 -1
  44. package/dist/starters/apps/base-js-twilio-json/_gitignore +10 -0
  45. package/dist/starters/apps/base-js-twilio-json/package.json +1 -1
  46. package/dist/starters/apps/base-js-twilio-json/src/app.js +111 -111
  47. package/dist/starters/apps/base-js-twilio-memory/Dockerfile +2 -1
  48. package/dist/starters/apps/base-js-twilio-memory/_gitignore +10 -0
  49. package/dist/starters/apps/base-js-twilio-memory/package.json +1 -1
  50. package/dist/starters/apps/base-js-twilio-memory/src/app.js +111 -111
  51. package/dist/starters/apps/base-js-twilio-mongo/Dockerfile +2 -1
  52. package/dist/starters/apps/base-js-twilio-mongo/_gitignore +10 -0
  53. package/dist/starters/apps/base-js-twilio-mongo/package.json +1 -1
  54. package/dist/starters/apps/base-js-twilio-mongo/src/app.js +111 -111
  55. package/dist/starters/apps/base-js-twilio-mysql/Dockerfile +2 -1
  56. package/dist/starters/apps/base-js-twilio-mysql/_gitignore +10 -0
  57. package/dist/starters/apps/base-js-twilio-mysql/package.json +1 -1
  58. package/dist/starters/apps/base-js-twilio-mysql/src/app.js +111 -111
  59. package/dist/starters/apps/base-js-twilio-postgres/Dockerfile +2 -1
  60. package/dist/starters/apps/base-js-twilio-postgres/_gitignore +10 -0
  61. package/dist/starters/apps/base-js-twilio-postgres/package.json +1 -1
  62. package/dist/starters/apps/base-js-twilio-postgres/src/app.js +111 -111
  63. package/dist/starters/apps/base-js-venom-json/Dockerfile +2 -1
  64. package/dist/starters/apps/base-js-venom-json/_gitignore +10 -0
  65. package/dist/starters/apps/base-js-venom-json/package.json +1 -1
  66. package/dist/starters/apps/base-js-venom-json/src/app.js +111 -111
  67. package/dist/starters/apps/base-js-venom-memory/Dockerfile +2 -1
  68. package/dist/starters/apps/base-js-venom-memory/_gitignore +10 -0
  69. package/dist/starters/apps/base-js-venom-memory/package.json +1 -1
  70. package/dist/starters/apps/base-js-venom-memory/src/app.js +111 -111
  71. package/dist/starters/apps/base-js-venom-mongo/Dockerfile +2 -1
  72. package/dist/starters/apps/base-js-venom-mongo/_gitignore +10 -0
  73. package/dist/starters/apps/base-js-venom-mongo/package.json +1 -1
  74. package/dist/starters/apps/base-js-venom-mongo/src/app.js +111 -111
  75. package/dist/starters/apps/base-js-venom-mysql/Dockerfile +2 -1
  76. package/dist/starters/apps/base-js-venom-mysql/_gitignore +10 -0
  77. package/dist/starters/apps/base-js-venom-mysql/package.json +1 -1
  78. package/dist/starters/apps/base-js-venom-mysql/src/app.js +111 -111
  79. package/dist/starters/apps/base-js-venom-postgres/Dockerfile +2 -1
  80. package/dist/starters/apps/base-js-venom-postgres/_gitignore +10 -0
  81. package/dist/starters/apps/base-js-venom-postgres/package.json +1 -1
  82. package/dist/starters/apps/base-js-venom-postgres/src/app.js +111 -111
  83. package/dist/starters/apps/base-js-wppconnect-json/Dockerfile +2 -1
  84. package/dist/starters/apps/base-js-wppconnect-json/_gitignore +10 -0
  85. package/dist/starters/apps/base-js-wppconnect-json/package.json +1 -1
  86. package/dist/starters/apps/base-js-wppconnect-json/src/app.js +111 -111
  87. package/dist/starters/apps/base-js-wppconnect-memory/Dockerfile +2 -1
  88. package/dist/starters/apps/base-js-wppconnect-memory/_gitignore +10 -0
  89. package/dist/starters/apps/base-js-wppconnect-memory/package.json +1 -1
  90. package/dist/starters/apps/base-js-wppconnect-memory/src/app.js +111 -111
  91. package/dist/starters/apps/base-js-wppconnect-mongo/Dockerfile +2 -1
  92. package/dist/starters/apps/base-js-wppconnect-mongo/_gitignore +10 -0
  93. package/dist/starters/apps/base-js-wppconnect-mongo/package.json +1 -1
  94. package/dist/starters/apps/base-js-wppconnect-mongo/src/app.js +111 -111
  95. package/dist/starters/apps/base-js-wppconnect-mysql/Dockerfile +2 -1
  96. package/dist/starters/apps/base-js-wppconnect-mysql/_gitignore +10 -0
  97. package/dist/starters/apps/base-js-wppconnect-mysql/package.json +1 -1
  98. package/dist/starters/apps/base-js-wppconnect-mysql/src/app.js +111 -111
  99. package/dist/starters/apps/base-js-wppconnect-postgres/Dockerfile +2 -1
  100. package/dist/starters/apps/base-js-wppconnect-postgres/_gitignore +10 -0
  101. package/dist/starters/apps/base-js-wppconnect-postgres/package.json +1 -1
  102. package/dist/starters/apps/base-js-wppconnect-postgres/src/app.js +111 -111
  103. package/dist/starters/apps/base-ts-baileys-json/Dockerfile +2 -1
  104. package/dist/starters/apps/base-ts-baileys-json/_gitignore +10 -0
  105. package/dist/starters/apps/base-ts-baileys-json/package.json +5 -3
  106. package/dist/starters/apps/base-ts-baileys-memory/Dockerfile +2 -1
  107. package/dist/starters/apps/base-ts-baileys-memory/_gitignore +10 -0
  108. package/dist/starters/apps/base-ts-baileys-memory/package.json +5 -3
  109. package/dist/starters/apps/base-ts-baileys-mongo/Dockerfile +2 -1
  110. package/dist/starters/apps/base-ts-baileys-mongo/_gitignore +10 -0
  111. package/dist/starters/apps/base-ts-baileys-mongo/package.json +5 -3
  112. package/dist/starters/apps/base-ts-baileys-mysql/Dockerfile +2 -1
  113. package/dist/starters/apps/base-ts-baileys-mysql/_gitignore +10 -0
  114. package/dist/starters/apps/base-ts-baileys-mysql/package.json +5 -3
  115. package/dist/starters/apps/base-ts-baileys-postgres/Dockerfile +2 -1
  116. package/dist/starters/apps/base-ts-baileys-postgres/_gitignore +10 -0
  117. package/dist/starters/apps/base-ts-baileys-postgres/package.json +5 -3
  118. package/dist/starters/apps/base-ts-meta-json/Dockerfile +2 -1
  119. package/dist/starters/apps/base-ts-meta-json/_gitignore +10 -0
  120. package/dist/starters/apps/base-ts-meta-json/package.json +5 -3
  121. package/dist/starters/apps/base-ts-meta-memory/Dockerfile +2 -1
  122. package/dist/starters/apps/base-ts-meta-memory/_gitignore +10 -0
  123. package/dist/starters/apps/base-ts-meta-memory/package.json +5 -3
  124. package/dist/starters/apps/base-ts-meta-mongo/Dockerfile +2 -1
  125. package/dist/starters/apps/base-ts-meta-mongo/_gitignore +10 -0
  126. package/dist/starters/apps/base-ts-meta-mongo/package.json +5 -3
  127. package/dist/starters/apps/base-ts-meta-mysql/Dockerfile +2 -1
  128. package/dist/starters/apps/base-ts-meta-mysql/_gitignore +10 -0
  129. package/dist/starters/apps/base-ts-meta-mysql/package.json +5 -3
  130. package/dist/starters/apps/base-ts-meta-postgres/Dockerfile +2 -1
  131. package/dist/starters/apps/base-ts-meta-postgres/_gitignore +10 -0
  132. package/dist/starters/apps/base-ts-meta-postgres/package.json +5 -3
  133. package/dist/starters/apps/base-ts-twilio-json/Dockerfile +2 -1
  134. package/dist/starters/apps/base-ts-twilio-json/_gitignore +10 -0
  135. package/dist/starters/apps/base-ts-twilio-json/package.json +5 -3
  136. package/dist/starters/apps/base-ts-twilio-memory/Dockerfile +2 -1
  137. package/dist/starters/apps/base-ts-twilio-memory/_gitignore +10 -0
  138. package/dist/starters/apps/base-ts-twilio-memory/package.json +5 -3
  139. package/dist/starters/apps/base-ts-twilio-mongo/Dockerfile +2 -1
  140. package/dist/starters/apps/base-ts-twilio-mongo/_gitignore +10 -0
  141. package/dist/starters/apps/base-ts-twilio-mongo/package.json +5 -3
  142. package/dist/starters/apps/base-ts-twilio-mysql/Dockerfile +2 -1
  143. package/dist/starters/apps/base-ts-twilio-mysql/_gitignore +10 -0
  144. package/dist/starters/apps/base-ts-twilio-mysql/package.json +5 -3
  145. package/dist/starters/apps/base-ts-twilio-postgres/Dockerfile +2 -1
  146. package/dist/starters/apps/base-ts-twilio-postgres/_gitignore +10 -0
  147. package/dist/starters/apps/base-ts-twilio-postgres/package.json +5 -3
  148. package/dist/starters/apps/base-ts-venom-json/Dockerfile +2 -1
  149. package/dist/starters/apps/base-ts-venom-json/_gitignore +10 -0
  150. package/dist/starters/apps/base-ts-venom-json/package.json +5 -3
  151. package/dist/starters/apps/base-ts-venom-memory/Dockerfile +2 -1
  152. package/dist/starters/apps/base-ts-venom-memory/_gitignore +10 -0
  153. package/dist/starters/apps/base-ts-venom-memory/package.json +5 -3
  154. package/dist/starters/apps/base-ts-venom-mongo/Dockerfile +2 -1
  155. package/dist/starters/apps/base-ts-venom-mongo/_gitignore +10 -0
  156. package/dist/starters/apps/base-ts-venom-mongo/package.json +5 -3
  157. package/dist/starters/apps/base-ts-venom-mysql/Dockerfile +2 -1
  158. package/dist/starters/apps/base-ts-venom-mysql/_gitignore +10 -0
  159. package/dist/starters/apps/base-ts-venom-mysql/package.json +5 -3
  160. package/dist/starters/apps/base-ts-venom-postgres/Dockerfile +2 -1
  161. package/dist/starters/apps/base-ts-venom-postgres/_gitignore +10 -0
  162. package/dist/starters/apps/base-ts-venom-postgres/package.json +5 -3
  163. package/dist/starters/apps/base-ts-wppconnect-json/Dockerfile +2 -1
  164. package/dist/starters/apps/base-ts-wppconnect-json/_gitignore +10 -0
  165. package/dist/starters/apps/base-ts-wppconnect-json/package.json +5 -3
  166. package/dist/starters/apps/base-ts-wppconnect-memory/Dockerfile +2 -1
  167. package/dist/starters/apps/base-ts-wppconnect-memory/_gitignore +10 -0
  168. package/dist/starters/apps/base-ts-wppconnect-memory/package.json +5 -3
  169. package/dist/starters/apps/base-ts-wppconnect-mongo/Dockerfile +2 -1
  170. package/dist/starters/apps/base-ts-wppconnect-mongo/_gitignore +10 -0
  171. package/dist/starters/apps/base-ts-wppconnect-mongo/package.json +5 -3
  172. package/dist/starters/apps/base-ts-wppconnect-mysql/Dockerfile +2 -1
  173. package/dist/starters/apps/base-ts-wppconnect-mysql/_gitignore +10 -0
  174. package/dist/starters/apps/base-ts-wppconnect-mysql/package.json +5 -3
  175. package/dist/starters/apps/base-ts-wppconnect-postgres/Dockerfile +2 -1
  176. package/dist/starters/apps/base-ts-wppconnect-postgres/_gitignore +10 -0
  177. package/dist/starters/apps/base-ts-wppconnect-postgres/package.json +5 -3
  178. package/package.json +2 -3
package/dist/index.cjs CHANGED
@@ -5,6 +5,7 @@ var f = require('node:readline');
5
5
  var node_tty = require('node:tty');
6
6
  var require$$0 = require('tty');
7
7
  var require$$0$3 = require('fs');
8
+ var promises = require('fs/promises');
8
9
  var require$$1 = require('path');
9
10
  var node_child_process = require('node:child_process');
10
11
  var node_os = require('node:os');
@@ -9074,7 +9075,9 @@ const createApp = async (templateName) => {
9074
9075
  const indexOfPath = possiblesPath.find((a) => require$$0$3.existsSync(a));
9075
9076
  if (!indexOfPath)
9076
9077
  throw new Error('TEMPLATE_PATH_NOT_FOUND: ' + templateName);
9077
- await copyBaseApp(indexOfPath, require$$1.join(process.cwd(), templateName));
9078
+ const pathTemplate = require$$1.join(process.cwd(), templateName);
9079
+ await copyBaseApp(indexOfPath, pathTemplate);
9080
+ await promises.rename(require$$1.join(pathTemplate, '_gitignore'), require$$1.join(pathTemplate, '.gitignore'));
9078
9081
  };
9079
9082
  const startInteractive = async () => {
9080
9083
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interactive/index.ts"],"names":[],"mappings":"AAqEA,QAAA,MAAM,gBAAgB,QAAa,QAAQ,IAAI,CAoE9C,CAAA;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interactive/index.ts"],"names":[],"mappings":"AAwEA,QAAA,MAAM,gBAAgB,QAAa,QAAQ,IAAI,CAoE9C,CAAA;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
@@ -31,7 +31,8 @@ COPY --from=builder /app .
31
31
  RUN corepack enable && corepack prepare pnpm@latest --activate
32
32
  ENV PNPM_HOME=/usr/local/bin
33
33
 
34
- RUN npm cache clean --force && pnpm install --frozen-lockfile --production --ignore-scripts \
34
+ RUN npm cache clean --force && pnpm install --production --ignore-scripts \
35
+ && addgroup -g 1001 -S nodejs && adduser -S -u 1001 nodejs \
35
36
  && rm -rf $PNPM_HOME/.npm $PNPM_HOME/.node-gyp
36
37
 
37
38
  CMD ["npm", "start"]
@@ -0,0 +1,10 @@
1
+ dist/*
2
+ node_modules
3
+ .env
4
+
5
+ *_sessions
6
+ *tokens
7
+ .wwebjs*
8
+
9
+ *.log
10
+ *qr.png
@@ -6,7 +6,7 @@
6
6
  "type": "module",
7
7
  "scripts": {
8
8
  "lint": "eslint . --no-ignore",
9
- "dev": "node --no-warnings --watch-path=./src ./src/app.js",
9
+ "dev": "npm run lint && node --no-warnings --watch-path=./src ./src/app.js",
10
10
  "start": "node ./src/app.js"
11
11
  },
12
12
  "keywords": [],
@@ -1,116 +1,116 @@
1
- import { join } from 'path'
2
- import { createBot, createProvider, createFlow, addKeyword, utils } from '@builderbot/bot'
1
+ import { join } from 'path'
2
+ import { createBot, createProvider, createFlow, addKeyword, utils } from '@builderbot/bot'
3
3
  import { JsonFileDB as Database } from '@builderbot/database-json'
4
4
  import { BaileysProvider as Provider } from '@builderbot/provider-baileys'
5
-
6
- const PORT = process.env.PORT ?? 3008
7
-
8
- const discordFlow = addKeyword('doc').addAnswer(
9
- ['You can see the documentation here', '📄 https://builderbot.app/docs \n', 'Do you want to continue? *yes*'].join(
10
- '\n'
11
- ),
12
- { capture: true },
13
- async (ctx, { gotoFlow, flowDynamic }) => {
14
- if (ctx.body.toLocaleLowerCase().includes('yes')) {
15
- return gotoFlow(registerFlow)
16
- }
17
- await flowDynamic('Thanks!')
18
- return
19
- }
20
- )
21
-
22
- const welcomeFlow = addKeyword(['hi', 'hello', 'hola'])
23
- .addAnswer(`🙌 Hello welcome to this *Chatbot*`)
24
- .addAnswer(
25
- [
26
- 'I share with you the following links of interest about the project',
27
- '👉 *doc* to view the documentation',
28
- ].join('\n'),
29
- { delay: 800, capture: true },
30
- async (ctx, { fallBack }) => {
31
- if (!ctx.body.toLocaleLowerCase().includes('doc')) {
32
- return fallBack('You should type *doc*')
33
- }
34
- return
35
- },
36
- [discordFlow]
37
- )
38
-
39
- const registerFlow = addKeyword(utils.setEvent('REGISTER_FLOW'))
40
- .addAnswer(`What is your name?`, { capture: true }, async (ctx, { state }) => {
41
- await state.update({ name: ctx.body })
42
- })
43
- .addAnswer('What is your age?', { capture: true }, async (ctx, { state }) => {
44
- await state.update({ age: ctx.body })
45
- })
46
- .addAction(async (_, { flowDynamic, state }) => {
47
- await flowDynamic(`${state.get('name')}, thanks for your information!: Your age: ${state.get('age')}`)
48
- })
49
-
50
- const fullSamplesFlow = addKeyword(['samples', utils.setEvent('SAMPLES')])
51
- .addAnswer(`💪 I'll send you a lot files...`)
52
- .addAnswer(`Send image from Local`, { media: join(process.cwd(), 'assets', 'sample.png') })
53
- .addAnswer(`Send video from URL`, {
54
- media: 'https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYTJ0ZGdjd2syeXAwMjQ4aWdkcW04OWlqcXI3Ynh1ODkwZ25zZWZ1dCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/LCohAb657pSdHv0Q5h/giphy.mp4',
55
- })
56
- .addAnswer(`Send audio from URL`, { media: 'https://cdn.freesound.org/previews/728/728142_11861866-lq.mp3' })
57
- .addAnswer(`Send file from URL`, {
58
- media: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
59
- })
60
-
61
- const main = async () => {
62
- const adapterFlow = createFlow([welcomeFlow, registerFlow, fullSamplesFlow])
5
+
6
+ const PORT = process.env.PORT ?? 3008
7
+
8
+ const discordFlow = addKeyword('doc').addAnswer(
9
+ ['You can see the documentation here', '📄 https://builderbot.app/docs \n', 'Do you want to continue? *yes*'].join(
10
+ '\n'
11
+ ),
12
+ { capture: true },
13
+ async (ctx, { gotoFlow, flowDynamic }) => {
14
+ if (ctx.body.toLocaleLowerCase().includes('yes')) {
15
+ return gotoFlow(registerFlow)
16
+ }
17
+ await flowDynamic('Thanks!')
18
+ return
19
+ }
20
+ )
21
+
22
+ const welcomeFlow = addKeyword(['hi', 'hello', 'hola'])
23
+ .addAnswer(`🙌 Hello welcome to this *Chatbot*`)
24
+ .addAnswer(
25
+ [
26
+ 'I share with you the following links of interest about the project',
27
+ '👉 *doc* to view the documentation',
28
+ ].join('\n'),
29
+ { delay: 800, capture: true },
30
+ async (ctx, { fallBack }) => {
31
+ if (!ctx.body.toLocaleLowerCase().includes('doc')) {
32
+ return fallBack('You should type *doc*')
33
+ }
34
+ return
35
+ },
36
+ [discordFlow]
37
+ )
38
+
39
+ const registerFlow = addKeyword(utils.setEvent('REGISTER_FLOW'))
40
+ .addAnswer(`What is your name?`, { capture: true }, async (ctx, { state }) => {
41
+ await state.update({ name: ctx.body })
42
+ })
43
+ .addAnswer('What is your age?', { capture: true }, async (ctx, { state }) => {
44
+ await state.update({ age: ctx.body })
45
+ })
46
+ .addAction(async (_, { flowDynamic, state }) => {
47
+ await flowDynamic(`${state.get('name')}, thanks for your information!: Your age: ${state.get('age')}`)
48
+ })
49
+
50
+ const fullSamplesFlow = addKeyword(['samples', utils.setEvent('SAMPLES')])
51
+ .addAnswer(`💪 I'll send you a lot files...`)
52
+ .addAnswer(`Send image from Local`, { media: join(process.cwd(), 'assets', 'sample.png') })
53
+ .addAnswer(`Send video from URL`, {
54
+ media: 'https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYTJ0ZGdjd2syeXAwMjQ4aWdkcW04OWlqcXI3Ynh1ODkwZ25zZWZ1dCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/LCohAb657pSdHv0Q5h/giphy.mp4',
55
+ })
56
+ .addAnswer(`Send audio from URL`, { media: 'https://cdn.freesound.org/previews/728/728142_11861866-lq.mp3' })
57
+ .addAnswer(`Send file from URL`, {
58
+ media: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
59
+ })
60
+
61
+ const main = async () => {
62
+ const adapterFlow = createFlow([welcomeFlow, registerFlow, fullSamplesFlow])
63
63
 
64
- const adapterProvider = createProvider(Provider)
64
+ const adapterProvider = createProvider(Provider)
65
65
 
66
66
  const adapterDB = new Database({ filename: 'db.json' })
67
-
68
- const { handleCtx, httpServer } = await createBot({
69
- flow: adapterFlow,
70
- provider: adapterProvider,
71
- database: adapterDB,
72
- })
73
-
74
- adapterProvider.server.post(
75
- '/v1/messages',
76
- handleCtx(async (bot, req, res) => {
77
- const { number, message, urlMedia } = req.body
78
- await bot.sendMessage(number, message, { media: urlMedia ?? null })
79
- return res.end('sended')
80
- })
81
- )
82
-
83
- adapterProvider.server.post(
84
- '/v1/register',
85
- handleCtx(async (bot, req, res) => {
86
- const { number, name } = req.body
87
- await bot.dispatch('REGISTER_FLOW', { from: number, name })
88
- return res.end('trigger')
89
- })
90
- )
91
-
92
- adapterProvider.server.post(
93
- '/v1/samples',
94
- handleCtx(async (bot, req, res) => {
95
- const { number, name } = req.body
96
- await bot.dispatch('SAMPLES', { from: number, name })
97
- return res.end('trigger')
98
- })
99
- )
100
-
101
- adapterProvider.server.post(
102
- '/v1/blacklist',
103
- handleCtx(async (bot, req, res) => {
104
- const { number, intent } = req.body
105
- if (intent === 'remove') bot.blacklist.remove(number)
106
- if (intent === 'add') bot.blacklist.add(number)
107
-
108
- res.writeHead(200, { 'Content-Type': 'application/json' })
109
- return res.end(JSON.stringify({ status: 'ok', number, intent }))
110
- })
111
- )
112
-
113
- httpServer(+PORT)
114
- }
115
-
116
- main()
67
+
68
+ const { handleCtx, httpServer } = await createBot({
69
+ flow: adapterFlow,
70
+ provider: adapterProvider,
71
+ database: adapterDB,
72
+ })
73
+
74
+ adapterProvider.server.post(
75
+ '/v1/messages',
76
+ handleCtx(async (bot, req, res) => {
77
+ const { number, message, urlMedia } = req.body
78
+ await bot.sendMessage(number, message, { media: urlMedia ?? null })
79
+ return res.end('sended')
80
+ })
81
+ )
82
+
83
+ adapterProvider.server.post(
84
+ '/v1/register',
85
+ handleCtx(async (bot, req, res) => {
86
+ const { number, name } = req.body
87
+ await bot.dispatch('REGISTER_FLOW', { from: number, name })
88
+ return res.end('trigger')
89
+ })
90
+ )
91
+
92
+ adapterProvider.server.post(
93
+ '/v1/samples',
94
+ handleCtx(async (bot, req, res) => {
95
+ const { number, name } = req.body
96
+ await bot.dispatch('SAMPLES', { from: number, name })
97
+ return res.end('trigger')
98
+ })
99
+ )
100
+
101
+ adapterProvider.server.post(
102
+ '/v1/blacklist',
103
+ handleCtx(async (bot, req, res) => {
104
+ const { number, intent } = req.body
105
+ if (intent === 'remove') bot.blacklist.remove(number)
106
+ if (intent === 'add') bot.blacklist.add(number)
107
+
108
+ res.writeHead(200, { 'Content-Type': 'application/json' })
109
+ return res.end(JSON.stringify({ status: 'ok', number, intent }))
110
+ })
111
+ )
112
+
113
+ httpServer(+PORT)
114
+ }
115
+
116
+ main()
@@ -31,7 +31,8 @@ COPY --from=builder /app .
31
31
  RUN corepack enable && corepack prepare pnpm@latest --activate
32
32
  ENV PNPM_HOME=/usr/local/bin
33
33
 
34
- RUN npm cache clean --force && pnpm install --frozen-lockfile --production --ignore-scripts \
34
+ RUN npm cache clean --force && pnpm install --production --ignore-scripts \
35
+ && addgroup -g 1001 -S nodejs && adduser -S -u 1001 nodejs \
35
36
  && rm -rf $PNPM_HOME/.npm $PNPM_HOME/.node-gyp
36
37
 
37
38
  CMD ["npm", "start"]
@@ -0,0 +1,10 @@
1
+ dist/*
2
+ node_modules
3
+ .env
4
+
5
+ *_sessions
6
+ *tokens
7
+ .wwebjs*
8
+
9
+ *.log
10
+ *qr.png
@@ -6,7 +6,7 @@
6
6
  "type": "module",
7
7
  "scripts": {
8
8
  "lint": "eslint . --no-ignore",
9
- "dev": "node --no-warnings --watch-path=./src ./src/app.js",
9
+ "dev": "npm run lint && node --no-warnings --watch-path=./src ./src/app.js",
10
10
  "start": "node ./src/app.js"
11
11
  },
12
12
  "keywords": [],
@@ -1,115 +1,115 @@
1
- import { join } from 'path'
2
- import { createBot, createProvider, createFlow, addKeyword, utils } from '@builderbot/bot'
1
+ import { join } from 'path'
2
+ import { createBot, createProvider, createFlow, addKeyword, utils } from '@builderbot/bot'
3
3
  import { MemoryDB as Database } from '@builderbot/bot'
4
4
  import { BaileysProvider as Provider } from '@builderbot/provider-baileys'
5
-
6
- const PORT = process.env.PORT ?? 3008
7
-
8
- const discordFlow = addKeyword('doc').addAnswer(
9
- ['You can see the documentation here', '📄 https://builderbot.app/docs \n', 'Do you want to continue? *yes*'].join(
10
- '\n'
11
- ),
12
- { capture: true },
13
- async (ctx, { gotoFlow, flowDynamic }) => {
14
- if (ctx.body.toLocaleLowerCase().includes('yes')) {
15
- return gotoFlow(registerFlow)
16
- }
17
- await flowDynamic('Thanks!')
18
- return
19
- }
20
- )
21
-
22
- const welcomeFlow = addKeyword(['hi', 'hello', 'hola'])
23
- .addAnswer(`🙌 Hello welcome to this *Chatbot*`)
24
- .addAnswer(
25
- [
26
- 'I share with you the following links of interest about the project',
27
- '👉 *doc* to view the documentation',
28
- ].join('\n'),
29
- { delay: 800, capture: true },
30
- async (ctx, { fallBack }) => {
31
- if (!ctx.body.toLocaleLowerCase().includes('doc')) {
32
- return fallBack('You should type *doc*')
33
- }
34
- return
35
- },
36
- [discordFlow]
37
- )
38
-
39
- const registerFlow = addKeyword(utils.setEvent('REGISTER_FLOW'))
40
- .addAnswer(`What is your name?`, { capture: true }, async (ctx, { state }) => {
41
- await state.update({ name: ctx.body })
42
- })
43
- .addAnswer('What is your age?', { capture: true }, async (ctx, { state }) => {
44
- await state.update({ age: ctx.body })
45
- })
46
- .addAction(async (_, { flowDynamic, state }) => {
47
- await flowDynamic(`${state.get('name')}, thanks for your information!: Your age: ${state.get('age')}`)
48
- })
49
-
50
- const fullSamplesFlow = addKeyword(['samples', utils.setEvent('SAMPLES')])
51
- .addAnswer(`💪 I'll send you a lot files...`)
52
- .addAnswer(`Send image from Local`, { media: join(process.cwd(), 'assets', 'sample.png') })
53
- .addAnswer(`Send video from URL`, {
54
- media: 'https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYTJ0ZGdjd2syeXAwMjQ4aWdkcW04OWlqcXI3Ynh1ODkwZ25zZWZ1dCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/LCohAb657pSdHv0Q5h/giphy.mp4',
55
- })
56
- .addAnswer(`Send audio from URL`, { media: 'https://cdn.freesound.org/previews/728/728142_11861866-lq.mp3' })
57
- .addAnswer(`Send file from URL`, {
58
- media: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
59
- })
60
-
61
- const main = async () => {
62
- const adapterFlow = createFlow([welcomeFlow, registerFlow, fullSamplesFlow])
5
+
6
+ const PORT = process.env.PORT ?? 3008
7
+
8
+ const discordFlow = addKeyword('doc').addAnswer(
9
+ ['You can see the documentation here', '📄 https://builderbot.app/docs \n', 'Do you want to continue? *yes*'].join(
10
+ '\n'
11
+ ),
12
+ { capture: true },
13
+ async (ctx, { gotoFlow, flowDynamic }) => {
14
+ if (ctx.body.toLocaleLowerCase().includes('yes')) {
15
+ return gotoFlow(registerFlow)
16
+ }
17
+ await flowDynamic('Thanks!')
18
+ return
19
+ }
20
+ )
21
+
22
+ const welcomeFlow = addKeyword(['hi', 'hello', 'hola'])
23
+ .addAnswer(`🙌 Hello welcome to this *Chatbot*`)
24
+ .addAnswer(
25
+ [
26
+ 'I share with you the following links of interest about the project',
27
+ '👉 *doc* to view the documentation',
28
+ ].join('\n'),
29
+ { delay: 800, capture: true },
30
+ async (ctx, { fallBack }) => {
31
+ if (!ctx.body.toLocaleLowerCase().includes('doc')) {
32
+ return fallBack('You should type *doc*')
33
+ }
34
+ return
35
+ },
36
+ [discordFlow]
37
+ )
38
+
39
+ const registerFlow = addKeyword(utils.setEvent('REGISTER_FLOW'))
40
+ .addAnswer(`What is your name?`, { capture: true }, async (ctx, { state }) => {
41
+ await state.update({ name: ctx.body })
42
+ })
43
+ .addAnswer('What is your age?', { capture: true }, async (ctx, { state }) => {
44
+ await state.update({ age: ctx.body })
45
+ })
46
+ .addAction(async (_, { flowDynamic, state }) => {
47
+ await flowDynamic(`${state.get('name')}, thanks for your information!: Your age: ${state.get('age')}`)
48
+ })
49
+
50
+ const fullSamplesFlow = addKeyword(['samples', utils.setEvent('SAMPLES')])
51
+ .addAnswer(`💪 I'll send you a lot files...`)
52
+ .addAnswer(`Send image from Local`, { media: join(process.cwd(), 'assets', 'sample.png') })
53
+ .addAnswer(`Send video from URL`, {
54
+ media: 'https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYTJ0ZGdjd2syeXAwMjQ4aWdkcW04OWlqcXI3Ynh1ODkwZ25zZWZ1dCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/LCohAb657pSdHv0Q5h/giphy.mp4',
55
+ })
56
+ .addAnswer(`Send audio from URL`, { media: 'https://cdn.freesound.org/previews/728/728142_11861866-lq.mp3' })
57
+ .addAnswer(`Send file from URL`, {
58
+ media: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
59
+ })
60
+
61
+ const main = async () => {
62
+ const adapterFlow = createFlow([welcomeFlow, registerFlow, fullSamplesFlow])
63
63
 
64
- const adapterProvider = createProvider(Provider)
64
+ const adapterProvider = createProvider(Provider)
65
65
  const adapterDB = new Database()
66
-
67
- const { handleCtx, httpServer } = await createBot({
68
- flow: adapterFlow,
69
- provider: adapterProvider,
70
- database: adapterDB,
71
- })
72
-
73
- adapterProvider.server.post(
74
- '/v1/messages',
75
- handleCtx(async (bot, req, res) => {
76
- const { number, message, urlMedia } = req.body
77
- await bot.sendMessage(number, message, { media: urlMedia ?? null })
78
- return res.end('sended')
79
- })
80
- )
81
-
82
- adapterProvider.server.post(
83
- '/v1/register',
84
- handleCtx(async (bot, req, res) => {
85
- const { number, name } = req.body
86
- await bot.dispatch('REGISTER_FLOW', { from: number, name })
87
- return res.end('trigger')
88
- })
89
- )
90
-
91
- adapterProvider.server.post(
92
- '/v1/samples',
93
- handleCtx(async (bot, req, res) => {
94
- const { number, name } = req.body
95
- await bot.dispatch('SAMPLES', { from: number, name })
96
- return res.end('trigger')
97
- })
98
- )
99
-
100
- adapterProvider.server.post(
101
- '/v1/blacklist',
102
- handleCtx(async (bot, req, res) => {
103
- const { number, intent } = req.body
104
- if (intent === 'remove') bot.blacklist.remove(number)
105
- if (intent === 'add') bot.blacklist.add(number)
106
-
107
- res.writeHead(200, { 'Content-Type': 'application/json' })
108
- return res.end(JSON.stringify({ status: 'ok', number, intent }))
109
- })
110
- )
111
-
112
- httpServer(+PORT)
113
- }
114
-
115
- main()
66
+
67
+ const { handleCtx, httpServer } = await createBot({
68
+ flow: adapterFlow,
69
+ provider: adapterProvider,
70
+ database: adapterDB,
71
+ })
72
+
73
+ adapterProvider.server.post(
74
+ '/v1/messages',
75
+ handleCtx(async (bot, req, res) => {
76
+ const { number, message, urlMedia } = req.body
77
+ await bot.sendMessage(number, message, { media: urlMedia ?? null })
78
+ return res.end('sended')
79
+ })
80
+ )
81
+
82
+ adapterProvider.server.post(
83
+ '/v1/register',
84
+ handleCtx(async (bot, req, res) => {
85
+ const { number, name } = req.body
86
+ await bot.dispatch('REGISTER_FLOW', { from: number, name })
87
+ return res.end('trigger')
88
+ })
89
+ )
90
+
91
+ adapterProvider.server.post(
92
+ '/v1/samples',
93
+ handleCtx(async (bot, req, res) => {
94
+ const { number, name } = req.body
95
+ await bot.dispatch('SAMPLES', { from: number, name })
96
+ return res.end('trigger')
97
+ })
98
+ )
99
+
100
+ adapterProvider.server.post(
101
+ '/v1/blacklist',
102
+ handleCtx(async (bot, req, res) => {
103
+ const { number, intent } = req.body
104
+ if (intent === 'remove') bot.blacklist.remove(number)
105
+ if (intent === 'add') bot.blacklist.add(number)
106
+
107
+ res.writeHead(200, { 'Content-Type': 'application/json' })
108
+ return res.end(JSON.stringify({ status: 'ok', number, intent }))
109
+ })
110
+ )
111
+
112
+ httpServer(+PORT)
113
+ }
114
+
115
+ main()
@@ -31,7 +31,8 @@ COPY --from=builder /app .
31
31
  RUN corepack enable && corepack prepare pnpm@latest --activate
32
32
  ENV PNPM_HOME=/usr/local/bin
33
33
 
34
- RUN npm cache clean --force && pnpm install --frozen-lockfile --production --ignore-scripts \
34
+ RUN npm cache clean --force && pnpm install --production --ignore-scripts \
35
+ && addgroup -g 1001 -S nodejs && adduser -S -u 1001 nodejs \
35
36
  && rm -rf $PNPM_HOME/.npm $PNPM_HOME/.node-gyp
36
37
 
37
38
  CMD ["npm", "start"]
@@ -0,0 +1,10 @@
1
+ dist/*
2
+ node_modules
3
+ .env
4
+
5
+ *_sessions
6
+ *tokens
7
+ .wwebjs*
8
+
9
+ *.log
10
+ *qr.png
@@ -6,7 +6,7 @@
6
6
  "type": "module",
7
7
  "scripts": {
8
8
  "lint": "eslint . --no-ignore",
9
- "dev": "node --no-warnings --watch-path=./src ./src/app.js",
9
+ "dev": "npm run lint && node --no-warnings --watch-path=./src ./src/app.js",
10
10
  "start": "node ./src/app.js"
11
11
  },
12
12
  "keywords": [],