create-builderbot 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 (176) hide show
  1. package/dist/starters/apps/base-js-baileys-json/Dockerfile +2 -1
  2. package/dist/starters/apps/base-js-baileys-json/_gitignore +10 -0
  3. package/dist/starters/apps/base-js-baileys-json/package.json +1 -1
  4. package/dist/starters/apps/base-js-baileys-json/src/app.js +111 -111
  5. package/dist/starters/apps/base-js-baileys-memory/Dockerfile +2 -1
  6. package/dist/starters/apps/base-js-baileys-memory/_gitignore +10 -0
  7. package/dist/starters/apps/base-js-baileys-memory/package.json +1 -1
  8. package/dist/starters/apps/base-js-baileys-memory/src/app.js +111 -111
  9. package/dist/starters/apps/base-js-baileys-mongo/Dockerfile +2 -1
  10. package/dist/starters/apps/base-js-baileys-mongo/_gitignore +10 -0
  11. package/dist/starters/apps/base-js-baileys-mongo/package.json +1 -1
  12. package/dist/starters/apps/base-js-baileys-mongo/src/app.js +111 -111
  13. package/dist/starters/apps/base-js-baileys-mysql/Dockerfile +2 -1
  14. package/dist/starters/apps/base-js-baileys-mysql/_gitignore +10 -0
  15. package/dist/starters/apps/base-js-baileys-mysql/package.json +1 -1
  16. package/dist/starters/apps/base-js-baileys-mysql/src/app.js +111 -111
  17. package/dist/starters/apps/base-js-baileys-postgres/Dockerfile +2 -1
  18. package/dist/starters/apps/base-js-baileys-postgres/_gitignore +10 -0
  19. package/dist/starters/apps/base-js-baileys-postgres/package.json +1 -1
  20. package/dist/starters/apps/base-js-baileys-postgres/src/app.js +111 -111
  21. package/dist/starters/apps/base-js-meta-json/Dockerfile +2 -1
  22. package/dist/starters/apps/base-js-meta-json/_gitignore +10 -0
  23. package/dist/starters/apps/base-js-meta-json/package.json +1 -1
  24. package/dist/starters/apps/base-js-meta-json/src/app.js +111 -111
  25. package/dist/starters/apps/base-js-meta-memory/Dockerfile +2 -1
  26. package/dist/starters/apps/base-js-meta-memory/_gitignore +10 -0
  27. package/dist/starters/apps/base-js-meta-memory/package.json +1 -1
  28. package/dist/starters/apps/base-js-meta-memory/src/app.js +111 -111
  29. package/dist/starters/apps/base-js-meta-mongo/Dockerfile +2 -1
  30. package/dist/starters/apps/base-js-meta-mongo/_gitignore +10 -0
  31. package/dist/starters/apps/base-js-meta-mongo/package.json +1 -1
  32. package/dist/starters/apps/base-js-meta-mongo/src/app.js +111 -111
  33. package/dist/starters/apps/base-js-meta-mysql/Dockerfile +2 -1
  34. package/dist/starters/apps/base-js-meta-mysql/_gitignore +10 -0
  35. package/dist/starters/apps/base-js-meta-mysql/package.json +1 -1
  36. package/dist/starters/apps/base-js-meta-mysql/src/app.js +111 -111
  37. package/dist/starters/apps/base-js-meta-postgres/Dockerfile +2 -1
  38. package/dist/starters/apps/base-js-meta-postgres/_gitignore +10 -0
  39. package/dist/starters/apps/base-js-meta-postgres/package.json +1 -1
  40. package/dist/starters/apps/base-js-meta-postgres/src/app.js +111 -111
  41. package/dist/starters/apps/base-js-twilio-json/Dockerfile +2 -1
  42. package/dist/starters/apps/base-js-twilio-json/_gitignore +10 -0
  43. package/dist/starters/apps/base-js-twilio-json/package.json +1 -1
  44. package/dist/starters/apps/base-js-twilio-json/src/app.js +111 -111
  45. package/dist/starters/apps/base-js-twilio-memory/Dockerfile +2 -1
  46. package/dist/starters/apps/base-js-twilio-memory/_gitignore +10 -0
  47. package/dist/starters/apps/base-js-twilio-memory/package.json +1 -1
  48. package/dist/starters/apps/base-js-twilio-memory/src/app.js +111 -111
  49. package/dist/starters/apps/base-js-twilio-mongo/Dockerfile +2 -1
  50. package/dist/starters/apps/base-js-twilio-mongo/_gitignore +10 -0
  51. package/dist/starters/apps/base-js-twilio-mongo/package.json +1 -1
  52. package/dist/starters/apps/base-js-twilio-mongo/src/app.js +111 -111
  53. package/dist/starters/apps/base-js-twilio-mysql/Dockerfile +2 -1
  54. package/dist/starters/apps/base-js-twilio-mysql/_gitignore +10 -0
  55. package/dist/starters/apps/base-js-twilio-mysql/package.json +1 -1
  56. package/dist/starters/apps/base-js-twilio-mysql/src/app.js +111 -111
  57. package/dist/starters/apps/base-js-twilio-postgres/Dockerfile +2 -1
  58. package/dist/starters/apps/base-js-twilio-postgres/_gitignore +10 -0
  59. package/dist/starters/apps/base-js-twilio-postgres/package.json +1 -1
  60. package/dist/starters/apps/base-js-twilio-postgres/src/app.js +111 -111
  61. package/dist/starters/apps/base-js-venom-json/Dockerfile +2 -1
  62. package/dist/starters/apps/base-js-venom-json/_gitignore +10 -0
  63. package/dist/starters/apps/base-js-venom-json/package.json +1 -1
  64. package/dist/starters/apps/base-js-venom-json/src/app.js +111 -111
  65. package/dist/starters/apps/base-js-venom-memory/Dockerfile +2 -1
  66. package/dist/starters/apps/base-js-venom-memory/_gitignore +10 -0
  67. package/dist/starters/apps/base-js-venom-memory/package.json +1 -1
  68. package/dist/starters/apps/base-js-venom-memory/src/app.js +111 -111
  69. package/dist/starters/apps/base-js-venom-mongo/Dockerfile +2 -1
  70. package/dist/starters/apps/base-js-venom-mongo/_gitignore +10 -0
  71. package/dist/starters/apps/base-js-venom-mongo/package.json +1 -1
  72. package/dist/starters/apps/base-js-venom-mongo/src/app.js +111 -111
  73. package/dist/starters/apps/base-js-venom-mysql/Dockerfile +2 -1
  74. package/dist/starters/apps/base-js-venom-mysql/_gitignore +10 -0
  75. package/dist/starters/apps/base-js-venom-mysql/package.json +1 -1
  76. package/dist/starters/apps/base-js-venom-mysql/src/app.js +111 -111
  77. package/dist/starters/apps/base-js-venom-postgres/Dockerfile +2 -1
  78. package/dist/starters/apps/base-js-venom-postgres/_gitignore +10 -0
  79. package/dist/starters/apps/base-js-venom-postgres/package.json +1 -1
  80. package/dist/starters/apps/base-js-venom-postgres/src/app.js +111 -111
  81. package/dist/starters/apps/base-js-wppconnect-json/Dockerfile +2 -1
  82. package/dist/starters/apps/base-js-wppconnect-json/_gitignore +10 -0
  83. package/dist/starters/apps/base-js-wppconnect-json/package.json +1 -1
  84. package/dist/starters/apps/base-js-wppconnect-json/src/app.js +111 -111
  85. package/dist/starters/apps/base-js-wppconnect-memory/Dockerfile +2 -1
  86. package/dist/starters/apps/base-js-wppconnect-memory/_gitignore +10 -0
  87. package/dist/starters/apps/base-js-wppconnect-memory/package.json +1 -1
  88. package/dist/starters/apps/base-js-wppconnect-memory/src/app.js +111 -111
  89. package/dist/starters/apps/base-js-wppconnect-mongo/Dockerfile +2 -1
  90. package/dist/starters/apps/base-js-wppconnect-mongo/_gitignore +10 -0
  91. package/dist/starters/apps/base-js-wppconnect-mongo/package.json +1 -1
  92. package/dist/starters/apps/base-js-wppconnect-mongo/src/app.js +111 -111
  93. package/dist/starters/apps/base-js-wppconnect-mysql/Dockerfile +2 -1
  94. package/dist/starters/apps/base-js-wppconnect-mysql/_gitignore +10 -0
  95. package/dist/starters/apps/base-js-wppconnect-mysql/package.json +1 -1
  96. package/dist/starters/apps/base-js-wppconnect-mysql/src/app.js +111 -111
  97. package/dist/starters/apps/base-js-wppconnect-postgres/Dockerfile +2 -1
  98. package/dist/starters/apps/base-js-wppconnect-postgres/_gitignore +10 -0
  99. package/dist/starters/apps/base-js-wppconnect-postgres/package.json +1 -1
  100. package/dist/starters/apps/base-js-wppconnect-postgres/src/app.js +111 -111
  101. package/dist/starters/apps/base-ts-baileys-json/Dockerfile +2 -1
  102. package/dist/starters/apps/base-ts-baileys-json/_gitignore +10 -0
  103. package/dist/starters/apps/base-ts-baileys-json/package.json +5 -3
  104. package/dist/starters/apps/base-ts-baileys-memory/Dockerfile +2 -1
  105. package/dist/starters/apps/base-ts-baileys-memory/_gitignore +10 -0
  106. package/dist/starters/apps/base-ts-baileys-memory/package.json +5 -3
  107. package/dist/starters/apps/base-ts-baileys-mongo/Dockerfile +2 -1
  108. package/dist/starters/apps/base-ts-baileys-mongo/_gitignore +10 -0
  109. package/dist/starters/apps/base-ts-baileys-mongo/package.json +5 -3
  110. package/dist/starters/apps/base-ts-baileys-mysql/Dockerfile +2 -1
  111. package/dist/starters/apps/base-ts-baileys-mysql/_gitignore +10 -0
  112. package/dist/starters/apps/base-ts-baileys-mysql/package.json +5 -3
  113. package/dist/starters/apps/base-ts-baileys-postgres/Dockerfile +2 -1
  114. package/dist/starters/apps/base-ts-baileys-postgres/_gitignore +10 -0
  115. package/dist/starters/apps/base-ts-baileys-postgres/package.json +5 -3
  116. package/dist/starters/apps/base-ts-meta-json/Dockerfile +2 -1
  117. package/dist/starters/apps/base-ts-meta-json/_gitignore +10 -0
  118. package/dist/starters/apps/base-ts-meta-json/package.json +5 -3
  119. package/dist/starters/apps/base-ts-meta-memory/Dockerfile +2 -1
  120. package/dist/starters/apps/base-ts-meta-memory/_gitignore +10 -0
  121. package/dist/starters/apps/base-ts-meta-memory/package.json +5 -3
  122. package/dist/starters/apps/base-ts-meta-mongo/Dockerfile +2 -1
  123. package/dist/starters/apps/base-ts-meta-mongo/_gitignore +10 -0
  124. package/dist/starters/apps/base-ts-meta-mongo/package.json +5 -3
  125. package/dist/starters/apps/base-ts-meta-mysql/Dockerfile +2 -1
  126. package/dist/starters/apps/base-ts-meta-mysql/_gitignore +10 -0
  127. package/dist/starters/apps/base-ts-meta-mysql/package.json +5 -3
  128. package/dist/starters/apps/base-ts-meta-postgres/Dockerfile +2 -1
  129. package/dist/starters/apps/base-ts-meta-postgres/_gitignore +10 -0
  130. package/dist/starters/apps/base-ts-meta-postgres/package.json +5 -3
  131. package/dist/starters/apps/base-ts-twilio-json/Dockerfile +2 -1
  132. package/dist/starters/apps/base-ts-twilio-json/_gitignore +10 -0
  133. package/dist/starters/apps/base-ts-twilio-json/package.json +5 -3
  134. package/dist/starters/apps/base-ts-twilio-memory/Dockerfile +2 -1
  135. package/dist/starters/apps/base-ts-twilio-memory/_gitignore +10 -0
  136. package/dist/starters/apps/base-ts-twilio-memory/package.json +5 -3
  137. package/dist/starters/apps/base-ts-twilio-mongo/Dockerfile +2 -1
  138. package/dist/starters/apps/base-ts-twilio-mongo/_gitignore +10 -0
  139. package/dist/starters/apps/base-ts-twilio-mongo/package.json +5 -3
  140. package/dist/starters/apps/base-ts-twilio-mysql/Dockerfile +2 -1
  141. package/dist/starters/apps/base-ts-twilio-mysql/_gitignore +10 -0
  142. package/dist/starters/apps/base-ts-twilio-mysql/package.json +5 -3
  143. package/dist/starters/apps/base-ts-twilio-postgres/Dockerfile +2 -1
  144. package/dist/starters/apps/base-ts-twilio-postgres/_gitignore +10 -0
  145. package/dist/starters/apps/base-ts-twilio-postgres/package.json +5 -3
  146. package/dist/starters/apps/base-ts-venom-json/Dockerfile +2 -1
  147. package/dist/starters/apps/base-ts-venom-json/_gitignore +10 -0
  148. package/dist/starters/apps/base-ts-venom-json/package.json +5 -3
  149. package/dist/starters/apps/base-ts-venom-memory/Dockerfile +2 -1
  150. package/dist/starters/apps/base-ts-venom-memory/_gitignore +10 -0
  151. package/dist/starters/apps/base-ts-venom-memory/package.json +5 -3
  152. package/dist/starters/apps/base-ts-venom-mongo/Dockerfile +2 -1
  153. package/dist/starters/apps/base-ts-venom-mongo/_gitignore +10 -0
  154. package/dist/starters/apps/base-ts-venom-mongo/package.json +5 -3
  155. package/dist/starters/apps/base-ts-venom-mysql/Dockerfile +2 -1
  156. package/dist/starters/apps/base-ts-venom-mysql/_gitignore +10 -0
  157. package/dist/starters/apps/base-ts-venom-mysql/package.json +5 -3
  158. package/dist/starters/apps/base-ts-venom-postgres/Dockerfile +2 -1
  159. package/dist/starters/apps/base-ts-venom-postgres/_gitignore +10 -0
  160. package/dist/starters/apps/base-ts-venom-postgres/package.json +5 -3
  161. package/dist/starters/apps/base-ts-wppconnect-json/Dockerfile +2 -1
  162. package/dist/starters/apps/base-ts-wppconnect-json/_gitignore +10 -0
  163. package/dist/starters/apps/base-ts-wppconnect-json/package.json +5 -3
  164. package/dist/starters/apps/base-ts-wppconnect-memory/Dockerfile +2 -1
  165. package/dist/starters/apps/base-ts-wppconnect-memory/_gitignore +10 -0
  166. package/dist/starters/apps/base-ts-wppconnect-memory/package.json +5 -3
  167. package/dist/starters/apps/base-ts-wppconnect-mongo/Dockerfile +2 -1
  168. package/dist/starters/apps/base-ts-wppconnect-mongo/_gitignore +10 -0
  169. package/dist/starters/apps/base-ts-wppconnect-mongo/package.json +5 -3
  170. package/dist/starters/apps/base-ts-wppconnect-mysql/Dockerfile +2 -1
  171. package/dist/starters/apps/base-ts-wppconnect-mysql/_gitignore +10 -0
  172. package/dist/starters/apps/base-ts-wppconnect-mysql/package.json +5 -3
  173. package/dist/starters/apps/base-ts-wppconnect-postgres/Dockerfile +2 -1
  174. package/dist/starters/apps/base-ts-wppconnect-postgres/_gitignore +10 -0
  175. package/dist/starters/apps/base-ts-wppconnect-postgres/package.json +5 -3
  176. package/package.json +3 -3
@@ -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": [],