create-builderbot 1.0.28-alpha.0 → 1.0.30-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 (226) hide show
  1. package/dist/starters/apps/base-js-baileys-json/Dockerfile +24 -15
  2. package/dist/starters/apps/base-js-baileys-json/README.md +1 -1
  3. package/dist/starters/apps/base-js-baileys-json/package.json +2 -3
  4. package/dist/starters/apps/base-js-baileys-json/src/app.js +111 -110
  5. package/dist/starters/apps/base-js-baileys-memory/Dockerfile +24 -15
  6. package/dist/starters/apps/base-js-baileys-memory/README.md +1 -1
  7. package/dist/starters/apps/base-js-baileys-memory/package.json +2 -3
  8. package/dist/starters/apps/base-js-baileys-memory/src/app.js +111 -110
  9. package/dist/starters/apps/base-js-baileys-mongo/Dockerfile +24 -15
  10. package/dist/starters/apps/base-js-baileys-mongo/README.md +1 -1
  11. package/dist/starters/apps/base-js-baileys-mongo/package.json +2 -3
  12. package/dist/starters/apps/base-js-baileys-mongo/src/app.js +111 -110
  13. package/dist/starters/apps/base-js-baileys-mysql/Dockerfile +24 -15
  14. package/dist/starters/apps/base-js-baileys-mysql/README.md +1 -1
  15. package/dist/starters/apps/base-js-baileys-mysql/package.json +2 -3
  16. package/dist/starters/apps/base-js-baileys-mysql/src/app.js +111 -110
  17. package/dist/starters/apps/base-js-baileys-postgres/Dockerfile +24 -15
  18. package/dist/starters/apps/base-js-baileys-postgres/README.md +1 -1
  19. package/dist/starters/apps/base-js-baileys-postgres/package.json +2 -3
  20. package/dist/starters/apps/base-js-baileys-postgres/src/app.js +111 -110
  21. package/dist/starters/apps/base-js-meta-json/Dockerfile +24 -15
  22. package/dist/starters/apps/base-js-meta-json/README.md +1 -1
  23. package/dist/starters/apps/base-js-meta-json/package.json +2 -3
  24. package/dist/starters/apps/base-js-meta-json/src/app.js +111 -110
  25. package/dist/starters/apps/base-js-meta-memory/Dockerfile +24 -15
  26. package/dist/starters/apps/base-js-meta-memory/README.md +1 -1
  27. package/dist/starters/apps/base-js-meta-memory/package.json +2 -3
  28. package/dist/starters/apps/base-js-meta-memory/src/app.js +111 -110
  29. package/dist/starters/apps/base-js-meta-mongo/Dockerfile +24 -15
  30. package/dist/starters/apps/base-js-meta-mongo/README.md +1 -1
  31. package/dist/starters/apps/base-js-meta-mongo/package.json +2 -3
  32. package/dist/starters/apps/base-js-meta-mongo/src/app.js +111 -110
  33. package/dist/starters/apps/base-js-meta-mysql/Dockerfile +24 -15
  34. package/dist/starters/apps/base-js-meta-mysql/README.md +1 -1
  35. package/dist/starters/apps/base-js-meta-mysql/package.json +2 -3
  36. package/dist/starters/apps/base-js-meta-mysql/src/app.js +111 -110
  37. package/dist/starters/apps/base-js-meta-postgres/Dockerfile +24 -15
  38. package/dist/starters/apps/base-js-meta-postgres/README.md +1 -1
  39. package/dist/starters/apps/base-js-meta-postgres/package.json +2 -3
  40. package/dist/starters/apps/base-js-meta-postgres/src/app.js +111 -110
  41. package/dist/starters/apps/base-js-twilio-json/Dockerfile +24 -15
  42. package/dist/starters/apps/base-js-twilio-json/README.md +1 -1
  43. package/dist/starters/apps/base-js-twilio-json/package.json +2 -3
  44. package/dist/starters/apps/base-js-twilio-json/src/app.js +111 -110
  45. package/dist/starters/apps/base-js-twilio-memory/Dockerfile +24 -15
  46. package/dist/starters/apps/base-js-twilio-memory/README.md +1 -1
  47. package/dist/starters/apps/base-js-twilio-memory/package.json +2 -3
  48. package/dist/starters/apps/base-js-twilio-memory/src/app.js +111 -110
  49. package/dist/starters/apps/base-js-twilio-mongo/Dockerfile +24 -15
  50. package/dist/starters/apps/base-js-twilio-mongo/README.md +1 -1
  51. package/dist/starters/apps/base-js-twilio-mongo/package.json +2 -3
  52. package/dist/starters/apps/base-js-twilio-mongo/src/app.js +111 -110
  53. package/dist/starters/apps/base-js-twilio-mysql/Dockerfile +24 -15
  54. package/dist/starters/apps/base-js-twilio-mysql/README.md +1 -1
  55. package/dist/starters/apps/base-js-twilio-mysql/package.json +2 -3
  56. package/dist/starters/apps/base-js-twilio-mysql/src/app.js +111 -110
  57. package/dist/starters/apps/base-js-twilio-postgres/Dockerfile +24 -15
  58. package/dist/starters/apps/base-js-twilio-postgres/README.md +1 -1
  59. package/dist/starters/apps/base-js-twilio-postgres/package.json +2 -3
  60. package/dist/starters/apps/base-js-twilio-postgres/src/app.js +111 -110
  61. package/dist/starters/apps/base-js-venom-json/Dockerfile +24 -15
  62. package/dist/starters/apps/base-js-venom-json/README.md +1 -1
  63. package/dist/starters/apps/base-js-venom-json/package.json +2 -3
  64. package/dist/starters/apps/base-js-venom-json/src/app.js +111 -110
  65. package/dist/starters/apps/base-js-venom-memory/Dockerfile +24 -15
  66. package/dist/starters/apps/base-js-venom-memory/README.md +1 -1
  67. package/dist/starters/apps/base-js-venom-memory/package.json +2 -3
  68. package/dist/starters/apps/base-js-venom-memory/src/app.js +111 -110
  69. package/dist/starters/apps/base-js-venom-mongo/Dockerfile +24 -15
  70. package/dist/starters/apps/base-js-venom-mongo/README.md +1 -1
  71. package/dist/starters/apps/base-js-venom-mongo/package.json +2 -3
  72. package/dist/starters/apps/base-js-venom-mongo/src/app.js +111 -110
  73. package/dist/starters/apps/base-js-venom-mysql/Dockerfile +24 -15
  74. package/dist/starters/apps/base-js-venom-mysql/README.md +1 -1
  75. package/dist/starters/apps/base-js-venom-mysql/package.json +2 -3
  76. package/dist/starters/apps/base-js-venom-mysql/src/app.js +111 -110
  77. package/dist/starters/apps/base-js-venom-postgres/Dockerfile +24 -15
  78. package/dist/starters/apps/base-js-venom-postgres/README.md +1 -1
  79. package/dist/starters/apps/base-js-venom-postgres/package.json +2 -3
  80. package/dist/starters/apps/base-js-venom-postgres/src/app.js +111 -110
  81. package/dist/starters/apps/base-js-wppconnect-json/Dockerfile +24 -15
  82. package/dist/starters/apps/base-js-wppconnect-json/README.md +1 -1
  83. package/dist/starters/apps/base-js-wppconnect-json/package.json +2 -3
  84. package/dist/starters/apps/base-js-wppconnect-json/src/app.js +111 -110
  85. package/dist/starters/apps/base-js-wppconnect-memory/Dockerfile +24 -15
  86. package/dist/starters/apps/base-js-wppconnect-memory/README.md +1 -1
  87. package/dist/starters/apps/base-js-wppconnect-memory/package.json +2 -3
  88. package/dist/starters/apps/base-js-wppconnect-memory/src/app.js +111 -110
  89. package/dist/starters/apps/base-js-wppconnect-mongo/Dockerfile +24 -15
  90. package/dist/starters/apps/base-js-wppconnect-mongo/README.md +1 -1
  91. package/dist/starters/apps/base-js-wppconnect-mongo/package.json +2 -3
  92. package/dist/starters/apps/base-js-wppconnect-mongo/src/app.js +111 -110
  93. package/dist/starters/apps/base-js-wppconnect-mysql/Dockerfile +24 -15
  94. package/dist/starters/apps/base-js-wppconnect-mysql/README.md +1 -1
  95. package/dist/starters/apps/base-js-wppconnect-mysql/package.json +2 -3
  96. package/dist/starters/apps/base-js-wppconnect-mysql/src/app.js +111 -110
  97. package/dist/starters/apps/base-js-wppconnect-postgres/Dockerfile +24 -15
  98. package/dist/starters/apps/base-js-wppconnect-postgres/README.md +1 -1
  99. package/dist/starters/apps/base-js-wppconnect-postgres/package.json +2 -3
  100. package/dist/starters/apps/base-js-wppconnect-postgres/src/app.js +111 -110
  101. package/dist/starters/apps/base-ts-baileys-json/Dockerfile +26 -15
  102. package/dist/starters/apps/base-ts-baileys-json/README.md +1 -1
  103. package/dist/starters/apps/base-ts-baileys-json/package.json +1 -1
  104. package/dist/starters/apps/base-ts-baileys-json/rollup.config.js +11 -11
  105. package/dist/starters/apps/base-ts-baileys-json/src/app.ts +111 -111
  106. package/dist/starters/apps/base-ts-baileys-memory/Dockerfile +26 -15
  107. package/dist/starters/apps/base-ts-baileys-memory/README.md +1 -1
  108. package/dist/starters/apps/base-ts-baileys-memory/package.json +1 -1
  109. package/dist/starters/apps/base-ts-baileys-memory/rollup.config.js +11 -11
  110. package/dist/starters/apps/base-ts-baileys-memory/src/app.ts +111 -111
  111. package/dist/starters/apps/base-ts-baileys-mongo/Dockerfile +26 -15
  112. package/dist/starters/apps/base-ts-baileys-mongo/README.md +1 -1
  113. package/dist/starters/apps/base-ts-baileys-mongo/package.json +1 -1
  114. package/dist/starters/apps/base-ts-baileys-mongo/rollup.config.js +11 -11
  115. package/dist/starters/apps/base-ts-baileys-mongo/src/app.ts +111 -111
  116. package/dist/starters/apps/base-ts-baileys-mysql/Dockerfile +26 -15
  117. package/dist/starters/apps/base-ts-baileys-mysql/README.md +1 -1
  118. package/dist/starters/apps/base-ts-baileys-mysql/package.json +1 -1
  119. package/dist/starters/apps/base-ts-baileys-mysql/rollup.config.js +11 -11
  120. package/dist/starters/apps/base-ts-baileys-mysql/src/app.ts +111 -111
  121. package/dist/starters/apps/base-ts-baileys-postgres/Dockerfile +26 -15
  122. package/dist/starters/apps/base-ts-baileys-postgres/README.md +1 -1
  123. package/dist/starters/apps/base-ts-baileys-postgres/package.json +1 -1
  124. package/dist/starters/apps/base-ts-baileys-postgres/rollup.config.js +11 -11
  125. package/dist/starters/apps/base-ts-baileys-postgres/src/app.ts +111 -111
  126. package/dist/starters/apps/base-ts-meta-json/Dockerfile +26 -15
  127. package/dist/starters/apps/base-ts-meta-json/README.md +1 -1
  128. package/dist/starters/apps/base-ts-meta-json/package.json +1 -1
  129. package/dist/starters/apps/base-ts-meta-json/rollup.config.js +11 -11
  130. package/dist/starters/apps/base-ts-meta-json/src/app.ts +111 -111
  131. package/dist/starters/apps/base-ts-meta-memory/Dockerfile +26 -15
  132. package/dist/starters/apps/base-ts-meta-memory/README.md +1 -1
  133. package/dist/starters/apps/base-ts-meta-memory/package.json +1 -1
  134. package/dist/starters/apps/base-ts-meta-memory/rollup.config.js +11 -11
  135. package/dist/starters/apps/base-ts-meta-memory/src/app.ts +111 -111
  136. package/dist/starters/apps/base-ts-meta-mongo/Dockerfile +26 -15
  137. package/dist/starters/apps/base-ts-meta-mongo/README.md +1 -1
  138. package/dist/starters/apps/base-ts-meta-mongo/package.json +1 -1
  139. package/dist/starters/apps/base-ts-meta-mongo/rollup.config.js +11 -11
  140. package/dist/starters/apps/base-ts-meta-mongo/src/app.ts +111 -111
  141. package/dist/starters/apps/base-ts-meta-mysql/Dockerfile +26 -15
  142. package/dist/starters/apps/base-ts-meta-mysql/README.md +1 -1
  143. package/dist/starters/apps/base-ts-meta-mysql/package.json +1 -1
  144. package/dist/starters/apps/base-ts-meta-mysql/rollup.config.js +11 -11
  145. package/dist/starters/apps/base-ts-meta-mysql/src/app.ts +111 -111
  146. package/dist/starters/apps/base-ts-meta-postgres/Dockerfile +26 -15
  147. package/dist/starters/apps/base-ts-meta-postgres/README.md +1 -1
  148. package/dist/starters/apps/base-ts-meta-postgres/package.json +1 -1
  149. package/dist/starters/apps/base-ts-meta-postgres/rollup.config.js +11 -11
  150. package/dist/starters/apps/base-ts-meta-postgres/src/app.ts +111 -111
  151. package/dist/starters/apps/base-ts-twilio-json/Dockerfile +26 -15
  152. package/dist/starters/apps/base-ts-twilio-json/README.md +1 -1
  153. package/dist/starters/apps/base-ts-twilio-json/package.json +1 -1
  154. package/dist/starters/apps/base-ts-twilio-json/rollup.config.js +11 -11
  155. package/dist/starters/apps/base-ts-twilio-json/src/app.ts +111 -111
  156. package/dist/starters/apps/base-ts-twilio-memory/Dockerfile +26 -15
  157. package/dist/starters/apps/base-ts-twilio-memory/README.md +1 -1
  158. package/dist/starters/apps/base-ts-twilio-memory/package.json +1 -1
  159. package/dist/starters/apps/base-ts-twilio-memory/rollup.config.js +11 -11
  160. package/dist/starters/apps/base-ts-twilio-memory/src/app.ts +111 -111
  161. package/dist/starters/apps/base-ts-twilio-mongo/Dockerfile +26 -15
  162. package/dist/starters/apps/base-ts-twilio-mongo/README.md +1 -1
  163. package/dist/starters/apps/base-ts-twilio-mongo/package.json +1 -1
  164. package/dist/starters/apps/base-ts-twilio-mongo/rollup.config.js +11 -11
  165. package/dist/starters/apps/base-ts-twilio-mongo/src/app.ts +111 -111
  166. package/dist/starters/apps/base-ts-twilio-mysql/Dockerfile +26 -15
  167. package/dist/starters/apps/base-ts-twilio-mysql/README.md +1 -1
  168. package/dist/starters/apps/base-ts-twilio-mysql/package.json +1 -1
  169. package/dist/starters/apps/base-ts-twilio-mysql/rollup.config.js +11 -11
  170. package/dist/starters/apps/base-ts-twilio-mysql/src/app.ts +111 -111
  171. package/dist/starters/apps/base-ts-twilio-postgres/Dockerfile +26 -15
  172. package/dist/starters/apps/base-ts-twilio-postgres/README.md +1 -1
  173. package/dist/starters/apps/base-ts-twilio-postgres/package.json +1 -1
  174. package/dist/starters/apps/base-ts-twilio-postgres/rollup.config.js +11 -11
  175. package/dist/starters/apps/base-ts-twilio-postgres/src/app.ts +111 -111
  176. package/dist/starters/apps/base-ts-venom-json/Dockerfile +26 -15
  177. package/dist/starters/apps/base-ts-venom-json/README.md +1 -1
  178. package/dist/starters/apps/base-ts-venom-json/package.json +1 -1
  179. package/dist/starters/apps/base-ts-venom-json/rollup.config.js +11 -11
  180. package/dist/starters/apps/base-ts-venom-json/src/app.ts +111 -111
  181. package/dist/starters/apps/base-ts-venom-memory/Dockerfile +26 -15
  182. package/dist/starters/apps/base-ts-venom-memory/README.md +1 -1
  183. package/dist/starters/apps/base-ts-venom-memory/package.json +1 -1
  184. package/dist/starters/apps/base-ts-venom-memory/rollup.config.js +11 -11
  185. package/dist/starters/apps/base-ts-venom-memory/src/app.ts +111 -111
  186. package/dist/starters/apps/base-ts-venom-mongo/Dockerfile +26 -15
  187. package/dist/starters/apps/base-ts-venom-mongo/README.md +1 -1
  188. package/dist/starters/apps/base-ts-venom-mongo/package.json +1 -1
  189. package/dist/starters/apps/base-ts-venom-mongo/rollup.config.js +11 -11
  190. package/dist/starters/apps/base-ts-venom-mongo/src/app.ts +111 -111
  191. package/dist/starters/apps/base-ts-venom-mysql/Dockerfile +26 -15
  192. package/dist/starters/apps/base-ts-venom-mysql/README.md +1 -1
  193. package/dist/starters/apps/base-ts-venom-mysql/package.json +1 -1
  194. package/dist/starters/apps/base-ts-venom-mysql/rollup.config.js +11 -11
  195. package/dist/starters/apps/base-ts-venom-mysql/src/app.ts +111 -111
  196. package/dist/starters/apps/base-ts-venom-postgres/Dockerfile +26 -15
  197. package/dist/starters/apps/base-ts-venom-postgres/README.md +1 -1
  198. package/dist/starters/apps/base-ts-venom-postgres/package.json +1 -1
  199. package/dist/starters/apps/base-ts-venom-postgres/rollup.config.js +11 -11
  200. package/dist/starters/apps/base-ts-venom-postgres/src/app.ts +111 -111
  201. package/dist/starters/apps/base-ts-wppconnect-json/Dockerfile +26 -15
  202. package/dist/starters/apps/base-ts-wppconnect-json/README.md +1 -1
  203. package/dist/starters/apps/base-ts-wppconnect-json/package.json +1 -1
  204. package/dist/starters/apps/base-ts-wppconnect-json/rollup.config.js +11 -11
  205. package/dist/starters/apps/base-ts-wppconnect-json/src/app.ts +111 -111
  206. package/dist/starters/apps/base-ts-wppconnect-memory/Dockerfile +26 -15
  207. package/dist/starters/apps/base-ts-wppconnect-memory/README.md +1 -1
  208. package/dist/starters/apps/base-ts-wppconnect-memory/package.json +1 -1
  209. package/dist/starters/apps/base-ts-wppconnect-memory/rollup.config.js +11 -11
  210. package/dist/starters/apps/base-ts-wppconnect-memory/src/app.ts +111 -111
  211. package/dist/starters/apps/base-ts-wppconnect-mongo/Dockerfile +26 -15
  212. package/dist/starters/apps/base-ts-wppconnect-mongo/README.md +1 -1
  213. package/dist/starters/apps/base-ts-wppconnect-mongo/package.json +1 -1
  214. package/dist/starters/apps/base-ts-wppconnect-mongo/rollup.config.js +11 -11
  215. package/dist/starters/apps/base-ts-wppconnect-mongo/src/app.ts +111 -111
  216. package/dist/starters/apps/base-ts-wppconnect-mysql/Dockerfile +26 -15
  217. package/dist/starters/apps/base-ts-wppconnect-mysql/README.md +1 -1
  218. package/dist/starters/apps/base-ts-wppconnect-mysql/package.json +1 -1
  219. package/dist/starters/apps/base-ts-wppconnect-mysql/rollup.config.js +11 -11
  220. package/dist/starters/apps/base-ts-wppconnect-mysql/src/app.ts +111 -111
  221. package/dist/starters/apps/base-ts-wppconnect-postgres/Dockerfile +26 -15
  222. package/dist/starters/apps/base-ts-wppconnect-postgres/README.md +1 -1
  223. package/dist/starters/apps/base-ts-wppconnect-postgres/package.json +1 -1
  224. package/dist/starters/apps/base-ts-wppconnect-postgres/rollup.config.js +11 -11
  225. package/dist/starters/apps/base-ts-wppconnect-postgres/src/app.ts +111 -111
  226. package/package.json +3 -3
