create-builderbot 1.0.27-alpha.0 → 1.0.29-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 (101) hide show
  1. package/dist/starters/apps/base-js-baileys-json/src/app.js +115 -115
  2. package/dist/starters/apps/base-js-baileys-memory/src/app.js +114 -114
  3. package/dist/starters/apps/base-js-baileys-mongo/src/app.js +117 -117
  4. package/dist/starters/apps/base-js-baileys-mysql/src/app.js +119 -119
  5. package/dist/starters/apps/base-js-baileys-postgres/src/app.js +120 -120
  6. package/dist/starters/apps/base-js-meta-json/src/app.js +119 -119
  7. package/dist/starters/apps/base-js-meta-memory/src/app.js +118 -118
  8. package/dist/starters/apps/base-js-meta-mongo/src/app.js +121 -121
  9. package/dist/starters/apps/base-js-meta-mysql/src/app.js +123 -123
  10. package/dist/starters/apps/base-js-meta-postgres/src/app.js +124 -124
  11. package/dist/starters/apps/base-js-twilio-json/src/app.js +118 -118
  12. package/dist/starters/apps/base-js-twilio-memory/src/app.js +117 -117
  13. package/dist/starters/apps/base-js-twilio-mongo/src/app.js +120 -120
  14. package/dist/starters/apps/base-js-twilio-mysql/src/app.js +122 -122
  15. package/dist/starters/apps/base-js-twilio-postgres/src/app.js +123 -123
  16. package/dist/starters/apps/base-js-venom-json/src/app.js +115 -115
  17. package/dist/starters/apps/base-js-venom-memory/src/app.js +114 -114
  18. package/dist/starters/apps/base-js-venom-mongo/src/app.js +117 -117
  19. package/dist/starters/apps/base-js-venom-mysql/src/app.js +119 -119
  20. package/dist/starters/apps/base-js-venom-postgres/src/app.js +120 -120
  21. package/dist/starters/apps/base-js-wppconnect-json/src/app.js +115 -115
  22. package/dist/starters/apps/base-js-wppconnect-memory/src/app.js +114 -114
  23. package/dist/starters/apps/base-js-wppconnect-mongo/src/app.js +117 -117
  24. package/dist/starters/apps/base-js-wppconnect-mysql/src/app.js +119 -119
  25. package/dist/starters/apps/base-js-wppconnect-postgres/src/app.js +120 -120
  26. package/dist/starters/apps/base-ts-baileys-json/package.json +29 -29
  27. package/dist/starters/apps/base-ts-baileys-json/rollup.config.js +11 -11
  28. package/dist/starters/apps/base-ts-baileys-json/src/app.ts +116 -116
  29. package/dist/starters/apps/base-ts-baileys-memory/package.json +28 -28
  30. package/dist/starters/apps/base-ts-baileys-memory/rollup.config.js +11 -11
  31. package/dist/starters/apps/base-ts-baileys-memory/src/app.ts +115 -115
  32. package/dist/starters/apps/base-ts-baileys-mongo/package.json +29 -29
  33. package/dist/starters/apps/base-ts-baileys-mongo/rollup.config.js +11 -11
  34. package/dist/starters/apps/base-ts-baileys-mongo/src/app.ts +118 -118
  35. package/dist/starters/apps/base-ts-baileys-mysql/package.json +29 -29
  36. package/dist/starters/apps/base-ts-baileys-mysql/rollup.config.js +11 -11
  37. package/dist/starters/apps/base-ts-baileys-mysql/src/app.ts +120 -120
  38. package/dist/starters/apps/base-ts-baileys-postgres/package.json +29 -29
  39. package/dist/starters/apps/base-ts-baileys-postgres/rollup.config.js +11 -11
  40. package/dist/starters/apps/base-ts-baileys-postgres/src/app.ts +121 -121
  41. package/dist/starters/apps/base-ts-meta-json/package.json +29 -29
  42. package/dist/starters/apps/base-ts-meta-json/rollup.config.js +11 -11
  43. package/dist/starters/apps/base-ts-meta-json/src/app.ts +120 -120
  44. package/dist/starters/apps/base-ts-meta-memory/package.json +28 -28
  45. package/dist/starters/apps/base-ts-meta-memory/rollup.config.js +11 -11
  46. package/dist/starters/apps/base-ts-meta-memory/src/app.ts +119 -119
  47. package/dist/starters/apps/base-ts-meta-mongo/package.json +29 -29
  48. package/dist/starters/apps/base-ts-meta-mongo/rollup.config.js +11 -11
  49. package/dist/starters/apps/base-ts-meta-mongo/src/app.ts +122 -122
  50. package/dist/starters/apps/base-ts-meta-mysql/package.json +29 -29
  51. package/dist/starters/apps/base-ts-meta-mysql/rollup.config.js +11 -11
  52. package/dist/starters/apps/base-ts-meta-mysql/src/app.ts +124 -124
  53. package/dist/starters/apps/base-ts-meta-postgres/package.json +29 -29
  54. package/dist/starters/apps/base-ts-meta-postgres/rollup.config.js +11 -11
  55. package/dist/starters/apps/base-ts-meta-postgres/src/app.ts +125 -125
  56. package/dist/starters/apps/base-ts-twilio-json/package.json +29 -29
  57. package/dist/starters/apps/base-ts-twilio-json/rollup.config.js +11 -11
  58. package/dist/starters/apps/base-ts-twilio-json/src/app.ts +119 -119
  59. package/dist/starters/apps/base-ts-twilio-memory/package.json +28 -28
  60. package/dist/starters/apps/base-ts-twilio-memory/rollup.config.js +11 -11
  61. package/dist/starters/apps/base-ts-twilio-memory/src/app.ts +118 -118
  62. package/dist/starters/apps/base-ts-twilio-mongo/package.json +29 -29
  63. package/dist/starters/apps/base-ts-twilio-mongo/rollup.config.js +11 -11
  64. package/dist/starters/apps/base-ts-twilio-mongo/src/app.ts +121 -121
  65. package/dist/starters/apps/base-ts-twilio-mysql/package.json +29 -29
  66. package/dist/starters/apps/base-ts-twilio-mysql/rollup.config.js +11 -11
  67. package/dist/starters/apps/base-ts-twilio-mysql/src/app.ts +123 -123
  68. package/dist/starters/apps/base-ts-twilio-postgres/package.json +29 -29
  69. package/dist/starters/apps/base-ts-twilio-postgres/rollup.config.js +11 -11
  70. package/dist/starters/apps/base-ts-twilio-postgres/src/app.ts +124 -124
  71. package/dist/starters/apps/base-ts-venom-json/package.json +29 -29
  72. package/dist/starters/apps/base-ts-venom-json/rollup.config.js +11 -11
  73. package/dist/starters/apps/base-ts-venom-json/src/app.ts +116 -116
  74. package/dist/starters/apps/base-ts-venom-memory/package.json +28 -28
  75. package/dist/starters/apps/base-ts-venom-memory/rollup.config.js +11 -11
  76. package/dist/starters/apps/base-ts-venom-memory/src/app.ts +115 -115
  77. package/dist/starters/apps/base-ts-venom-mongo/package.json +29 -29
  78. package/dist/starters/apps/base-ts-venom-mongo/rollup.config.js +11 -11
  79. package/dist/starters/apps/base-ts-venom-mongo/src/app.ts +118 -118
  80. package/dist/starters/apps/base-ts-venom-mysql/package.json +29 -29
  81. package/dist/starters/apps/base-ts-venom-mysql/rollup.config.js +11 -11
  82. package/dist/starters/apps/base-ts-venom-mysql/src/app.ts +120 -120
  83. package/dist/starters/apps/base-ts-venom-postgres/package.json +29 -29
  84. package/dist/starters/apps/base-ts-venom-postgres/rollup.config.js +11 -11
  85. package/dist/starters/apps/base-ts-venom-postgres/src/app.ts +121 -121
  86. package/dist/starters/apps/base-ts-wppconnect-json/package.json +29 -29
  87. package/dist/starters/apps/base-ts-wppconnect-json/rollup.config.js +11 -11
  88. package/dist/starters/apps/base-ts-wppconnect-json/src/app.ts +116 -116
  89. package/dist/starters/apps/base-ts-wppconnect-memory/package.json +28 -28
  90. package/dist/starters/apps/base-ts-wppconnect-memory/rollup.config.js +11 -11
  91. package/dist/starters/apps/base-ts-wppconnect-memory/src/app.ts +115 -115
  92. package/dist/starters/apps/base-ts-wppconnect-mongo/package.json +29 -29
  93. package/dist/starters/apps/base-ts-wppconnect-mongo/rollup.config.js +11 -11
  94. package/dist/starters/apps/base-ts-wppconnect-mongo/src/app.ts +118 -118
  95. package/dist/starters/apps/base-ts-wppconnect-mysql/package.json +29 -29
  96. package/dist/starters/apps/base-ts-wppconnect-mysql/rollup.config.js +11 -11
  97. package/dist/starters/apps/base-ts-wppconnect-mysql/src/app.ts +120 -120
  98. package/dist/starters/apps/base-ts-wppconnect-postgres/package.json +29 -29
  99. package/dist/starters/apps/base-ts-wppconnect-postgres/rollup.config.js +11 -11
  100. package/dist/starters/apps/base-ts-wppconnect-postgres/src/app.ts +121 -121
  101. package/package.json +3 -3