@@ -1,28 +1,37 @@
1
+ # Image size ~ 330MB
1
2
  FROM node:21-alpine3.18 as builder
2
3
 
4
+ WORKDIR /app
5
+
3
6
  RUN corepack enable && corepack prepare pnpm@latest --activate
4
7
  ENV PNPM_HOME=/usr/local/bin
5
8
 
6
- WORKDIR /app
7
-
8
- COPY package*.json pnpm-lock.yaml ./
9
+ COPY . .
9
10
 
10
- RUN apk add --no-cache \
11
- git
11
+ COPY package*.json *-lock.yaml ./
12
12
 
13
- # RUN pnpm install pm2 -g
13
+ RUN apk add --no-cache --virtual .gyp \
14
+ python3 \
15
+ make \
16
+ g++ \
17
+ && apk add --no-cache git \
18
+ && pnpm install \
19
+ && apk del .gyp
14
20
 
15
- COPY . .
16
- RUN pnpm i
21
+ FROM node:21-alpine3.18 as deploy
17
22
 
18
- FROM builder as deploy
23
+ WORKDIR /app
19
24
 
20
- ARG RAILWAY_STATIC_URL
21
- ARG PUBLIC_URL
22
25
  ARG PORT
23
- COPY --from=builder /app/src ./src
24
- COPY --from=builder /app/package.json /app/pnpm-lock.yaml ./
26
+ ENV PORT $PORT
27
+ EXPOSE $PORT
28
+
29
+ COPY --from=builder /app .
30
+
31
+ RUN corepack enable && corepack prepare pnpm@latest --activate
32
+ ENV PNPM_HOME=/usr/local/bin
33
+
34
+ RUN npm cache clean --force && pnpm install --frozen-lockfile --production --ignore-scripts \
35
+ && rm -rf $PNPM_HOME/.npm $PNPM_HOME/.node-gyp
25
36
 
26
- RUN pnpm install --frozen-lockfile --production
27
- # CMD ["pm2-runtime", "start", "./src/app.js", "--cron", "0 */12 * * *"]
28
37
  CMD ["npm", "start"]
@@ -1,7 +1,7 @@
1
1
  <p align="center">
2
2
  <a href="https://builderbot.vercel.app/">
3
3
  <picture>
4
- <img src="https://i.imgur.com/OPl026Z.png" height="80">
4
+ <img src="https://builderbot.vercel.app/assets/thumbnail-vector.png" height="80">
5
5
  </picture>
6
6
  <h2 align="center">BuilderBot</h2>
7
7
  </a>
@@ -6,7 +6,7 @@
6
6
  "type": "module",
7
7
  "scripts": {
8
8
  "lint": "eslint . --no-ignore",
9
- "dev": "npm run lint && nodemon ./src/app.js",
9
+ "dev": "node --no-warnings --watch-path=./src ./src/app.js",
10
10
  "start": "node ./src/app.js"
11
11
  },
12
12
  "keywords": [],
@@ -17,8 +17,7 @@
17
17
  },
18
18
  "devDependencies": {
19
19
  "eslint-plugin-builderbot": "latest",
20
- "eslint": "^8.57.0",
21
- "nodemon": "^3.1.0"
20
+ "eslint": "^8.57.0"
22
21
  },