@@ -1,115 +1,115 @@
1
- import { createBot, createProvider, createFlow, addKeyword, utils } from '@builderbot/bot'
2
- import { JsonFileDB as Database } from '@builderbot/database-json'
3
- import { BaileysProvider as Provider } from '@builderbot/provider-baileys'
4
-
5
- const PORT = process.env.PORT ?? 3008
6
-
7
- const discordFlow = addKeyword('doc').addAnswer(
8
- ['You can see the documentation here', '📄 https://builderbot.app/docs \n', 'Do you want to continue? *yes*'].join(
9
- '\n'
10
- ),
11
- { capture: true },
12
- async (ctx, { gotoFlow, flowDynamic }) => {
13
- if (ctx.body.toLocaleLowerCase().includes('yes')) {
14
- return gotoFlow(registerFlow)
15
- }
16
- await flowDynamic('Thanks!')
17
- return
18
- }
19
- )
20
-
21
- const welcomeFlow = addKeyword(['hi', 'hello', 'hola'])
22
- .addAnswer(`🙌 Hello welcome to this *Chatbot*`)
23
- .addAnswer(
24
- [
25
- 'I share with you the following links of interest about the project',
26
- '👉 *doc* to view the documentation',
27
- ].join('\n'),
28
- { delay: 800, capture: true },
29
- async (ctx, { fallBack }) => {
30
- if (!ctx.body.toLocaleLowerCase().includes('doc')) {
31
- return fallBack('You should type *doc*')
32
- }
33
- return
34
- },
35
- [discordFlow]
36
- )
37
-
38
- const registerFlow = addKeyword(utils.setEvent('REGISTER_FLOW'))
39
- .addAnswer(`What is your name?`, { capture: true }, async (ctx, { state }) => {
40
- await state.update({ name: ctx.body })
41
- })
42
- .addAnswer('What is your age?', { capture: true }, async (ctx, { state }) => {
43
- await state.update({ age: ctx.body })
44
- })
45
- .addAction(async (_, { flowDynamic, state }) => {
46
- await flowDynamic(`${state.get('name')}, thanks for your information!: Your age: ${state.get('age')}`)
47
- })
48
-
49
- const fullSamplesFlow = addKeyword(['samples', utils.setEvent('SAMPLES')])
50
- .addAnswer(`💪 I'll send you a lot files...`)
51
- .addAnswer(`Send image from Local`, { media: join(process.cwd(), 'assets', 'sample.png') })
52
- .addAnswer(`Send video from URL`, {
53
- media: 'https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYTJ0ZGdjd2syeXAwMjQ4aWdkcW04OWlqcXI3Ynh1ODkwZ25zZWZ1dCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/LCohAb657pSdHv0Q5h/giphy.mp4',
54
- })
55
- .addAnswer(`Send audio from URL`, { media: 'https://cdn.freesound.org/previews/728/728142_11861866-lq.mp3' })
56
- .addAnswer(`Send file from URL`, {
57
- media: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
58
- })
59
-
60
- const main = async () => {
61
- const adapterFlow = createFlow([welcomeFlow, registerFlow, fullSamplesFlow])
62
-
63
- const adapterProvider = createProvider(Provider)
64
-
65
- const adapterDB = new Database({ filename: 'db.json' })
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()
1
+ import { createBot, createProvider, createFlow, addKeyword, utils } from '@builderbot/bot'
2
+ import { JsonFileDB as Database } from '@builderbot/database-json'
3
+ import { BaileysProvider as Provider } from '@builderbot/provider-baileys'
4
+
5
+ const PORT = process.env.PORT ?? 3008
6
+
7
+ const discordFlow = addKeyword('doc').addAnswer(
8
+ ['You can see the documentation here', '📄 https://builderbot.app/docs \n', 'Do you want to continue? *yes*'].join(
9
+ '\n'
10
+ ),
11
+ { capture: true },
12
+ async (ctx, { gotoFlow, flowDynamic }) => {
13
+ if (ctx.body.toLocaleLowerCase().includes('yes')) {
14
+ return gotoFlow(registerFlow)
15
+ }
16
+ await flowDynamic('Thanks!')
17
+ return
18
+ }
19
+ )
20
+
21
+ const welcomeFlow = addKeyword(['hi', 'hello', 'hola'])
22
+ .addAnswer(`🙌 Hello welcome to this *Chatbot*`)
23
+ .addAnswer(
24
+ [
25
+ 'I share with you the following links of interest about the project',
26
+ '👉 *doc* to view the documentation',
27
+ ].join('\n'),
28
+ { delay: 800, capture: true },
29
+ async (ctx, { fallBack }) => {
30
+ if (!ctx.body.toLocaleLowerCase().includes('doc')) {
31
+ return fallBack('You should type *doc*')
32
+ }
33
+ return
34
+ },
35
+ [discordFlow]
36
+ )
37
+
38
+ const registerFlow = addKeyword(utils.setEvent('REGISTER_FLOW'))
39
+ .addAnswer(`What is your name?`, { capture: true }, async (ctx, { state }) => {
40
+ await state.update({ name: ctx.body })
41
+ })
42
+ .addAnswer('What is your age?', { capture: true }, async (ctx, { state }) => {
43
+ await state.update({ age: ctx.body })
44
+ })
45
+ .addAction(async (_, { flowDynamic, state }) => {
46
+ await flowDynamic(`${state.get('name')}, thanks for your information!: Your age: ${state.get('age')}`)
47
+ })
48
+
49
+ const fullSamplesFlow = addKeyword(['samples', utils.setEvent('SAMPLES')])
50
+ .addAnswer(`💪 I'll send you a lot files...`)
51
+ .addAnswer(`Send image from Local`, { media: join(process.cwd(), 'assets', 'sample.png') })
52
+ .addAnswer(`Send video from URL`, {
53
+ media: 'https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYTJ0ZGdjd2syeXAwMjQ4aWdkcW04OWlqcXI3Ynh1ODkwZ25zZWZ1dCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/LCohAb657pSdHv0Q5h/giphy.mp4',
54
+ })
55
+ .addAnswer(`Send audio from URL`, { media: 'https://cdn.freesound.org/previews/728/728142_11861866-lq.mp3' })
56
+ .addAnswer(`Send file from URL`, {
57
+ media: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
58
+ })
59
+
60
+ const main = async () => {
61
+ const adapterFlow = createFlow([welcomeFlow, registerFlow, fullSamplesFlow])
62
+
63
+ const adapterProvider = createProvider(Provider)
64
+
65
+ const adapterDB = new Database({ filename: 'db.json' })
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()
@@ -1,114 +1,114 @@
1
- import { createBot, createProvider, createFlow, addKeyword, utils } from '@builderbot/bot'
2
- import { MemoryDB as Database } from '@builderbot/bot'
3
- import { BaileysProvider as Provider } from '@builderbot/provider-baileys'
4
-
5
- const PORT = process.env.PORT ?? 3008
6
-
7
- const discordFlow = addKeyword('doc').addAnswer(
8
- ['You can see the documentation here', '📄 https://builderbot.app/docs \n', 'Do you want to continue? *yes*'].join(
9
- '\n'
10
- ),
11
- { capture: true },
12
- async (ctx, { gotoFlow, flowDynamic }) => {
13
- if (ctx.body.toLocaleLowerCase().includes('yes')) {
14
- return gotoFlow(registerFlow)
15
- }
16
- await flowDynamic('Thanks!')
17
- return
18
- }
19
- )
20
-
21
- const welcomeFlow = addKeyword(['hi', 'hello', 'hola'])
22
- .addAnswer(`🙌 Hello welcome to this *Chatbot*`)
23
- .addAnswer(
24
- [
25
- 'I share with you the following links of interest about the project',
26
- '👉 *doc* to view the documentation',
27
- ].join('\n'),
28
- { delay: 800, capture: true },
29
- async (ctx, { fallBack }) => {
30
- if (!ctx.body.toLocaleLowerCase().includes('doc')) {
31
- return fallBack('You should type *doc*')
32
- }
33
- return
34
- },
35
- [discordFlow]
36
- )
37
-
38
- const registerFlow = addKeyword(utils.setEvent('REGISTER_FLOW'))
39
- .addAnswer(`What is your name?`, { capture: true }, async (ctx, { state }) => {
40
- await state.update({ name: ctx.body })
41
- })
42
- .addAnswer('What is your age?', { capture: true }, async (ctx, { state }) => {
43
- await state.update({ age: ctx.body })
44
- })
45
- .addAction(async (_, { flowDynamic, state }) => {
46
- await flowDynamic(`${state.get('name')}, thanks for your information!: Your age: ${state.get('age')}`)
47
- })
48
-
49
- const fullSamplesFlow = addKeyword(['samples', utils.setEvent('SAMPLES')])
50
- .addAnswer(`💪 I'll send you a lot files...`)
51
- .addAnswer(`Send image from Local`, { media: join(process.cwd(), 'assets', 'sample.png') })
52
- .addAnswer(`Send video from URL`, {
53
- media: 'https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYTJ0ZGdjd2syeXAwMjQ4aWdkcW04OWlqcXI3Ynh1ODkwZ25zZWZ1dCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/LCohAb657pSdHv0Q5h/giphy.mp4',
54
- })
55
- .addAnswer(`Send audio from URL`, { media: 'https://cdn.freesound.org/previews/728/728142_11861866-lq.mp3' })
56
- .addAnswer(`Send file from URL`, {
57
- media: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
58
- })
59
-
60
- const main = async () => {
61
- const adapterFlow = createFlow([welcomeFlow, registerFlow, fullSamplesFlow])
62
-
63
- const adapterProvider = createProvider(Provider)
64
- const adapterDB = new Database()
65
-
66
- const { handleCtx, httpServer } = await createBot({
67
- flow: adapterFlow,
68
- provider: adapterProvider,
69
- database: adapterDB,
70
- })
71
-
72
- adapterProvider.server.post(
73
- '/v1/messages',
74
- handleCtx(async (bot, req, res) => {
75
- const { number, message, urlMedia } = req.body
76
- await bot.sendMessage(number, message, { media: urlMedia ?? null })
77
- return res.end('sended')
78
- })
79
- )
80
-
81
- adapterProvider.server.post(
82
- '/v1/register',
83
- handleCtx(async (bot, req, res) => {
84
- const { number, name } = req.body
85
- await bot.dispatch('REGISTER_FLOW', { from: number, name })
86
- return res.end('trigger')
87
- })
88
- )
89
-
90
- adapterProvider.server.post(
91
- '/v1/samples',
92
- handleCtx(async (bot, req, res) => {
93
- const { number, name } = req.body
94
- await bot.dispatch('SAMPLES', { from: number, name })
95
- return res.end('trigger')
96
- })
97
- )
98
-
99
- adapterProvider.server.post(
100
- '/v1/blacklist',
101
- handleCtx(async (bot, req, res) => {
102
- const { number, intent } = req.body
103
- if (intent === 'remove') bot.blacklist.remove(number)
104
- if (intent === 'add') bot.blacklist.add(number)
105
-
106
- res.writeHead(200, { 'Content-Type': 'application/json' })
107
- return res.end(JSON.stringify({ status: 'ok', number, intent }))
108
- })
109
- )
110
-
111
- httpServer(+PORT)
112
- }
113
-
114
- main()
1
+ import { createBot, createProvider, createFlow, addKeyword, utils } from '@builderbot/bot'
2
+ import { MemoryDB as Database } from '@builderbot/bot'
3
+ import { BaileysProvider as Provider } from '@builderbot/provider-baileys'
4
+
5
+ const PORT = process.env.PORT ?? 3008
6
+
7
+ const discordFlow = addKeyword('doc').addAnswer(
8
+ ['You can see the documentation here', '📄 https://builderbot.app/docs \n', 'Do you want to continue? *yes*'].join(
9
+ '\n'
10
+ ),
11
+ { capture: true },
12
+ async (ctx, { gotoFlow, flowDynamic }) => {
13
+ if (ctx.body.toLocaleLowerCase().includes('yes')) {
14
+ return gotoFlow(registerFlow)
15
+ }
16
+ await flowDynamic('Thanks!')
17
+ return
18
+ }
19
+ )
20
+
21
+ const welcomeFlow = addKeyword(['hi', 'hello', 'hola'])
22
+ .addAnswer(`🙌 Hello welcome to this *Chatbot*`)
23
+ .addAnswer(
24
+ [
25
+ 'I share with you the following links of interest about the project',
26
+ '👉 *doc* to view the documentation',
27
+ ].join('\n'),
28
+ { delay: 800, capture: true },
29
+ async (ctx, { fallBack }) => {
30
+ if (!ctx.body.toLocaleLowerCase().includes('doc')) {
31
+ return fallBack('You should type *doc*')
32
+ }
33
+ return
34
+ },
35
+ [discordFlow]
36
+ )
37
+
38
+ const registerFlow = addKeyword(utils.setEvent('REGISTER_FLOW'))
39
+ .addAnswer(`What is your name?`, { capture: true }, async (ctx, { state }) => {
40
+ await state.update({ name: ctx.body })
41
+ })
42
+ .addAnswer('What is your age?', { capture: true }, async (ctx, { state }) => {
43
+ await state.update({ age: ctx.body })
44
+ })
45
+ .addAction(async (_, { flowDynamic, state }) => {
46
+ await flowDynamic(`${state.get('name')}, thanks for your information!: Your age: ${state.get('age')}`)
47
+ })
48
+
49
+ const fullSamplesFlow = addKeyword(['samples', utils.setEvent('SAMPLES')])
50
+ .addAnswer(`💪 I'll send you a lot files...`)
51
+ .addAnswer(`Send image from Local`, { media: join(process.cwd(), 'assets', 'sample.png') })
52
+ .addAnswer(`Send video from URL`, {
53
+ media: 'https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYTJ0ZGdjd2syeXAwMjQ4aWdkcW04OWlqcXI3Ynh1ODkwZ25zZWZ1dCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/LCohAb657pSdHv0Q5h/giphy.mp4',
54
+ })
55
+ .addAnswer(`Send audio from URL`, { media: 'https://cdn.freesound.org/previews/728/728142_11861866-lq.mp3' })
56
+ .addAnswer(`Send file from URL`, {
57
+ media: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
58
+ })
59
+
60
+ const main = async () => {
61
+ const adapterFlow = createFlow([welcomeFlow, registerFlow, fullSamplesFlow])
62
+
63
+ const adapterProvider = createProvider(Provider)
64
+ const adapterDB = new Database()
65
+
66
+ const { handleCtx, httpServer } = await createBot({
67
+ flow: adapterFlow,
68
+ provider: adapterProvider,
69
+ database: adapterDB,
70
+ })
71
+
72
+ adapterProvider.server.post(
73
+ '/v1/messages',
74
+ handleCtx(async (bot, req, res) => {
75
+ const { number, message, urlMedia } = req.body
76
+ await bot.sendMessage(number, message, { media: urlMedia ?? null })
77
+ return res.end('sended')
78
+ })
79
+ )
80
+
81
+ adapterProvider.server.post(
82
+ '/v1/register',
83
+ handleCtx(async (bot, req, res) => {
84
+ const { number, name } = req.body
85
+ await bot.dispatch('REGISTER_FLOW', { from: number, name })
86
+ return res.end('trigger')
87
+ })
88
+ )
89
+
90
+ adapterProvider.server.post(
91
+ '/v1/samples',
92
+ handleCtx(async (bot, req, res) => {
93
+ const { number, name } = req.body
94
+ await bot.dispatch('SAMPLES', { from: number, name })
95
+ return res.end('trigger')
96
+ })
97
+ )
98
+
99
+ adapterProvider.server.post(
100
+ '/v1/blacklist',
101
+ handleCtx(async (bot, req, res) => {
102
+ const { number, intent } = req.body
103
+ if (intent === 'remove') bot.blacklist.remove(number)
104
+ if (intent === 'add') bot.blacklist.add(number)
105
+
106
+ res.writeHead(200, { 'Content-Type': 'application/json' })
107
+ return res.end(JSON.stringify({ status: 'ok', number, intent }))
108
+ })
109
+ )
110
+
111
+ httpServer(+PORT)
112
+ }
113
+
114
+ main()