23
22
  "author": "",
24
23
  "license": "ISC"
@@ -1,115 +1,116 @@
1
- import { createBot, createProvider, createFlow, addKeyword, utils } from '@builderbot/bot'
1
+ import { join } from 'path'
2
+ import { createBot, createProvider, createFlow, addKeyword, utils } from '@builderbot/bot'
2
3
  import { JsonFileDB as Database } from '@builderbot/database-json'
3
4
  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])
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])
62
63
 
63
- const adapterProvider = createProvider(Provider)
64
+ const adapterProvider = createProvider(Provider)
64
65
 
65
66
  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()
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()
@@ -1,28 +1,37 @@
1
+ # Image size ~ 330MB
1
2
  FROM node:21-alpine3.18 as builder
2
3
 
4
+ WORKDIR /app
5
+
3
6
  RUN corepack enable && corepack prepare pnpm@latest --activate
4
7
  ENV PNPM_HOME=/usr/local/bin
5
8
 
6
- WORKDIR /app
7
-
8
- COPY package*.json pnpm-lock.yaml ./
9
+ COPY . .
9
10
 
10
- RUN apk add --no-cache \
11
- git
11
+ COPY package*.json *-lock.yaml ./
12
12
 
13
- # RUN pnpm install pm2 -g
13
+ RUN apk add --no-cache --virtual .gyp \
14
+ python3 \
15
+ make \
16
+ g++ \
17
+ && apk add --no-cache git \
18
+ && pnpm install \
19
+ && apk del .gyp
14
20
 
15
- COPY . .
16
- RUN pnpm i
21
+ FROM node:21-alpine3.18 as deploy
17
22
 
18
- FROM builder as deploy
23
+ WORKDIR /app
19
24
 
20
- ARG RAILWAY_STATIC_URL
21
- ARG PUBLIC_URL
22
25
  ARG PORT
23
- COPY --from=builder /app/src ./src
24
- COPY --from=builder /app/package.json /app/pnpm-lock.yaml ./
26
+ ENV PORT $PORT
27
+ EXPOSE $PORT
28
+
29
+ COPY --from=builder /app .
30
+
31
+ RUN corepack enable && corepack prepare pnpm@latest --activate
32
+ ENV PNPM_HOME=/usr/local/bin
33
+
34
+ RUN npm cache clean --force && pnpm install --frozen-lockfile --production --ignore-scripts \
35
+ && rm -rf $PNPM_HOME/.npm $PNPM_HOME/.node-gyp
25
36
 
26
- RUN pnpm install --frozen-lockfile --production
27
- # CMD ["pm2-runtime", "start", "./src/app.js", "--cron", "0 */12 * * *"]
28
37
  CMD ["npm", "start"]
@@ -1,7 +1,7 @@
1
1
  <p align="center">
2
2
  <a href="https://builderbot.vercel.app/">
3
3
  <picture>
4
- <img src="https://i.imgur.com/OPl026Z.png" height="80">
4
+ <img src="https://builderbot.vercel.app/assets/thumbnail-vector.png" height="80">
5
5
  </picture>
6
6
  <h2 align="center">BuilderBot</h2>
7
7
  </a>
@@ -6,7 +6,7 @@
6
6
  "type": "module",
7
7
  "scripts": {
8
8
  "lint": "eslint . --no-ignore",
9
- "dev": "npm run lint && nodemon ./src/app.js",
9
+ "dev": "node --no-warnings --watch-path=./src ./src/app.js",
10
10
  "start": "node ./src/app.js"
11
11
  },
12
12
  "keywords": [],
@@ -16,8 +16,7 @@
16
16
  },
17
17
  "devDependencies": {
18
18
  "eslint-plugin-builderbot": "latest",
19
- "eslint": "^8.57.0",
20
- "nodemon": "^3.1.0"
19
+ "eslint": "^8.57.0"
21
20
  },
22
21
  "author": "",
23
22
  "license": "ISC"
@@ -1,114 +1,115 @@
1
- import { createBot, createProvider, createFlow, addKeyword, utils } from '@builderbot/bot'
1
+ import { join } from 'path'
2
+ import { createBot, createProvider, createFlow, addKeyword, utils } from '@builderbot/bot'
2
3
  import { MemoryDB as Database } from '@builderbot/bot'
3
4
  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])
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])
62
63
 
63
- const adapterProvider = createProvider(Provider)
64
+ const adapterProvider = createProvider(Provider)
64
65
  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()
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()