mrfrank-ofc commited on
Commit
b74b1a0
·
verified ·
1 Parent(s): 29d6301

Upload 8 files

Browse files
Files changed (8) hide show
  1. Dockerfile +15 -11
  2. LICENSE +201 -0
  3. README.md +240 -9
  4. app.json +182 -0
  5. command.js +20 -0
  6. config.js +87 -0
  7. index.js +624 -0
  8. package.json +48 -0
Dockerfile CHANGED
@@ -1,16 +1,20 @@
1
- # Read the doc: https://huggingface.co/docs/hub/spaces-sdks-docker
2
- # you will also find guides on how best to write your Dockerfile
3
 
4
- FROM python:3.9
 
 
 
 
 
 
5
 
6
- RUN useradd -m -u 1000 user
7
- USER user
8
- ENV PATH="/home/user/.local/bin:$PATH"
9
 
10
- WORKDIR /app
11
 
12
- COPY --chown=user ./requirements.txt requirements.txt
13
- RUN pip install --no-cache-dir --upgrade -r requirements.txt
14
 
15
- COPY --chown=user . /app
16
- CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
 
 
 
1
+ FROM node:lts-buster
 
2
 
3
+ RUN apt-get update && \
4
+ apt-get install -y \
5
+ ffmpeg \
6
+ imagemagick \
7
+ webp && \
8
+ apt-get upgrade -y && \
9
+ rm -rf /var/lib/apt/lists/*
10
 
11
+ COPY package.json .
 
 
12
 
13
+ RUN npm install && npm install -g qrcode-terminal pm2
14
 
15
+ COPY . .
 
16
 
17
+ EXPOSE 3000
18
+
19
+
20
+ CMD ["pm2-runtime", "start", "index.js"]
LICENSE ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright [yyyy] [name of copyright owner]
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
README.md CHANGED
@@ -1,12 +1,243 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
- title: SUBZERO MD
3
- emoji: 🏃
4
- colorFrom: gray
5
- colorTo: pink
6
- sdk: docker
7
- pinned: false
8
- license: apache-2.0
9
- short_description: SUBZERO BOT BY MR FRANK
10
  ---
11
 
12
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <p align="center">
2
+ <h1 align="center">SUBZERO-MD</h1>
3
+ </p>
4
+
5
+ > **`Updateding To` Version 3.0**
6
+ ---
7
+
8
+ ```
9
+ Happy New Year 2025 🥳
10
+ ```
11
+ ---
12
+
13
+ <p align="center">
14
+ <a href="https://github.com/mrfrank-ofc">
15
+ <img src="http://readme-typing-svg.herokuapp.com?color=FF0000&center=true&vCenter=true&multiline=false&lines=SUBZERO-MD-+MultiDevice;Developed+by+Mr+Franm;Give+star+and+forks+this+Repo+🌟" alt="mrfrankReadme">
16
+ </a>
17
+ </p>
18
+
19
+ ---
20
+
21
+ <a><img src='https://files.catbox.moe/5dxv7p.jpg'/></a>
22
+
23
+ <a><img src='https://i.imgur.com/LyHic3i.gif'/></a>
24
+
25
+ ***
26
+
27
+ <p align="center">
28
+ <a href="https://github.com/mrfrank-ofc"><img title="Developer" src="https://img.shields.io/badge/Author-Mr%20Frank-397604.svg?style=for-the-badge&logo=github" /></a>
29
+ </p>
30
+
31
+ <div align="center">
32
+
33
+ [![WhatsApp Channel](https://img.shields.io/badge/Join-WhatsApp%20Channel-FF00F8?style=for-the-badge&logo=whatsapp)](https://whatsapp.com/channel/0029VatOy2EAzNc2WcShQw1j)
34
+ </div>
35
+
36
+ <p align="center"><img src="https://profile-counter.glitch.me/{KHAN-MD}/count.svg" alt="mrfrank-ofc :: Visitor's Count" old_src="https://profile-counter.glitch.me/{mrfrank-ofc}/count.svg" /></p>
37
+
38
+
39
+ <p align="center">
40
+ <a href="https://github.com/mrfrank-ofc/SUBZERO-MD"><img title="PUBLIC-BOT" src="https://img.shields.io/static/v1?label=Language&message=English&style=flat-square&color=darkpink"></a> &nbsp;
41
+ <img src="https://komarev.com/ghpvc/?username=SUBZERO-MD&label=VIEWS&style=flat-square&color=blue" />
42
+ </p>
43
+ </p>
44
+
45
+ <p align="center">
46
+ <a href="https://github.com/mrfrank-ofc/SUBZERO-MD"><img title="Release" src="https://img.shields.io/badge/Release-beta%20v2.0-darkcyan.svg?style=for-the-badge&logo=appveyor" /></a>
47
+ </p>
48
+
49
+
50
+ ***
51
+
52
+ ### 1. Fork This Repository
53
+
54
+ Start by forking this repository to your own GitHub account. Click the button below to fork:
55
+
56
+ <a href="https://github.com/mrfrank-ofc/SUBZERO-MD/fork"><img title="SUBZERO-MD" src="https://img.shields.io/badge/FORK-SUBZERO-MDh?color=blue&style=for-the-badge&logo=stackshare"></a>
57
+
58
+ ### 2. Get Session ID
59
+
60
+ You will need a session ID to run the SUBZERO-MD. Click the button below to obtain your session ID.if any error in loading site try vpn:
61
+
62
+ > **Get Pair Code (Session ID)**
63
+
64
+ <a href='https://subzero-md-ultraa.onrender.com' target="_blank">
65
+ <img alt='Pairing Code' src='https://img.shields.io/badge/Get%20Pairing%20Code-orange?style=for-the-badge&logo=opencv&logoColor=black'/>
66
+ </a>
67
+ <br>
68
+
69
+ > **Get Pair Code (Session ID)**
70
+
71
+ <a href='https://subzero-md-ultraa.onrender.com' target="_blank">
72
+ <img alt='Pairing Code' src='https://img.shields.io/badge/Get%20Pairing%20Code-darkpink?style=for-the-badge&logo=opencv&logoColor=black'/>
73
+ </a>
74
+ <br>
75
+
76
+ ---
77
+
78
+ <h2 align="center">Deployment Section</h2>
79
+
80
+ ---
81
+
82
+ <h4 align="center">1. Heroku</h4>
83
+ <p style="text-align: center; font-size: 1.2em;">
84
+
85
+
86
+ <p align="center">
87
+ <a href='https://dashboard.heroku.com/new?template=https://github.com/mrfrank-ofc/SUBZERO-MD/tree/main' target="_blank"><img alt='Heroku' src='https://img.shields.io/badge/-heroku ‎ deploy-FF004D?style=for-the-badge&logo=heroku&logoColor=white'/< width=150 height=28/p></a>
88
+
89
+ <h4 align="center">2. TaikDrove Free</h4>
90
+ <p style="text-align: center; font-size: 1.2em;">
91
+
92
+ <p align="center">
93
+ <a href='https://talkdrove.com/share-bot/66' target="_blank"><img alt='Heroku' src='https://img.shields.io/badge/-TalkDrove ‎Deploy-6971FF?style=for-the-badge&logo=Github&logoColor=white'/< width=150 height=28/p></a>
94
+
95
+ * Create TaikDrove <a href="https://host.talkdrove.com/auth/signup?ref=9535F15A">Click Here</a>
96
+
97
+ <h4 align="center">3. Koyeb</h4>
98
+ <p style="text-align: center; font-size: 1.2em;">
99
+
100
+
101
+ <p align="center">
102
+ <a href='https://app.koyeb.com/services/deploy?type=git&repository=mrfrank-ofc/SUBZERO-MD&ports=3000&env[PREFIX]=.&env[SESSION_ID]=&env[ALWAYS_ONLINE]=false&env[MODE]=public&env[AUTO_STATUS_MSG]=Seen%20status%20by%20SUBZERO-MD&env[AUTO_STATUS_REPLY]=false&env[AUTO_STATUS_SEEN]=true&env[AUTO_TYPING]=false&env[ANTI_LINK]=true&env[AUTO_REACT]=false&env[READ_MESSAGE]=false' target="_blank"><img alt='Heroku' src='https://img.shields.io/badge/-koyeb ‎ deploy-FF009D?style=for-the-badge&logo=koyeb&logoColor=white'/< width=150 height=28/p></a>
103
+
104
+ <h4 align="center">4. Railway</h4>
105
+ <p style="text-align: center; font-size: 1.2em;">
106
+
107
+ <p align="center">
108
+ <a href='https://railway.app/new' target="_blank"><img alt='Heroku' src='https://img.shields.io/badge/-railway deploy-FF8700?style=for-the-badge&logo=railway&logoColor=white'/< width=150 height=28/p></a>
109
+
110
+ <h4 align="center">5. Render</h4>
111
+ <p style="text-align: center; font-size: 1.2em;">
112
+
113
+ <p align="center">
114
+ <a href='https://dashboard.render.com/web/new' target="_blank"><img alt='Heroku' src='https://img.shields.io/badge/-Render deploy-black?style=for-the-badge&logo=render&logoColot=white'/< width=150 height=28/p></a>
115
+
116
+ <h4 align="center">6. Netlify</h4>
117
+ <p style="text-align: center; font-size: 1.2em;">
118
+
119
+ <p align="center">
120
+ <a href='https://app.netlify.com/' target="_blank"><img alt='Netlify' src='https://img.shields.io/badge/-Netlify Deploy-CC00FF?style=for-the-badge&logo=netlify&logoColor=white'/< width=150 height=28/p></a> </a>
121
+
122
+ <h4 align="center">7. Replit</h4>
123
+ <p style="text-align: center; font-size: 1.2em;">
124
+
125
+ <p align="center">
126
+ <a href='https://replit.com/~' target="_blank"><img alt='Replit' src='https://img.shields.io/badge/-Replit Deploy-1976D2?style=for-the-badge&logo=replit&logoColor=white'/< width=150 height=28/p></a> </a>
127
+
128
+ <h4 align="center">8. Workflow</h4>
129
+ <p style="text-align: center; font-size: 1.2em;">
130
+
131
+
132
+ <details>
133
+
134
+ <b><strong><summary align="center" style="color: Yello;">Deploy On Workflow</summary></strong></b>
135
+ <p style="text-align: center; font-size: 1.2em;">
136
+
137
+ <h8>Copy the workflow codes and then frok the repo edit config add session id then save and now click on repo action tag then click on start new workflow then paste workflow codes name them deploy and save the file</h8>
138
+ <h3 align-"center"> Important</h3>
139
+ <h6 align-"center">Attention! We do not take responsibility if your github account is suspended through this Deploy method, I advise you not to use this workflow deploy method in the latest github accounts, github accounts created a year or more ago have not received the risk of suspension so far, this works It will only be done for 6 hours, you need to update the code to reactivate it.</h6>
140
+
141
+ ```
142
+ name: Node.js CI
143
+
144
+ on:
145
+ push:
146
+ branches:
147
+ - main
148
+ pull_request:
149
+ branches:
150
+ - main
151
+
152
+ jobs:
153
+ build:
154
+
155
+ runs-on: ubuntu-latest
156
+
157
+ strategy:
158
+ matrix:
159
+ node-version: [20.x]
160
+
161
+ steps:
162
+ - name: Checkout repository
163
+ uses: actions/checkout@v3
164
+
165
+ - name: Set up Node.js
166
+ uses: actions/setup-node@v3
167
+ with:
168
+ node-version: ${{ matrix.node-version }}
169
+
170
+ - name: Install dependencies
171
+ run: npm install
172
+
173
+ - name: Start application
174
+ run: npm start
175
+ ```
176
+ </details>
177
+
178
+ ***
179
+
180
+ ## 🔗 SUBZERO-MD INFO
181
+
182
+ <p align="center">
183
+ <a href="https://github.com/mrfrank-ofc/followers"><img title="Followers" src="https://img.shields.io/github/followers/mrfrank-ofc?color=blue&style=flat-square"></a>
184
+ <a href="https://github.com/mrfrank-ofc/SUBZERO-MD/stargazers/"><img title="Stars" src="https://img.shields.io/github/stars/mrfrank-ofc/SUBZERO-MD?color=blue&style=flat-square"></a>
185
+ <a href="https://github.com/mrfrank-ofc/SUBZERO-MD/network/members"><img title="Forks" src="https://img.shields.io/github/forks/mrfrank-ofc/SUBZERO-MD?color=blue&style=flat-square"></a>
186
+ <a href="https://github.com/mrfrank-ofc/SUBZERO-MD/"><img title="Size" src="https://img.shields.io/github/repo-size/mrfrank-ofc/SUBZERO-MD?style=flat-square&color=green"></a>
187
+ <a href="https://github.com/mrfrank-ofc/SUBZERO-MD/graphs/commit-activity"><img height="20" src="https://img.shields.io/badge/Maintained%3F-yes-green.svg"></a>&nbsp;&nbsp;
188
+ </p>
189
+ <p align='center'>
190
+ </p>
191
+
192
+
193
+ ## 🌐 WhatsApp Channel
194
+
195
+ Stay connected with the latest updates and community by joining our official WhatsApp group and channel. You can also contact the owner directly.
196
+
197
+ [![WhatsApp Channel](https://img.shields.io/badge/Join-WhatsApp%20Channel-25D366?style=for-the-badge&logo=whatsapp)](https://whatsapp.com/channel/0029VagQEmB002T7MWo3Sj1D)
198
+
199
+ ***
200
+
201
+ <h2 align="left">⚠️ Reminder</h2>
202
+ <p style="text-align: center; font-size: 1.2em;">
203
+
204
+ - **Disclaimer:** This bot is not affiliated with `WhatsApp Inc.`. Use it at your own risk.
205
+ - Misusing the bot may result in your `WhatsApp` account being banned. Note that you can only unban your account once.
206
+ - I am not responsible for any bans or misuse of the bot. Please keep this warning in mind before proceeding.
207
+
208
  ---
209
+
210
+ <h2 align="left">ℹ️ Notice</h2>
211
+ <p style="text-align: center; font-size: 1.2em;">
212
+ Not For Sale - If any plugin's code is obfuscated, you do not have permission to edit it in any form. Please remember to give credit if you are using or re-uploading my plugins/files. Wishing you a wonderful day ahead!</p>
213
+
 
 
 
214
  ---
215
 
216
+ <h2 align="center">🔰Team Section🔰 </h2>
217
+
218
+ ---
219
+
220
+ ### Thanks To Team ⤵️
221
+
222
+ > SUBZERO-MD Owner
223
+ - [Mr Frank ](https://github.com/mrfrank-ofc)
224
+ - Creater and Owner Of SUBZERO-MD
225
+ > SUBZERO-MD Helpers
226
+ - [Frank](https://github.com/efkidgamer)
227
+ - For helping in bot plugin files.
228
+ ---
229
+
230
+ <br>
231
+ <h2 align="center"> ⚠️ Warning ⚠️
232
+ </h2>
233
+
234
+ ---
235
+
236
+ <h3 align="center"> Don't Copy Without Permission
237
+ </h3>
238
+
239
+ <br>
240
+
241
+ <a><img src='https://i.imgur.com/LyHic3i.gif'/></a>
242
+
243
+ ------
app.json ADDED
@@ -0,0 +1,182 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "SUBZERO-MD",
3
+ "description": "A rich whatsapp bot by Mr Frank",
4
+ "logo": "https://raw.githubusercontent.com/JawadYTX/KHAN-DATA/refs/heads/main/logo/KHAN.png",
5
+ "keywords": ["subzero-bot"],
6
+ "success_url": "/",
7
+
8
+ "stack": "container",
9
+ "env": {
10
+ "SESSION_ID": {
11
+ "description": "Put the session-id here.",
12
+ "required": true,
13
+ "value": ""
14
+ },
15
+
16
+ "ALIVE_IMG": {
17
+ "description": "paste your image url if you don't have you can use this public url.",
18
+ "required": false,
19
+ "value": "https://files.catbox.moe/x3bdmi.jpg"
20
+ },
21
+
22
+ "LIVE_MSG": {
23
+ "description": "paste your alive message hear.",
24
+ "required": false,
25
+ "value": "> [❄️] SubZero MD Is Online ⚡"
26
+ },
27
+
28
+ "PREFIX": {
29
+ "description": "paste your bot prefix note! Don't apply null prefix.",
30
+ "required": false,
31
+ "value": "."
32
+ },
33
+
34
+ "MODE": {
35
+ "description": "select your bot work type public-private-inbox-group.",
36
+ "required": false,
37
+ "value": "public"
38
+
39
+ },
40
+
41
+
42
+ "ALWAYS_ONLINE": {
43
+ "description": "Make it true if want always online.",
44
+ "required": false,
45
+ "value": "false"
46
+ },
47
+
48
+ "AUTO_VOICE": {
49
+ "description": "Make it true if want automatic voice reply .",
50
+ "required": false,
51
+ "value": "false"
52
+ },
53
+
54
+ "AUTO_REPLY": {
55
+ "description": "Make it true if you want automatic reply.",
56
+ "required": false,
57
+ "value": "false"
58
+ },
59
+
60
+ "AUTO_STICKER": {
61
+ "description": "Make it true if you want automatic sticker.",
62
+ "required": false,
63
+ "value": "false"
64
+ },
65
+
66
+
67
+ "AUTO_STATUS_SEEN": {
68
+ "description": "Make it true for automatic status seen.",
69
+ "required": true,
70
+ "value": "true"
71
+ },
72
+
73
+ "AUTO_STATUS_REPLY": {
74
+ "description": "Make it true for auto reply msg on status seen.",
75
+ "required": true,
76
+ "value": "true"
77
+ },
78
+
79
+ "AUTO_STATUS_MSG": {
80
+ "description": "Type custom message on status reply",
81
+ "required": true,
82
+ "value": "*SUBZERO VIEWED YOUR STATUS 🤖*"
83
+ },
84
+
85
+ "OWNER_NAME": {
86
+ "description": "Type Bot Owner Name.",
87
+ "required": false,
88
+ "value": "ᴍʀ ғʀᴀɴᴋ ᴏғᴄ"
89
+ },
90
+
91
+ "OWNER_NUMBER": {
92
+ "description": "put the owner number for bot.",
93
+ "required": false,
94
+ "value": "263719647303"
95
+
96
+ },
97
+
98
+ "BOT_NAME": {
99
+ "description": "Type here the bot name.",
100
+ "required": false,
101
+ "value": "『 sᴜʙᴢᴇʀᴏ - ᴍᴅ 』"
102
+
103
+ },
104
+
105
+ "ANTI_LINK": {
106
+ "description": "Make it true if you want bot auto remove group link.",
107
+ "required": true,
108
+ "value": "true"
109
+
110
+ },
111
+
112
+ "ANTI_BAD": {
113
+ "description": "Make it true if you want bot auto delete bad words.",
114
+ "required": false,
115
+ "value": "false"
116
+ },
117
+
118
+ "DESCRIPTION": {
119
+ "description": "add caption for menu and other",
120
+ "required": false,
121
+ "value": "*© ᴘᴏᴡᴇʀᴇᴅ ʙʏ ᴍʀ ғʀᴀɴᴋ*"
122
+ },
123
+
124
+ "DELETE_LINKS": {
125
+ "description": "remove links from group automatically without removing member",
126
+ "required": false,
127
+ "value": "true"
128
+ },
129
+
130
+ "AUTO_RECORDING": {
131
+ "description": "Make it true if you want auto recoding.",
132
+ "required": false,
133
+ "value": "false"
134
+ },
135
+
136
+ "AUTO_TYPING": {
137
+ "description": "Make it true if you want auto typing.",
138
+ "required": false,
139
+ "value": "false"
140
+ },
141
+
142
+ "AUTO_REACT": {
143
+ "description": "Make it true if you want react on every message.",
144
+ "required": false,
145
+ "value": "false"
146
+ },
147
+
148
+ "CUSTOM_REACT": {
149
+ "description": "Make it true if you want custom reactions.",
150
+ "required": false,
151
+ "value": "false"
152
+
153
+ },
154
+
155
+ "CUSTOM_REACT_EMOJIS": {
156
+ "description": "put here custom react react emojis.",
157
+ "required": false,
158
+ "value": "💝,💖,💗,❤️‍🩹,❤️,🧡,💛,💚,💙,💜,🤎,🖤,🤍"
159
+ },
160
+
161
+ "READ_CMD": {
162
+ "description": "make it true if want mark commands as read.",
163
+ "required": false,
164
+ "value": "false"
165
+ },
166
+
167
+ "READ_MESSAGE": {
168
+ "description": "Make it true if you want bot read your all sms just now.",
169
+ "required": false,
170
+ "value": "false"
171
+ }
172
+
173
+ },
174
+
175
+ "buildpacks": [
176
+ {
177
+ "url": "https://github.com/heroku/heroku-buildpack-nodejs.git"
178
+ }
179
+ ],
180
+ "stack": "heroku-24"
181
+ }
182
+
command.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var commands = [];
2
+
3
+ function cmd(info, func) {
4
+ var data = info;
5
+ data.function = func;
6
+ if (!data.dontAddCommandList) data.dontAddCommandList = false;
7
+ if (!info.desc) info.desc = '';
8
+ if (!data.fromMe) data.fromMe = false;
9
+ if (!info.category) data.category = 'misc';
10
+ if(!info.filename) data.filename = "Not Provided";
11
+ commands.push(data);
12
+ return data;
13
+ }
14
+ module.exports = {
15
+ cmd,
16
+ AddCommand:cmd,
17
+ Function:cmd,
18
+ Module:cmd,
19
+ commands,
20
+ };
config.js ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const fs = require('fs');
2
+ if (fs.existsSync('config.env')) require('dotenv').config({ path: './config.env' });
3
+
4
+ function convertToBool(text, fault = 'true') {
5
+ return text === fault ? true : false;
6
+ }
7
+ module.exports = {
8
+ SESSION_ID: process.env.SESSION_ID || "enter your subzero md session id here",
9
+
10
+ PREFIX: process.env.PREFIX || ".",
11
+ // Enter Your Desired Prefix
12
+
13
+ BOT_NAME: process.env.BOT_NAME || "『 𝐒𝐔𝐁𝐙𝐄𝐑𝐎 𝐌𝐃 』",
14
+ // Enter Your Bot Name
15
+
16
+ CUSTOM_REACT: process.env.CUSTOM_REACT || "false",
17
+ // make this true for custum emoji react
18
+
19
+ CUSTOM_REACT_EMOJIS: process.env.CUSTOM_REACT_EMOJIS || "💝,💖,💗,❤️‍🩹,❤️,🧡,💛,💚,💙,💜,🤎,🖤,🤍",
20
+ // chose custom react emojis by yourself
21
+
22
+ DELETE_LINKS: process.env.DELETE_LINKS || "false",
23
+ // automatic delete links witho remove member
24
+
25
+ OWNER_NUMBER: process.env.OWNER_NUMBER || "263719647303",
26
+ // Set Owner Name
27
+
28
+ OWNER_NAME: process.env.OWNER_NAME || "ᴍʀ ꜰʀᴀɴᴋ ᴏꜰᴄ",
29
+ // Set Footer
30
+
31
+ DESCRIPTION: process.env.DESCRIPTION || "*© Gᴇɴᴇʀᴀᴛᴇᴅ ʙʏ Sᴜʙᴢᴇʀᴏ*",
32
+ // add bot owner name
33
+
34
+ ALIVE_IMG: process.env.ALIVE_IMG || "https://i.ibb.co/YkJyMRb/mrfrankofc.jpg",
35
+ // add img for alive msg
36
+
37
+ LIVE_MSG: process.env.LIVE_MSG || "> [🎐] SᴜʙZᴇʀᴏ MD ɪs ᴏɴʟɪɴᴇ*⚡",
38
+ // add alive msg here
39
+
40
+ READ_MESSAGE: process.env.READ_MESSAGE || "false",
41
+ // Turn true or false for automatic read msgs
42
+
43
+ AUTO_REACT: process.env.AUTO_REACT || "false",
44
+ // make this true or false for auto react on all msgs
45
+
46
+ ANTI_BAD: process.env.ANTI_BAD || "false",
47
+ // false or true for anti bad words
48
+
49
+ AUTO_STATUS_SEEN: process.env.AUTO_STATUS_SEEN || "true",
50
+ // make true or false status auto seen
51
+
52
+ AUTO_STATUS_REPLY: process.env.AUTO_STATUS_REPLY || "true",
53
+ // make true if you want auto reply on status
54
+
55
+ AUTO_STATUS_MSG: process.env.AUTO_STATUS__MSG || "*[❄️] Hi there, SUBZERO-MD viewed your Status🎐*",
56
+
57
+ // set the auto reply massage on status reply
58
+ MODE: process.env.MODE || "public",
59
+ // make bot public-private-inbox-group
60
+
61
+ ANTI_LINK: process.env.ANTI_LINK || "true",
62
+ // make anti link true,false for groups
63
+
64
+ AUTO_VOICE: process.env.AUTO_VOICE || "false",
65
+ // make true for send automatic voices
66
+
67
+ AUTO_STICKER: process.env.AUTO_STICKER || "false",
68
+ // make true for automatic stickers
69
+
70
+ AUTO_REPLY: process.env.AUTO_REPLY || "false",
71
+ // make true or false automatic text reply
72
+
73
+ ALWAYS_ONLINE: process.env.ALWAYS_ONLINE || "false",
74
+ // maks true for always online
75
+
76
+ PUBLIC_MODE: process.env.PUBLIC_MODE || "true",
77
+ // make false if want private mod
78
+
79
+ AUTO_TYPING: process.env.AUTO_TYPING || "false",
80
+ // true for automatic show typing
81
+
82
+ READ_CMD: process.env.READ_CMD || "false",
83
+ // true if want mark commands as read
84
+
85
+ AUTO_RECORDING: process.env.AUTO_RECORDING || "false"
86
+ // make it true for auto recoding
87
+ };
index.js ADDED
@@ -0,0 +1,624 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const {
2
+ default: makeWASocket,
3
+ useMultiFileAuthState,
4
+ DisconnectReason,
5
+ jidNormalizedUser,
6
+ getContentType,
7
+ proto,
8
+ generateWAMessageContent,
9
+ generateWAMessage,
10
+ AnyMessageContent,
11
+ prepareWAMessageMedia,
12
+ areJidsSameUser,
13
+ downloadContentFromMessage,
14
+ MessageRetryMap,
15
+ generateForwardMessageContent,
16
+ generateWAMessageFromContent,
17
+ generateMessageID, makeInMemoryStore,
18
+ jidDecode,
19
+ fetchLatestBaileysVersion,
20
+ Browsers
21
+ } = require('@whiskeysockets/baileys')
22
+
23
+
24
+ const l = console.log
25
+ const { getBuffer, getGroupAdmins, getRandom, h2k, isUrl, Json, runtime, sleep, fetchJson } = require('./lib/functions')
26
+ const fs = require('fs')
27
+ const ff = require('fluent-ffmpeg')
28
+ const P = require('pino')
29
+ const config = require('./config')
30
+ const qrcode = require('qrcode-terminal')
31
+ const StickersTypes = require('wa-sticker-formatter')
32
+ const util = require('util')
33
+ const { sms,downloadMediaMessage } = require('./lib/msg')
34
+ const FileType = require('file-type');
35
+ const axios = require('axios')
36
+ const { File } = require('megajs')
37
+ const { fromBuffer } = require('file-type')
38
+ const bodyparser = require('body-parser')
39
+ const os = require('os')
40
+ const Crypto = require('crypto')
41
+ const path = require('path')
42
+ const prefix = config.PREFIX
43
+
44
+ const ownerNumber = ['263719647303']
45
+
46
+ const tempDir = path.join(os.tmpdir(), 'cache-temp')
47
+ if (!fs.existsSync(tempDir)) {
48
+ fs.mkdirSync(tempDir)
49
+ }
50
+
51
+ const clearTempDir = () => {
52
+ fs.readdir(tempDir, (err, files) => {
53
+ if (err) throw err;
54
+ for (const file of files) {
55
+ fs.unlink(path.join(tempDir, file), err => {
56
+ if (err) throw err;
57
+ });
58
+ }
59
+ });
60
+ }
61
+
62
+ // Clear the temp directory every 5 minutes
63
+ setInterval(clearTempDir, 5 * 60 * 1000);
64
+
65
+ //===================SESSION-AUTH============================
66
+ if (!fs.existsSync(__dirname + '/sessions/creds.json')) {
67
+ if(!config.SESSION_ID) return console.log('Please add your session to SESSION_ID env !!')
68
+ const sessdata = config.SESSION_ID.replace("SUBZERO-MD~", '');//Do not touch this
69
+ const filer = File.fromURL(`https://mega.nz/file/${sessdata}`)
70
+ filer.download((err, data) => {
71
+ if(err) throw err
72
+ fs.writeFile(__dirname + '/sessions/creds.json', data, () => {
73
+ console.log("SubZero Session downloaded ✅")
74
+ })})}
75
+
76
+ const express = require("express");
77
+ const app = express();
78
+ const port = process.env.PORT || 9090;
79
+
80
+ //=============================================
81
+
82
+ async function connectToWA() {
83
+ console.log("[ ❄️ ] SubZero Connecting to WhatsApp ⏳️...");
84
+ const { state, saveCreds } = await useMultiFileAuthState(__dirname + '/sessions/')
85
+ var { version } = await fetchLatestBaileysVersion()
86
+
87
+ const conn = makeWASocket({
88
+ logger: P({ level: 'silent' }),
89
+ printQRInTerminal: false,
90
+ browser: Browsers.macOS("Firefox"),
91
+ syncFullHistory: true,
92
+ auth: state,
93
+ version
94
+ })
95
+
96
+ conn.ev.on('connection.update', (update) => {
97
+ const { connection, lastDisconnect } = update
98
+ if (connection === 'close') {
99
+ if (lastDisconnect.error.output.statusCode !== DisconnectReason.loggedOut) {
100
+ connectToWA()
101
+ }
102
+ } else if (connection === 'open') {
103
+ console.log('[ ❄️ ] 🛠️ Installing Plugins.')
104
+ const path = require('path');
105
+ fs.readdirSync("./plugins/").forEach((plugin) => {
106
+ if (path.extname(plugin).toLowerCase() == ".js") {
107
+ require("./plugins/" + plugin);
108
+ }
109
+ });
110
+ console.log('[ ❄️ ] Plugins installed successful ✅')
111
+ console.log('[ ❄️ ] SubZero MD connected to whatsapp ✅')
112
+
113
+ let up = `*Hi Owner😇, Congrats SubZero Connected Successfully🧸! \ud83d\udc4b\ud83c\udffb* \n\n> Light, Cold, Icy, Fast & Rich Loaded With Features, SubZero W.A Bot.\n\n *Thanks for using SUBZERO-MD ❄️* \n\n> Join WhatsApp Channel :- 🛠️\n \nhttps://whatsapp.com/channel/0029VagQEmB002T7MWo3Sj1D\n\n- *ყσµɾ ɓσƭ ρɾεƒเא ➜* ${prefix}\n\nDont forget to star our repo☺ \n\nhttps://github.com/mrfrank-ofc/SUBZERO-MD\n\n> © 🎐ᴘϙᴡᴇʀᴇᴅ ʙʏ ᴍʀ ꜰʀᴀɴᴋ ᴏꜰᴄ ⚡`;
114
+ conn.sendMessage(conn.user.id, { image: { url: `https://i.ibb.co/8NBwB9P/mrfrankofc.jpg` }, caption: up })
115
+ }
116
+ })
117
+ conn.ev.on('creds.update', saveCreds)
118
+
119
+ //=============readstatus=======
120
+
121
+ conn.ev.on('messages.upsert', async(mek) => {
122
+ mek = mek.messages[0]
123
+ if (!mek.message) return
124
+ mek.message = (getContentType(mek.message) === 'ephemeralMessage')
125
+ ? mek.message.ephemeralMessage.message
126
+ : mek.message;
127
+ if (config.READ_MESSAGE === 'true') {
128
+ await conn.readMessages([mek.key]); // Mark message as read
129
+ console.log(`Marked message from ${mek.key.remoteJid} as read.`);
130
+ }
131
+ if(mek.message.viewOnceMessageV2)
132
+ mek.message = (getContentType(mek.message) === 'ephemeralMessage') ? mek.message.ephemeralMessage.message : mek.message
133
+ if (mek.key && mek.key.remoteJid === 'status@broadcast' && config.AUTO_STATUS_SEEN === "true"){
134
+ await conn.readMessages([mek.key])
135
+ }
136
+ if (mek.key && mek.key.remoteJid === 'status@broadcast' && config.AUTO_STATUS_REPLY === "true"){
137
+ const user = mek.key.participant
138
+ const text = `${config.AUTO_STATUS_MSG}`
139
+ await conn.sendMessage(user, { text: text, react: { text: '💜', key: mek.key } }, { quoted: mek })
140
+ }
141
+ let jawadik = mek.message.viewOnceMessageV2
142
+ let jawadik1 = mek.mtype === "viewOnceMessage"
143
+ if (jawadik && config.ANTI_VV === "true") {
144
+ if (jawadik.message.imageMessage) {
145
+ let cap = jawadik.message.imageMessage.caption;
146
+ let anu = await conn.downloadAndSaveMediaMessage(jawadik.message.imageMessage);
147
+ return conn.sendMessage("[email protected]", { image: { url: anu }, caption: cap }, { quoted: mek });
148
+ } if (jawadik.message.videoMessage) {
149
+ let cap = jawadik.message.videoMessage.caption;
150
+ let anu = await conn.downloadAndSaveMediaMessage(jawadik.message.videoMessage);
151
+ return conn.sendMessage("[email protected]", { video: { url: anu }, caption: cap }, { quoted: mek });
152
+ } if (jawadik.message.audioMessage) {
153
+ let anu = await conn.downloadAndSaveMediaMessage(jawadik.message.audioMessage);
154
+ return conn.sendMessage("[email protected]", { audio: { url: anu }, caption: cap }, { quoted: mek });
155
+ }
156
+ }
157
+ const m = sms(conn, mek)
158
+ const type = getContentType(mek.message)
159
+ const content = JSON.stringify(mek.message)
160
+ const from = mek.key.remoteJid
161
+ const quoted = type == 'extendedTextMessage' && mek.message.extendedTextMessage.contextInfo != null ? mek.message.extendedTextMessage.contextInfo.quotedMessage || [] : []
162
+ const body = (type === 'conversation') ? mek.message.conversation : (type === 'extendedTextMessage') ? mek.message.extendedTextMessage.text : (type == 'imageMessage') && mek.message.imageMessage.caption ? mek.message.imageMessage.caption : (type == 'videoMessage') && mek.message.videoMessage.caption ? mek.message.videoMessage.caption : ''
163
+ const isCmd = body.startsWith(prefix)
164
+ const command = isCmd ? body.slice(prefix.length).trim().split(' ').shift().toLowerCase() : ''
165
+ const args = body.trim().split(/ +/).slice(1)
166
+ const q = args.join(' ')
167
+ const isGroup = from.endsWith('@g.us')
168
+ const sender = mek.key.fromMe ? (conn.user.id.split(':')[0]+'@s.whatsapp.net' || conn.user.id) : (mek.key.participant || mek.key.remoteJid)
169
+ const senderNumber = sender.split('@')[0]
170
+ const botNumber = conn.user.id.split(':')[0]
171
+ const pushname = mek.pushName || 'Sin Nombre'
172
+ const isMe = botNumber.includes(senderNumber)
173
+ const isOwner = ownerNumber.includes(senderNumber) || isMe
174
+ const botNumber2 = await jidNormalizedUser(conn.user.id);
175
+ const groupMetadata = isGroup ? await conn.groupMetadata(from).catch(e => {}) : ''
176
+ const groupName = isGroup ? groupMetadata.subject : ''
177
+ const participants = isGroup ? await groupMetadata.participants : ''
178
+ const groupAdmins = isGroup ? await getGroupAdmins(participants) : ''
179
+ const isBotAdmins = isGroup ? groupAdmins.includes(botNumber2) : false
180
+ const isAdmins = isGroup ? groupAdmins.includes(sender) : false
181
+ const isReact = m.message.reactionMessage ? true : false
182
+ const reply = (teks) => {
183
+ conn.sendMessage(from, { text: teks }, { quoted: mek })
184
+ }
185
+ //===================================================
186
+ conn.decodeJid = jid => {
187
+ if (!jid) return jid;
188
+ if (/:\d+@/gi.test(jid)) {
189
+ let decode = jidDecode(jid) || {};
190
+ return (
191
+ (decode.user &&
192
+ decode.server &&
193
+ decode.user + '@' + decode.server) ||
194
+ jid
195
+ );
196
+ } else return jid;
197
+ };
198
+ //===================================================
199
+ conn.copyNForward = async(jid, message, forceForward = false, options = {}) => {
200
+ let vtype
201
+ if (options.readViewOnce) {
202
+ message.message = message.message && message.message.ephemeralMessage && message.message.ephemeralMessage.message ? message.message.ephemeralMessage.message : (message.message || undefined)
203
+ vtype = Object.keys(message.message.viewOnceMessage.message)[0]
204
+ delete(message.message && message.message.ignore ? message.message.ignore : (message.message || undefined))
205
+ delete message.message.viewOnceMessage.message[vtype].viewOnce
206
+ message.message = {
207
+ ...message.message.viewOnceMessage.message
208
+ }
209
+ }
210
+
211
+ let mtype = Object.keys(message.message)[0]
212
+ let content = await generateForwardMessageContent(message, forceForward)
213
+ let ctype = Object.keys(content)[0]
214
+ let context = {}
215
+ if (mtype != "conversation") context = message.message[mtype].contextInfo
216
+ content[ctype].contextInfo = {
217
+ ...context,
218
+ ...content[ctype].contextInfo
219
+ }
220
+ const waMessage = await generateWAMessageFromContent(jid, content, options ? {
221
+ ...content[ctype],
222
+ ...options,
223
+ ...(options.contextInfo ? {
224
+ contextInfo: {
225
+ ...content[ctype].contextInfo,
226
+ ...options.contextInfo
227
+ }
228
+ } : {})
229
+ } : {})
230
+ await conn.relayMessage(jid, waMessage.message, { messageId: waMessage.key.id })
231
+ return waMessage
232
+ }
233
+ //=================================================
234
+ conn.downloadAndSaveMediaMessage = async(message, filename, attachExtension = true) => {
235
+ let quoted = message.msg ? message.msg : message
236
+ let mime = (message.msg || message).mimetype || ''
237
+ let messageType = message.mtype ? message.mtype.replace(/Message/gi, '') : mime.split('/')[0]
238
+ const stream = await downloadContentFromMessage(quoted, messageType)
239
+ let buffer = Buffer.from([])
240
+ for await (const chunk of stream) {
241
+ buffer = Buffer.concat([buffer, chunk])
242
+ }
243
+ let type = await FileType.fromBuffer(buffer)
244
+ trueFileName = attachExtension ? (filename + '.' + type.ext) : filename
245
+ // save to file
246
+ await fs.writeFileSync(trueFileName, buffer)
247
+ return trueFileName
248
+ }
249
+ //=================================================
250
+ conn.downloadMediaMessage = async(message) => {
251
+ let mime = (message.msg || message).mimetype || ''
252
+ let messageType = message.mtype ? message.mtype.replace(/Message/gi, '') : mime.split('/')[0]
253
+ const stream = await downloadContentFromMessage(message, messageType)
254
+ let buffer = Buffer.from([])
255
+ for await (const chunk of stream) {
256
+ buffer = Buffer.concat([buffer, chunk])
257
+ }
258
+
259
+ return buffer
260
+ }
261
+
262
+ /**
263
+ *
264
+ * @param {*} jid
265
+ * @param {*} message
266
+ * @param {*} forceForward
267
+ * @param {*} options
268
+ * @returns
269
+ */
270
+ //================================================
271
+ conn.sendFileUrl = async (jid, url, caption, quoted, options = {}) => {
272
+ let mime = '';
273
+ let res = await axios.head(url)
274
+ mime = res.headers['content-type']
275
+ if (mime.split("/")[1] === "gif") {
276
+ return conn.sendMessage(jid, { video: await getBuffer(url), caption: caption, gifPlayback: true, ...options }, { quoted: quoted, ...options })
277
+ }
278
+ let type = mime.split("/")[0] + "Message"
279
+ if (mime === "application/pdf") {
280
+ return conn.sendMessage(jid, { document: await getBuffer(url), mimetype: 'application/pdf', caption: caption, ...options }, { quoted: quoted, ...options })
281
+ }
282
+ if (mime.split("/")[0] === "image") {
283
+ return conn.sendMessage(jid, { image: await getBuffer(url), caption: caption, ...options }, { quoted: quoted, ...options })
284
+ }
285
+ if (mime.split("/")[0] === "video") {
286
+ return conn.sendMessage(jid, { video: await getBuffer(url), caption: caption, mimetype: 'video/mp4', ...options }, { quoted: quoted, ...options })
287
+ }
288
+ if (mime.split("/")[0] === "audio") {
289
+ return conn.sendMessage(jid, { audio: await getBuffer(url), caption: caption, mimetype: 'audio/mpeg', ...options }, { quoted: quoted, ...options })
290
+ }
291
+ }
292
+ //==========================================================
293
+ conn.cMod = (jid, copy, text = '', sender = conn.user.id, options = {}) => {
294
+ //let copy = message.toJSON()
295
+ let mtype = Object.keys(copy.message)[0]
296
+ let isEphemeral = mtype === 'ephemeralMessage'
297
+ if (isEphemeral) {
298
+ mtype = Object.keys(copy.message.ephemeralMessage.message)[0]
299
+ }
300
+ let msg = isEphemeral ? copy.message.ephemeralMessage.message : copy.message
301
+ let content = msg[mtype]
302
+ if (typeof content === 'string') msg[mtype] = text || content
303
+ else if (content.caption) content.caption = text || content.caption
304
+ else if (content.text) content.text = text || content.text
305
+ if (typeof content !== 'string') msg[mtype] = {
306
+ ...content,
307
+ ...options
308
+ }
309
+ if (copy.key.participant) sender = copy.key.participant = sender || copy.key.participant
310
+ else if (copy.key.participant) sender = copy.key.participant = sender || copy.key.participant
311
+ if (copy.key.remoteJid.includes('@s.whatsapp.net')) sender = sender || copy.key.remoteJid
312
+ else if (copy.key.remoteJid.includes('@broadcast')) sender = sender || copy.key.remoteJid
313
+ copy.key.remoteJid = jid
314
+ copy.key.fromMe = sender === conn.user.id
315
+
316
+ return proto.WebMessageInfo.fromObject(copy)
317
+ }
318
+
319
+
320
+ /**
321
+ *
322
+ * @param {*} path
323
+ * @returns
324
+ */
325
+ //=====================================================
326
+ conn.getFile = async(PATH, save) => {
327
+ let res
328
+ let data = Buffer.isBuffer(PATH) ? PATH : /^data:.*?\/.*?;base64,/i.test(PATH) ? Buffer.from(PATH.split `,` [1], 'base64') : /^https?:\/\//.test(PATH) ? await (res = await getBuffer(PATH)) : fs.existsSync(PATH) ? (filename = PATH, fs.readFileSync(PATH)) : typeof PATH === 'string' ? PATH : Buffer.alloc(0)
329
+ //if (!Buffer.isBuffer(data)) throw new TypeError('Result is not a buffer')
330
+ let type = await FileType.fromBuffer(data) || {
331
+ mime: 'application/octet-stream',
332
+ ext: '.bin'
333
+ }
334
+ let filename = path.join(__filename, __dirname + new Date * 1 + '.' + type.ext)
335
+ if (data && save) fs.promises.writeFile(filename, data)
336
+ return {
337
+ res,
338
+ filename,
339
+ size: await getSizeMedia(data),
340
+ ...type,
341
+ data
342
+ }
343
+
344
+ }
345
+ //=====================================================
346
+ conn.sendFile = async(jid, PATH, fileName, quoted = {}, options = {}) => {
347
+ let types = await conn.getFile(PATH, true)
348
+ let { filename, size, ext, mime, data } = types
349
+ let type = '',
350
+ mimetype = mime,
351
+ pathFile = filename
352
+ if (options.asDocument) type = 'document'
353
+ if (options.asSticker || /webp/.test(mime)) {
354
+ let { writeExif } = require('./exif.js')
355
+ let media = { mimetype: mime, data }
356
+ pathFile = await writeExif(media, { packname: Config.packname, author: Config.packname, categories: options.categories ? options.categories : [] })
357
+ await fs.promises.unlink(filename)
358
+ type = 'sticker'
359
+ mimetype = 'image/webp'
360
+ } else if (/image/.test(mime)) type = 'image'
361
+ else if (/video/.test(mime)) type = 'video'
362
+ else if (/audio/.test(mime)) type = 'audio'
363
+ else type = 'document'
364
+ await conn.sendMessage(jid, {
365
+ [type]: { url: pathFile },
366
+ mimetype,
367
+ fileName,
368
+ ...options
369
+ }, { quoted, ...options })
370
+ return fs.promises.unlink(pathFile)
371
+ }
372
+ //=====================================================
373
+ conn.parseMention = async(text) => {
374
+ return [...text.matchAll(/@([0-9]{5,16}|0)/g)].map(v => v[1] + '@s.whatsapp.net')
375
+ }
376
+ //=====================================================
377
+ conn.sendMedia = async(jid, path, fileName = '', caption = '', quoted = '', options = {}) => {
378
+ let types = await conn.getFile(path, true)
379
+ let { mime, ext, res, data, filename } = types
380
+ if (res && res.status !== 200 || file.length <= 65536) {
381
+ try { throw { json: JSON.parse(file.toString()) } } catch (e) { if (e.json) throw e.json }
382
+ }
383
+ let type = '',
384
+ mimetype = mime,
385
+ pathFile = filename
386
+ if (options.asDocument) type = 'document'
387
+ if (options.asSticker || /webp/.test(mime)) {
388
+ let { writeExif } = require('./exif')
389
+ let media = { mimetype: mime, data }
390
+ pathFile = await writeExif(media, { packname: options.packname ? options.packname : Config.packname, author: options.author ? options.author : Config.author, categories: options.categories ? options.categories : [] })
391
+ await fs.promises.unlink(filename)
392
+ type = 'sticker'
393
+ mimetype = 'image/webp'
394
+ } else if (/image/.test(mime)) type = 'image'
395
+ else if (/video/.test(mime)) type = 'video'
396
+ else if (/audio/.test(mime)) type = 'audio'
397
+ else type = 'document'
398
+ await conn.sendMessage(jid, {
399
+ [type]: { url: pathFile },
400
+ caption,
401
+ mimetype,
402
+ fileName,
403
+ ...options
404
+ }, { quoted, ...options })
405
+ return fs.promises.unlink(pathFile)
406
+ }
407
+ /**
408
+ *
409
+ * @param {*} message
410
+ * @param {*} filename
411
+ * @param {*} attachExtension
412
+ * @returns
413
+ */
414
+ //=====================================================
415
+ conn.sendVideoAsSticker = async (jid, buff, options = {}) => {
416
+ let buffer;
417
+ if (options && (options.packname || options.author)) {
418
+ buffer = await writeExifVid(buff, options);
419
+ } else {
420
+ buffer = await videoToWebp(buff);
421
+ }
422
+ await conn.sendMessage(
423
+ jid,
424
+ { sticker: { url: buffer }, ...options },
425
+ options
426
+ );
427
+ };
428
+ //=====================================================
429
+ conn.sendImageAsSticker = async (jid, buff, options = {}) => {
430
+ let buffer;
431
+ if (options && (options.packname || options.author)) {
432
+ buffer = await writeExifImg(buff, options);
433
+ } else {
434
+ buffer = await imageToWebp(buff);
435
+ }
436
+ await conn.sendMessage(
437
+ jid,
438
+ { sticker: { url: buffer }, ...options },
439
+ options
440
+ );
441
+ };
442
+ /**
443
+ *
444
+ * @param {*} jid
445
+ * @param {*} path
446
+ * @param {*} quoted
447
+ * @param {*} options
448
+ * @returns
449
+ */
450
+ //=====================================================
451
+ conn.sendTextWithMentions = async(jid, text, quoted, options = {}) => conn.sendMessage(jid, { text: text, contextInfo: { mentionedJid: [...text.matchAll(/@(\d{0,16})/g)].map(v => v[1] + '@s.whatsapp.net') }, ...options }, { quoted })
452
+
453
+ /**
454
+ *
455
+ * @param {*} jid
456
+ * @param {*} path
457
+ * @param {*} quoted
458
+ * @param {*} options
459
+ * @returns
460
+ */
461
+ //=====================================================
462
+ conn.sendImage = async(jid, path, caption = '', quoted = '', options) => {
463
+ let buffer = Buffer.isBuffer(path) ? path : /^data:.*?\/.*?;base64,/i.test(path) ? Buffer.from(path.split `,` [1], 'base64') : /^https?:\/\//.test(path) ? await (await getBuffer(path)) : fs.existsSync(path) ? fs.readFileSync(path) : Buffer.alloc(0)
464
+ return await conn.sendMessage(jid, { image: buffer, caption: caption, ...options }, { quoted })
465
+ }
466
+
467
+ /**
468
+ *
469
+ * @param {*} jid
470
+ * @param {*} path
471
+ * @param {*} caption
472
+ * @param {*} quoted
473
+ * @param {*} options
474
+ * @returns
475
+ */
476
+ //=====================================================
477
+ conn.sendText = (jid, text, quoted = '', options) => conn.sendMessage(jid, { text: text, ...options }, { quoted })
478
+
479
+ /**
480
+ *
481
+ * @param {*} jid
482
+ * @param {*} path
483
+ * @param {*} caption
484
+ * @param {*} quoted
485
+ * @param {*} options
486
+ * @returns
487
+ */
488
+ //=====================================================
489
+ conn.sendButtonText = (jid, buttons = [], text, footer, quoted = '', options = {}) => {
490
+ let buttonMessage = {
491
+ text,
492
+ footer,
493
+ buttons,
494
+ headerType: 2,
495
+ ...options
496
+ }
497
+ //========================================================================================================================================
498
+ conn.sendMessage(jid, buttonMessage, { quoted, ...options })
499
+ }
500
+ //=====================================================
501
+ conn.send5ButImg = async(jid, text = '', footer = '', img, but = [], thumb, options = {}) => {
502
+ let message = await prepareWAMessageMedia({ image: img, jpegThumbnail: thumb }, { upload: conn.waUploadToServer })
503
+ var template = generateWAMessageFromContent(jid, proto.Message.fromObject({
504
+ templateMessage: {
505
+ hydratedTemplate: {
506
+ imageMessage: message.imageMessage,
507
+ "hydratedContentText": text,
508
+ "hydratedFooterText": footer,
509
+ "hydratedButtons": but
510
+ }
511
+ }
512
+ }), options)
513
+ conn.relayMessage(jid, template.message, { messageId: template.key.id })
514
+ }
515
+
516
+ /**
517
+ *
518
+ * @param {*} jid
519
+ * @param {*} buttons
520
+ * @param {*} caption
521
+ * @param {*} footer
522
+ * @param {*} quoted
523
+ * @param {*} options
524
+ */
525
+
526
+ //=====Auto-Read-Cmd==========
527
+ if (isCmd && config.READ_CMD === "true") {
528
+ await conn.readMessages([mek.key]) // Mark command as read
529
+ }
530
+ //================ownerreact==============
531
+
532
+ if(senderNumber.includes("263719647303")){
533
+ if(isReact) return
534
+ m.react("🧸")
535
+ }
536
+
537
+ //==========public react============//
538
+ // Auto React
539
+ if (!isReact && senderNumber !== botNumber) {
540
+ if (config.AUTO_REACT === 'true') {
541
+ const reactions = ['😊', '👍', '😂', '💯', '🔥', '🙏', '🎉', '👏', '😎', '🤖', '👫', '👭', '👬', '👮', "🕴️", '💼', '📊', '📈', '📉', '📊', '📝', '📚', '📰', '📱', '💻', '📻', '📺', '🎬', "📽️", '📸', '📷', "🕯️", '💡', '🔦', '🔧', '🔨', '🔩', '🔪', '🔫', '👑', '👸', '🤴', '👹', '🤺', '🤻', '👺', '🤼', '🤽', '🤾', '🤿', '🦁', '🐴', '🦊', '🐺', '🐼', '🐾', '🐿', '🦄', '🦅', '🦆', '🦇', '🦈', '🐳', '🐋', '🐟', '🐠', '🐡', '🐙', '🐚', '🐜', '🐝', '🐞', "🕷️", '🦋', '🐛', '🐌', '🐚', '🌿', '🌸', '💐', '🌹', '🌺', '🌻', '🌴', '🏵', '🏰', '🏠', '🏡', '🏢', '🏣', '🏥', '🏦', '🏧', '🏨', '🏩', '🏪', '🏫', '🏬', '🏭', '🏮', '🏯', '🚣', '🛥', '🚂', '🚁', '🚀', '🛸', '🛹', '🚴', '🚲', '🛺', '🚮', '🚯', '🚱', '🚫', '🚽', "🕳️", '💣', '🔫', "🕷️", "🕸️", '💀', '👻', '🕺', '💃', "🕴️", '👶', '👵', '👴', '👱', '👨', '👩', '👧', '👦', '👪', '👫', '👭', '👬', '👮', "🕴️", '💼', '📊', '📈', '📉', '📊', '📝', '📚', '📰', '📱', '💻', '📻', '📺', '🎬', "📽️", '📸', '📷', "🕯️", '💡', '🔦', '🔧', '🔨', '🔩', '🔪', '🔫', '👑', '👸', '🤴', '👹', '🤺', '🤻', '👺', '🤼', '🤽', '🤾', '🤿', '🦁', '🐴', '🦊', '🐺', '🐼', '🐾', '🐿', '🦄', '🦅', '🦆', '🦇', '🦈', '🐳', '🐋', '🐟', '🐠', '🐡', '🐙', '🐚', '🐜', '🐝', '🐞', "🕷️", '🦋', '🐛', '🐌', '🐚', '🌿', '🌸', '💐', '🌹', '🌺', '🌻', '🌴', '🏵', '🏰', '🏠', '🏡', '🏢', '🏠', '🏡', '🏢', '🏣', '🏥', '🏦', '🏧', '🏨', '🏩', '🏪', '🏫', '🏬', '🏭', '🏮', '🏯', '🚣', '🛥', '🚂', '🚁', '🚀', '🛸', '🛹', '🚴', '🚲', '🛺', '🚮', '🚯', '🚱', '🚫', '🚽', "🕳️", '💣', '🔫', "🕷️", "🕸️", '💀', '👻', '🕺', '💃', "🕴️", '👶', '👵', '👴', '👱', '👨', '👩', '👧', '👦', '👪', '👫', '👭', '👬', '👮', "🕴️", '💼', '📊', '📈', '📉', '📊', '📝', '📚', '📰', '📱', '💻', '📻', '📺', '🎬', "📽️", '📸', '📷', "🕯️", '💡', '🔦', '🔧', '🔨', '🔩', '🔪', '🔫', '👑', '👸', '🤴', '👹', '🤺', '🤻', '👺', '🤼', '🤽', '🤾', '🤿', '🦁', '🐴', '🦊', '🐺', '🐼', '🐾', '🐿', '🦄', '🦅', '🦆', '🦇', '🦈', '🐳', '🐋', '🐟', '🐠', '🐡', '🐙', '🐚', '🐜', '🐝', '🐞', "🕷️", '🦋', '🐛', '🐌', '🐚', '🌿', '🌸', '💐', '🌹', '🌺', '🌻', '🌴', '🏵', '🏰', '🏠', '🏡', '🏢', '🏣', '🏥', '🏦', '🏧', '🏨', '🏩', '🏪', '🏫', '🏬', '🏭', '🏮', '🏯', '🚣', '🛥', '🚂', '🚁', '🚀', '🛸', '🛹', '🚴', '🚲', '🛺', '🚮', '🚯', '🚱', '🚫', '🚽', "🕳️", '💣', '🔫', "🕷️", "🕸️", '💀', '👻', '🕺', '💃', "🕴️", '👶', '👵', '👴', '👱', '👨', '👩', '👧', '👦', '👪', '🙂', '😑', '🤣', '😍', '😘', '😗', '😙', '😚', '😛', '😝', '😞', '😟', '😠', '😡', '😢', '😭', '😓', '😳', '😴', '😌', '😆', '😂', '🤔', '😒', '😓', '😶', '🙄', '🐶', '🐱', '🐔', '🐷', '🐴', '🐲', '🐸', '🐳', '🐋', '🐒', '🐑', '🐕', '🐩', '🍔', '🍕', '🥤', '🍣', '🍲', '🍴', '🍽', '🍹', '🍸', '🎂', '📱', '📺', '📻', '🎤', '📚', '💻', '📸', '📷', '❤️', '💔', '❣️', '☀️', '🌙', '🌃', '🏠', '🚪', "🇺🇸", "🇬🇧", "🇨🇦", "🇦🇺", "🇯🇵", "🇫🇷", "🇪🇸", '👍', '👎', '👏', '👫', '👭', '👬', '👮', '🤝', '🙏', '👑', '🌻', '🌺', '🌸', '🌹', '🌴', "🏞️", '🌊', '🚗', '🚌', "🛣️", "🛫️", "🛬️", '🚣', '🛥', '🚂', '🚁', '🚀', "🏃‍♂️", "🏋️‍♀️", "🏊‍♂️", "🏄‍♂️", '🎾', '🏀', '🏈', '🎯', '🏆', '??', '⬆️', '⬇️', '⇒', '⇐', '↩️', '↪️', 'ℹ️', '‼️', '⁉️', '‽️', '©️', '®️', '™️', '🔴', '🔵', '🟢', '🔹', '🔺', '💯', '👑', '🤣', "🤷‍♂️", "🤷‍♀️", "🙅‍♂️", "🙅‍♀️", "🙆‍♂️", "🙆‍♀️", "🤦‍♂️", "🤦‍♀️", '🏻', '💆‍♂️', "💆‍♀️", "🕴‍♂️", "🕴‍♀️", "💇‍♂️", "💇‍♀️", '🚫', '🚽', "🕳️", '💣', '🔫', "🕷️", "🕸️", '💀', '👻', '🕺', '💃', "🕴️", '👶', '👵', '👴', '👱', '👨', '👩', '👧', '👦', '👪', '👫', '👭', '👬', '👮', "🕴️", '💼', '📊', '📈', '📉', '📊', '📝', '📚', '📰', '📱', '💻', '📻', '📺', '🎬', "📽️", '📸', '📷', "🕯️", '💡', '🔦', '�', '🏯', '🏰', '🏠', '🏡', '🏢', '🏣', '🏥', '🏦', '🏧', '🏨', '🏩', '🏪', '🏫', '🏬', '🏭', '🏮', '🏯', '🚣', '🛥', '🚂', '🚁', '🚀', '🛸', '🛹', '🚴', '🚲', '🛺', '🚮', '🚯', '🚱', '🚫', '🚽', "🕳️", '💣', '🔫', "🕷️", "🕸️", '💀', '👻', '🕺', '💃', "🕴️", '👶', '👵', '👴', '👱', '👨', '👩', '👧', '👦', '👪', '👫', '👭', '👬', '👮', "🕴️", '💼', '📊', '📈', '📉', '📊', '📝', '📚', '📰', '📱', '💻', '📻', '📺', '🎬', "📽️", '📸', '📷', "🕯️", '💡', '🔦', '🔧', '🔨', '🔩', '🔪', '🔫', '👑', '👑', '👸', '🤴', '👹', '🤺', '🤻', '👺', '🤼', '🤽', '🤾', '🤿', '🦁', '🐴', '🦊', '🐺', '🐼', '🐾', '🐿', '🦄', '🦅', '🦆', '🦇', '🦈', '🐳', '🐋', '🐟', '🐠', '🐡', '🐙', '🐚', '🐜', '🐝', '🐞', "🕷️", '🦋', '🐛', '🐌', '🐚', '🌿', '🌸', '💐', '🌹', '🌺', '🌻', '🌴', '🌳', '🌲', '🌾', '🌿', '🍃', '🍂', '🍃', '🌻', '💐', '🌹', '🌺', '🌸', '🌴', '🏵', '🎀', '🏆', '🏈', '🏉', '🎯', '🏀', '🏊', '🏋', '🏌', '🎲', '📚', '📖', '📜', '📝', '💭', '💬', '🗣', '💫', '🌟', '🌠', '🎉', '🎊', '👏', '💥', '🔥', '💥', '🌪', '💨', '🌫', '🌬', '🌩', '🌨', '🌧', '🌦', '🌥', '🌡', '🌪', '🌫', '🌬', '🌩', '🌨', '🌧', '🌦', '🌥', '🌡', '🌪', '🌫', '🌬', '🌩', '🌨', '🌧', '🌦', '🌥', '🌡', '🌱', '🌿', '🍃', '🍂', '🌻', '💐', '🌹', '🌺', '🌸', '🌴', '🏵', '🎀', '🏆', '🏈', '🏉', '🎯', '🏀', '🏊', '🏋', '🏌', '🎲', '📚', '📖', '📜', '📝', '💭', '💬', '🗣', '💫', '🌟', '🌠', '🎉', '🎊', '👏', '💥', '🔥', '💥', '🌪', '💨', '🌫', '🌬', '🌩', '🌨', '🌧', '🌦', '🌥', '🌡', '🌪', '🌫', '🌬', '🌩', '🌨', '🌧', '🌦', '🌥', '🌡', "🕯️", '💡', '🔦', '🔧', '🔨', '🔩', '🔪', '🔫', '👑', '👸', '🤴', '👹', '🤺', '🤻', '👺', '🤼', '🤽', '🤾', '🤿', '🦁', '🐴', '🦊', '🐺', '🐼', '🐾', '🐿', '🦄', '🦅', '🦆', '🦇', '🦈', '🐳', '🐋', '🐟', '🐠', '🐡', '🐙', '🐚', '🐜', '🐝', '🐞', "🕷️", '🦋', '🐛', '🐌', '🐚', '🌿', '🌸', '💐', '🌹', '🌺', '🌻', '🌴', '🏵', '🏰', '🏠', '🏡', '🏢', '🏣', '🏥', '🏦', '🏧', '🏨', '🏩', '🏪', '🏫', '🏬', '🏭', '🏮', '🏯', '🚣', '🛥', '🚂', '🚁', '🚀', '🛸', '🛹', '🚴', '🚲', '🛺', '🚮', '🚯', '🚱', '🚫', '🚽', "🕳️", '💣', '🔫', "🕷️", "🕸️", '💀', '👻', '🕺', '💃', "🕴️", '👶', '👵', '👴', '👱', '👨', '👩', '👧', '👦', '👪', '👫', '👭', '👬', '👮', "🕴️", '💼', '📊', '📈', '📉', '📊', '📝', '📚', '📰', '📱', '💻', '📻', '📺', '🎬', "📽️", '📸', '📷', "🕯️", '💡', '🔦', '🔧', '🔨', '🔩', '🔪', '🔫', '👑', '👸', '🤴', '👹', '🤺', '🤻', '👺', '🤼', '🤽', '🤾', '🤿', '🦁', '🐴', '🦊', '🐺', '🐼', '🐾', '🐿', '🦄', '🦅', '🦆', '🦇', '🦈', '🐳', '🐋', '🐟', '🐠', '🐡', '🐙', '🐚', '🐜', '🐝', '🐞', "🕷️", '🦋', '🐛', '🐌', '🐚', '🌿', '🌸', '💐', '🌹', '🌺', '🌻', '🌴', '🏵', '🏰', '🐒', '🦍', '🦧', '🐶', '🐕', '🦮', "🐕‍🦺", '🐩', '🐺', '🦊', '🦝', '🐱', '🐈', "🐈‍⬛", '🦁', '🐯', '🐅', '🐆', '🐴', '🐎', '🦄', '🦓', '🦌', '🦬', '🐮', '🐂', '🐃', '🐄', '🐷', '🐖', '🐗', '🐽', '🐏', '🐑', '🐐', '🐪', '🐫', '🦙', '🦒', '🐘', '🦣', '🦏', '🦛', '🐭', '🐁', '🐀', '🐹', '🐰', '🐇', "🐿️", '🦫', '🦔', '🦇', '🐻', "🐻‍❄️", '🐨', '🐼', '🦥', '🦦', '🦨', '🦘', '🦡', '🐾', '🦃', '🐔', '🐓', '🐣', '🐤', '🐥', '🐦', '🐧', "🕊️", '🦅', '🦆', '🦢', '🦉', '🦤', '🪶', '🦩', '🦚', '🦜', '🐸', '🐊', '🐢', '🦎', '🐍', '🐲', '🐉', '🦕', '🦖', '🐳', '🐋', '🐬', '🦭', '🐟', '🐠', '😀', '😃', '😄', '😁', '😆', '😅', '🤣', '😂', '🙂', '🙃', '😉', '😊', '😇', '🥰', '😍', '🤩', '😘', '😗', '☺️', '😚', '😙', '🥲', '😋', '😛', '😜', '🤪', '😝', '🤑', '🤗', '🤭', '🤫', '🤔', '🤐', '🤨', '😐', '😑', '😶', "😶‍🌫️", '😏', '😒', '🙄', '😬', "😮‍💨", '🤥', '😌', '😔', '😪', '🤤', '😴', '😷', '🤒', '🤕', '🤢', '🤮', '🤧', '🥵', '🥶', '🥴', '😵', "😵‍💫", '🤯', '🤠', '🥳', '🥸', '😎', '🤓', '🧐', '😕', '😟', '🙁', '☹️', '😮', '😯', '😲', '😳', '🥺', '😦', '😧', '😨', '😰', '😥', '😢', '😭', '😱', '😖', '😣', '😞', '😓', '😩', '😫', '🥱', '😤', '😡', '😠', '🤬', '😈', '👿', '💀', '☠️', '💩', '🤡', '👹', '👺', '👻', '👽', '👾', '🤖', '😺', '😸', '😹', '😻', '😼', '😽', '🙀', '😿', '😾', '🙈', '🙉', '🙊', '💋', '💌', '💘', '💝', '💖', '💗', '💓', '💞', '💕', '💟', '❣️', '💔', "❤️‍🔥", "❤️‍🩹", '❤️', '🧡', '💛', '💚', '💙', '💜', '🤎', '🖤', '🤍', '💯', '💢', '💥', '💫', '💦', '💨', "🕳️", '💣', '💬', "👁️‍🗨️", "🗨️", "🗯️", '💭', '💤', '👋', '🤚', "🖐️", '✋', '🖖', '👌', '🤌', '🤏', '✌️', '🤞', '🤟', '🤘', '🤙', '👈', '👉', '👆', '🖕', '👇', '☝️', '👍', '👎', '✊', '👊', '🤛', '🤜', '👏', '🙌', '👐', '🤲', '🤝', '🙏', '✍️', '💅', '🤳', '💪', '🦾', '🦿', '🦵', '🦶', '👂', '🦻', '👃', '🧠', '🫀', '🫁', '🦷', '🦴', '👀', "👁️", '👅', '👄', '👶', '🧒', '👦', '👧', '🧑', '👱', '👨', '🧔', "🧔‍♂️", "🧔‍♀️", "👨‍🦰", "👨‍🦱", "👨‍🦳", "👨‍🦲", '👩', "👩‍🦰", "🧑‍🦰", "👩‍🦱", "🧑‍🦱", "👩‍🦳", "🧑‍🦳", "👩‍🦲", "🧑‍🦲", "👱‍♀️", "👱‍♂️", '🧓', '👴', '👵', '🙍', "🙍‍♂️", "🙍‍♀️", '🙎', "🙎‍♂️", "🙎‍♀️", '🙅', "🙅‍♂️", "🙅‍♀️", '🙆', "🙆‍♂️", "🙆‍♀️", '💁', "💁‍♂️", "💁‍♀️", '🙋', "🙋‍♂️", "🙋‍♀️", '🧏', "🧏‍♂️", "🧏‍♀️", '🙇', "🙇‍♂️", "🙇‍♀️", '🤦', "🤦‍♂️", "🤦‍♀️", '🤷', "🤷‍♂️", "🤷‍♀️", "🧑‍⚕️", "👨‍⚕️", "👩‍⚕️", "🧑‍🎓", "👨‍🎓", "👩‍🎓", "🧑‍🏫", '👨‍🏫', "👩‍🏫", "🧑‍⚖️", "👨‍⚖️", "👩‍⚖️", "🧑‍🌾", "👨‍🌾", "👩‍🌾", "🧑‍🍳", "👨‍🍳", "👩‍🍳", "🧑‍🔧", "👨‍🔧", "👩‍🔧", "🧑‍🏭", "👨‍🏭", "👩‍🏭", "🧑‍💼", "👨‍💼", "👩‍💼", "🧑‍🔬", "👨‍🔬", "👩‍🔬", "🧑‍💻", "👨‍💻", "👩‍💻", "🧑‍🎤", "👨‍🎤", "👩‍🎤", "🧑‍🎨", "👨‍🎨", "👩‍🎨", "🧑‍✈️", "👨‍✈️", "👩‍✈️", "🧑‍🚀", "👨‍🚀", "👩‍🚀", "🧑‍🚒", "👨‍🚒", "👩‍🚒", '👮', "👮‍♂️", "👮‍♀️", "🕵️", "🕵️‍♂️", "🕵️‍♀️", '💂', "💂‍♂️", "💂‍♀️", '🥷', '👷', "👷‍♂️", "👷‍♀️", '🤴', '👸', '👳', "👳‍♂️", "👳‍♀️", '👲', '🧕', '🤵', "🤵‍♂️", "🤵‍♀️", '👰', "👰‍♂️", "👰‍♀️", '🤰', '🤱', "👩‍🍼", "👨‍🍼", "🧑‍🍼", '👼', '🎅', '🤶', "🧑‍🎄", '🦸', "🦸‍♂️", "🦸‍♀️", '🦹', "🦹‍♂️", "🦹‍♀️", '🧙', "🧙‍♂️", "🧙‍♀️", '🧚', "🧚‍♂️", "🧚‍♀️", '🧛', "🧛‍♂️", "🧛‍♀️", '🧜', "🧜‍♂️", "🧜‍♀️", '🧝', "🧝‍♂️", "🧝‍♀️", '🧞', "🧞‍♂️", "🧞‍♀️", '🧟', "🧟‍♂️", "🧟‍♀️", '💆', "💆‍♂️", "💆‍♀️", '💇', "💇‍♂️", "💇‍♀️", '🚶', "🚶‍♂️", "🚶‍♀️", '🧍', "🧍‍♂️", "🧍‍♀️", '🧎', "🧎‍♂️", "🧎‍♀️", "🧑‍🦯", "👨‍🦯", "👩‍🦯", "🧑‍🦼", "👨‍🦼", "👩‍🦼", "🧑‍🦽", "👨‍🦽", "👩‍🦽", '🏃', "🏃‍♂️", "🏃‍♀️", '💃', '🕺', "🕴️", '👯', "👯‍♂️", "👯‍♀️", '🧖', "🧖‍♂️", "🧖‍♀️", '🧗', "🧗‍♂️", "🧗‍♀️", '🤺', '🏇', '⛷️', '🏂', "🏌️", "🏌️‍♂️", "🏌️‍♀️", '🏄', "🏄‍♂️", "🏄‍♀️", '🚣', "🚣‍♂️", "🚣‍♀️", '🏊', "🏊‍♂️", "🏊‍♀️", '⛹️', "⛹️‍♂️", "⛹️‍♀️", "🏋️", "🏋️‍♂️", "🏋️‍♀️", '🚴', "🚴‍♂️", '🚴‍♀️', '🚵', "🚵‍♂️", "🚵‍♀️", '🤸', "🤸‍♂️", "🤸‍♀️", '🤼', "🤼‍♂️", "🤼‍♀️", '🤽', "🤽‍♂️", "🤽‍♀️", '🤾', "🤾‍♂️", "🤾‍♀️", '🤹', "🤹‍♂️", "🤹‍♀️", '🧘', "🧘‍♂️", "🧘‍♀️", '🛀', '🛌', "🧑‍🤝‍🧑", '👭', '👫', '👬', '💏', "👩‍❤️‍💋‍👨", "👨‍❤️‍💋‍👨", "👩‍❤️‍💋‍👩", '💑', "👩‍❤️‍👨", "👨‍❤️‍👨", "👩‍❤️‍👩", '👪', "👨‍👩‍👦", "👨‍👩‍👧", "👨‍👩‍👧‍👦", "👨‍👩‍👦‍👦", "👨‍👩‍👧‍👧", "👨‍👨‍👦", '👨‍👨‍👧', "👨‍👨‍👧‍👦", "👨‍👨‍👦‍👦", "👨‍👨‍👧‍👧", "👩‍👩‍👦", "👩‍👩‍👧", "👩‍👩‍👧‍👦", "👩‍👩‍👦‍👦", "👩‍👩‍👧‍👧", "👨‍👦", "👨‍👦‍👦", "👨‍👧", "👨‍👧‍👦", "👨‍👧‍👧", "👩‍👦", "👩‍👦‍👦", "👩‍👧", "👩‍👧‍👦", "👩‍👧‍👧", "🗣️", '👤', '👥', '🫂', '👣', '🦰', '🦱', '🦳', '🦲', '🐵'];
542
+
543
+ const randomReaction = reactions[Math.floor(Math.random() * reactions.length)]; //
544
+ m.react(randomReaction);
545
+ }
546
+ }
547
+
548
+ // Owner React
549
+ if (!isReact && senderNumber === botNumber) {
550
+ if (config.AUTO_REACT === 'true') {
551
+ const reactions = ['😊', '👍', '😂', '💯', '🔥', '🙏', '🎉', '👏', '😎', '🤖', '👫', '👭', '👬', '👮', "🕴️", '💼', '📊', '📈', '📉', '📊', '📝', '📚', '📰', '📱', '💻', '📻', '📺', '🎬', "📽️", '📸', '📷', "🕯️", '💡', '🔦', '🔧', '🔨', '🔩', '🔪', '🔫', '👑', '👸', '🤴', '👹', '🤺', '🤻', '👺', '🤼', '🤽', '🤾', '🤿', '🦁', '🐴', '🦊', '🐺', '🐼', '🐾', '🐿', '🦄', '🦅', '🦆', '🦇', '🦈', '🐳', '🐋', '🐟', '🐠', '🐡', '🐙', '🐚', '🐜', '🐝', '🐞', "🕷️", '🦋', '🐛', '🐌', '🐚', '🌿', '🌸', '💐', '🌹', '🌺', '🌻', '🌴', '🏵', '🏰', '🏠', '🏡', '🏢', '🏣', '🏥', '🏦', '🏧', '🏨', '🏩', '🏪', '🏫', '🏬', '🏭', '🏮', '🏯', '🚣', '🛥', '🚂', '🚁', '🚀', '🛸', '🛹', '🚴', '🚲', '🛺', '🚮', '🚯', '🚱', '🚫', '🚽', "🕳️", '💣', '🔫', "🕷️", "🕸️", '💀', '👻', '🕺', '💃', "🕴️", '👶', '👵', '👴', '👱', '👨', '👩', '👧', '👦', '👪', '👫', '👭', '👬', '👮', "🕴️", '💼', '📊', '📈', '📉', '📊', '📝', '📚', '📰', '📱', '💻', '📻', '📺', '🎬', "📽️", '📸', '📷', "🕯️", '💡', '🔦', '🔧', '🔨', '🔩', '🔪', '🔫', '👑', '👸', '🤴', '👹', '🤺', '🤻', '👺', '🤼', '🤽', '🤾', '🤿', '🦁', '🐴', '🦊', '🐺', '🐼', '🐾', '🐿', '🦄', '🦅', '🦆', '🦇', '🦈', '🐳', '🐋', '🐟', '🐠', '🐡', '🐙', '🐚', '🐜', '🐝', '🐞', "🕷️", '🦋', '🐛', '🐌', '🐚', '🌿', '🌸', '💐', '🌹', '🌺', '🌻', '🌴', '🏵', '🏰', '🏠', '🏡', '🏢', '🏠', '🏡', '🏢', '🏣', '🏥', '🏦', '🏧', '🏨', '🏩', '🏪', '🏫', '🏬', '🏭', '🏮', '🏯', '🚣', '🛥', '🚂', '🚁', '🚀', '🛸', '🛹', '🚴', '🚲', '🛺', '🚮', '🚯', '🚱', '🚫', '🚽', "🕳️", '💣', '🔫', "🕷️", "🕸️", '💀', '👻', '🕺', '💃', "🕴️", '👶', '👵', '👴', '👱', '👨', '👩', '👧', '👦', '👪', '👫', '👭', '👬', '👮', "🕴️", '💼', '📊', '📈', '📉', '📊', '📝', '📚', '📰', '📱', '💻', '��', '📺', '🎬', "📽️", '📸', '📷', "🕯️", '💡', '🔦', '🔧', '🔨', '🔩', '🔪', '🔫', '👑', '👸', '🤴', '👹', '🤺', '🤻', '👺', '🤼', '🤽', '🤾', '🤿', '🦁', '🐴', '🦊', '🐺', '🐼', '🐾', '🐿', '🦄', '🦅', '🦆', '🦇', '🦈', '🐳', '🐋', '🐟', '🐠', '🐡', '🐙', '🐚', '🐜', '🐝', '🐞', "🕷️", '🦋', '🐛', '🐌', '🐚', '🌿', '🌸', '💐', '🌹', '🌺', '🌻', '🌴', '🏵', '🏰', '🏠', '🏡', '🏢', '🏣', '🏥', '🏦', '🏧', '🏨', '🏩', '🏪', '🏫', '🏬', '🏭', '🏮', '🏯', '🚣', '🛥', '🚂', '🚁', '🚀', '🛸', '🛹', '🚴', '🚲', '🛺', '🚮', '🚯', '🚱', '🚫', '🚽', "🕳️", '💣', '🔫', "🕷️", "🕸️", '💀', '👻', '🕺', '💃', "🕴️", '👶', '👵', '👴', '👱', '👨', '👩', '👧', '👦', '👪', '🙂', '😑', '🤣', '😍', '😘', '😗', '😙', '😚', '😛', '😝', '😞', '😟', '😠', '😡', '😢', '😭', '😓', '😳', '😴', '😌', '😆', '😂', '🤔', '😒', '😓', '😶', '🙄', '🐶', '🐱', '🐔', '🐷', '🐴', '🐲', '🐸', '🐳', '🐋', '🐒', '🐑', '🐕', '🐩', '🍔', '🍕', '🥤', '🍣', '🍲', '🍴', '🍽', '🍹', '🍸', '🎂', '📱', '📺', '📻', '🎤', '📚', '💻', '📸', '📷', '❤️', '💔', '❣️', '☀️', '🌙', '🌃', '🏠', '🚪', "🇺🇸", "🇬🇧", "🇨🇦", "🇦🇺", "🇯🇵", "🇫🇷", "🇪🇸", '👍', '👎', '👏', '👫', '👭', '👬', '👮', '🤝', '🙏', '👑', '🌻', '🌺', '🌸', '🌹', '🌴', "🏞️", '🌊', '🚗', '🚌', "🛣️", "🛫️", "🛬️", '🚣', '🛥', '🚂', '🚁', '🚀', "🏃‍♂️", "🏋️‍♀️", "🏊‍♂️", "🏄‍♂️", '🎾', '🏀', '🏈', '🎯', '🏆', '??', '⬆️', '⬇️', '⇒', '⇐', '↩️', '↪️', 'ℹ️', '‼️', '⁉️', '‽️', '©️', '®️', '™️', '🔴', '🔵', '🟢', '🔹', '🔺', '💯', '👑', '🤣', "🤷‍♂️", "🤷‍♀️", "🙅‍♂️", "🙅‍♀️", "🙆‍♂️", "🙆‍♀️", "🤦‍♂️", "🤦‍♀️", '🏻', '💆‍♂️', "💆‍♀️", "🕴‍♂️", "🕴‍♀️", "💇‍♂️", "💇‍♀️", '🚫', '🚽', "🕳️", '💣', '🔫', "🕷️", "🕸️", '💀', '👻', '🕺', '💃', "🕴️", '👶', '👵', '👴', '👱', '👨', '👩', '👧', '👦', '👪', '👫', '👭', '👬', '👮', "🕴️", '💼', '📊', '📈', '📉', '📊', '📝', '📚', '📰', '📱', '💻', '📻', '📺', '🎬', "📽️", '📸', '📷', "🕯️", '💡', '🔦', '�', '🏯', '🏰', '🏠', '🏡', '🏢', '🏣', '🏥', '🏦', '🏧', '🏨', '🏩', '🏪', '🏫', '🏬', '🏭', '🏮', '🏯', '🚣', '🛥', '🚂', '🚁', '🚀', '🛸', '🛹', '🚴', '🚲', '🛺', '🚮', '🚯', '🚱', '🚫', '🚽', "🕳️", '💣', '🔫', "🕷️", "🕸️", '💀', '👻', '🕺', '💃', "🕴️", '👶', '👵', '👴', '👱', '👨', '👩', '👧', '👦', '👪', '👫', '👭', '👬', '👮', "🕴️", '💼', '📊', '📈', '📉', '📊', '📝', '📚', '📰', '📱', '💻', '📻', '📺', '🎬', "📽️", '📸', '📷', "🕯️", '💡', '🔦', '🔧', '🔨', '🔩', '🔪', '🔫', '👑', '👑', '👸', '🤴', '👹', '🤺', '🤻', '👺', '🤼', '🤽', '🤾', '🤿', '🦁', '🐴', '🦊', '🐺', '🐼', '🐾', '🐿', '🦄', '🦅', '🦆', '🦇', '🦈', '🐳', '🐋', '🐟', '🐠', '🐡', '🐙', '🐚', '🐜', '🐝', '🐞', "🕷️", '🦋', '🐛', '🐌', '🐚', '🌿', '🌸', '💐', '🌹', '🌺', '🌻', '🌴', '🌳', '🌲', '🌾', '🌿', '🍃', '🍂', '🍃', '🌻', '💐', '🌹', '🌺', '🌸', '🌴', '🏵', '🎀', '🏆', '🏈', '🏉', '🎯', '🏀', '🏊', '🏋', '🏌', '🎲', '📚', '📖', '📜', '📝', '💭', '💬', '🗣', '💫', '🌟', '🌠', '🎉', '🎊', '👏', '💥', '🔥', '💥', '🌪', '💨', '🌫', '🌬', '🌩', '🌨', '🌧', '🌦', '🌥', '🌡', '🌪', '🌫', '🌬', '🌩', '🌨', '🌧', '🌦', '🌥', '🌡', '🌪', '🌫', '🌬', '🌩', '🌨', '🌧', '🌦', '🌥', '🌡', '🌱', '🌿', '🍃', '🍂', '🌻', '💐', '🌹', '🌺', '🌸', '🌴', '🏵', '🎀', '🏆', '🏈', '🏉', '🎯', '🏀', '🏊', '🏋', '🏌', '🎲', '📚', '📖', '📜', '📝', '💭', '💬', '🗣', '💫', '🌟', '🌠', '🎉', '🎊', '👏', '💥', '🔥', '💥', '🌪', '💨', '🌫', '🌬', '🌩', '🌨', '🌧', '🌦', '🌥', '🌡', '🌪', '🌫', '🌬', '🌩', '🌨', '🌧', '🌦', '🌥', '🌡', "🕯️", '💡', '🔦', '🔧', '🔨', '🔩', '🔪', '🔫', '👑', '👸', '🤴', '👹', '🤺', '🤻', '👺', '🤼', '🤽', '🤾', '🤿', '🦁', '🐴', '🦊', '🐺', '🐼', '🐾', '🐿', '🦄', '🦅', '🦆', '🦇', '🦈', '🐳', '🐋', '🐟', '🐠', '🐡', '🐙', '🐚', '🐜', '🐝', '🐞', "🕷️", '🦋', '🐛', '🐌', '🐚', '🌿', '🌸', '💐', '🌹', '🌺', '����', '🌴', '🏵', '🏰', '🏠', '🏡', '🏢', '🏣', '🏥', '🏦', '🏧', '🏨', '🏩', '🏪', '🏫', '🏬', '🏭', '🏮', '🏯', '🚣', '🛥', '🚂', '🚁', '🚀', '🛸', '🛹', '🚴', '🚲', '🛺', '🚮', '🚯', '🚱', '🚫', '🚽', "🕳️", '💣', '🔫', "🕷️", "🕸️", '💀', '👻', '🕺', '💃', "🕴️", '👶', '👵', '👴', '👱', '👨', '👩', '👧', '👦', '👪', '👫', '👭', '👬', '👮', "🕴️", '💼', '📊', '📈', '📉', '📊', '📝', '📚', '📰', '📱', '💻', '📻', '📺', '🎬', "📽️", '📸', '📷', "🕯️", '💡', '🔦', '🔧', '🔨', '🔩', '🔪', '🔫', '👑', '👸', '🤴', '👹', '🤺', '🤻', '👺', '🤼', '🤽', '🤾', '🤿', '🦁', '🐴', '🦊', '🐺', '🐼', '🐾', '🐿', '🦄', '🦅', '🦆', '🦇', '🦈', '🐳', '🐋', '🐟', '🐠', '🐡', '🐙', '🐚', '🐜', '🐝', '🐞', "🕷️", '🦋', '🐛', '🐌', '🐚', '🌿', '🌸', '💐', '🌹', '🌺', '🌻', '🌴', '🏵', '🏰', '🐒', '🦍', '🦧', '🐶', '🐕', '🦮', "🐕‍🦺", '🐩', '🐺', '🦊', '🦝', '🐱', '🐈', "🐈‍⬛", '🦁', '🐯', '🐅', '🐆', '🐴', '🐎', '🦄', '🦓', '🦌', '🦬', '🐮', '🐂', '🐃', '🐄', '🐷', '🐖', '🐗', '🐽', '🐏', '🐑', '🐐', '🐪', '🐫', '🦙', '🦒', '🐘', '🦣', '🦏', '🦛', '🐭', '🐁', '🐀', '🐹', '🐰', '🐇', "🐿️", '🦫', '🦔', '🦇', '🐻', "🐻‍❄️", '🐨', '🐼', '🦥', '🦦', '🦨', '🦘', '🦡', '🐾', '🦃', '🐔', '🐓', '🐣', '🐤', '🐥', '🐦', '🐧', "🕊️", '🦅', '🦆', '🦢', '🦉', '🦤', '🪶', '🦩', '🦚', '🦜', '🐸', '🐊', '🐢', '🦎', '🐍', '🐲', '🐉', '🦕', '🦖', '🐳', '🐋', '🐬', '🦭', '🐟', '🐠', '😀', '😃', '😄', '😁', '😆', '😅', '🤣', '😂', '🙂', '🙃', '😉', '😊', '😇', '🥰', '😍', '🤩', '😘', '😗', '☺️', '😚', '😙', '🥲', '😋', '😛', '😜', '🤪', '😝', '🤑', '🤗', '🤭', '🤫', '🤔', '🤐', '🤨', '😐', '😑', '😶', "😶‍🌫️", '😏', '😒', '🙄', '😬', "😮‍💨", '🤥', '😌', '😔', '😪', '🤤', '😴', '😷', '🤒', '🤕', '🤢', '🤮', '🤧', '🥵', '🥶', '🥴', '😵', "😵‍💫", '🤯', '🤠', '🥳', '🥸', '😎', '🤓', '🧐', '😕', '😟', '🙁', '☹️', '😮', '😯', '😲', '😳', '🥺', '😦', '😧', '😨', '😰', '😥', '😢', '😭', '😱', '😖', '😣', '😞', '😓', '😩', '😫', '🥱', '😤', '😡', '😠', '🤬', '😈', '👿', '💀', '☠️', '💩', '🤡', '👹', '👺', '👻', '👽', '👾', '🤖', '😺', '😸', '😹', '😻', '😼', '😽', '🙀', '😿', '😾', '🙈', '🙉', '🙊', '💋', '💌', '💘', '💝', '💖', '💗', '💓', '💞', '💕', '💟', '❣️', '💔', "❤️‍🔥", "❤️‍🩹", '❤️', '🧡', '💛', '💚', '💙', '💜', '🤎', '🖤', '🤍', '💯', '💢', '💥', '💫', '💦', '💨', "🕳️", '💣', '💬', "👁️‍🗨️", "🗨️", "🗯️", '💭', '💤', '👋', '🤚', "🖐️", '✋', '🖖', '👌', '🤌', '🤏', '✌️', '🤞', '🤟', '🤘', '🤙', '👈', '👉', '👆', '🖕', '👇', '☝️', '👍', '👎', '✊', '👊', '🤛', '🤜', '👏', '🙌', '👐', '🤲', '🤝', '🙏', '✍️', '💅', '🤳', '💪', '🦾', '🦿', '🦵', '🦶', '👂', '🦻', '👃', '🧠', '🫀', '🫁', '🦷', '🦴', '👀', "👁️", '👅', '👄', '👶', '🧒', '👦', '👧', '🧑', '👱', '👨', '🧔', "🧔‍♂️", "🧔‍♀️", "👨‍🦰", "👨‍🦱", "👨‍🦳", "👨‍🦲", '👩', "👩‍🦰", "🧑‍🦰", "👩‍🦱", "🧑‍🦱", "👩‍🦳", "🧑‍🦳", "👩‍🦲", "🧑‍🦲", "👱‍♀️", "👱‍♂️", '🧓', '👴', '👵', '🙍', "🙍‍♂️", "🙍‍♀️", '🙎', "🙎‍♂️", "🙎‍♀️", '🙅', "🙅‍♂️", "🙅‍♀️", '🙆', "🙆‍♂️", "🙆‍♀️", '💁', "💁‍♂️", "💁‍♀️", '🙋', "🙋‍♂️", "🙋‍♀️", '🧏', "🧏‍♂️", "🧏‍♀️", '🙇', "🙇‍♂️", "🙇‍♀️", '🤦', "🤦‍♂️", "🤦‍♀️", '🤷', "🤷‍♂️", "🤷‍♀️", "🧑‍⚕️", "👨‍⚕️", "👩‍⚕️", "🧑‍🎓", "👨‍🎓", "👩‍🎓", "🧑‍🏫", '👨‍🏫', "👩‍🏫", "🧑‍⚖️", "👨‍⚖️", "👩‍⚖️", "🧑‍🌾", "👨‍🌾", "👩‍🌾", "🧑‍🍳", "👨‍🍳", "👩‍🍳", "🧑‍🔧", "👨‍🔧", "👩‍🔧", "🧑‍🏭", "👨‍🏭", "👩‍🏭", "🧑‍💼", "👨‍💼", "👩‍💼", "🧑‍🔬", "👨‍🔬", "👩‍🔬", "🧑‍💻", "👨‍💻", "👩‍💻", "🧑‍🎤", "👨‍🎤", "👩‍🎤", "🧑‍🎨", "👨‍🎨", "👩‍🎨", "🧑‍✈️", "👨‍✈️", "👩‍✈️", "🧑‍🚀", "👨‍🚀", "👩‍🚀", "🧑‍🚒", "👨‍🚒", "👩‍🚒", '👮', "👮‍♂️", "���‍♀️", "🕵️", "🕵️‍♂️", "🕵️‍♀️", '💂', "💂‍♂️", "💂‍♀️", '🥷', '👷', "👷‍♂️", "👷‍♀️", '🤴', '👸', '👳', "👳‍♂️", "👳‍♀️", '👲', '🧕', '🤵', "🤵‍♂️", "🤵‍♀️", '👰', "👰‍♂️", "👰‍♀️", '🤰', '🤱', "👩‍🍼", "👨‍🍼", "🧑‍🍼", '👼', '🎅', '🤶', "🧑‍🎄", '🦸', "🦸‍♂️", "🦸‍♀️", '🦹', "🦹‍♂️", "🦹‍♀️", '🧙', "🧙‍♂️", "🧙‍♀️", '🧚', "🧚‍♂️", "🧚‍♀️", '🧛', "🧛‍♂️", "🧛‍♀️", '🧜', "🧜‍♂️", "🧜‍♀️", '🧝', "🧝‍♂️", "🧝‍♀️", '🧞', "🧞‍♂️", "🧞‍♀️", '🧟', "🧟‍♂️", "🧟‍♀️", '💆', "💆‍♂️", "💆‍♀️", '💇', "💇‍♂️", "💇‍♀️", '🚶', "🚶‍♂️", "🚶‍♀️", '🧍', "🧍‍♂️", "🧍‍♀️", '🧎', "🧎‍♂️", "🧎‍♀️", "🧑‍🦯", "👨‍🦯", "👩‍🦯", "🧑‍🦼", "👨‍🦼", "👩‍🦼", "🧑‍🦽", "👨‍🦽", "👩‍🦽", '🏃', "🏃‍♂️", "🏃‍♀️", '💃', '🕺', "🕴️", '👯', "👯‍♂️", "👯‍♀️", '🧖', "🧖‍♂️", "🧖‍♀️", '🧗', "🧗‍♂️", "🧗‍♀️", '🤺', '🏇', '⛷️', '🏂', "🏌️", "🏌️‍♂️", "🏌️‍♀️", '🏄', "🏄‍♂️", "🏄‍♀️", '🚣', "🚣‍♂️", "🚣‍♀️", '🏊', "🏊‍♂️", "🏊‍♀️", '⛹️', "⛹️‍♂️", "⛹️‍♀️", "🏋️", "🏋️‍♂️", "🏋️‍♀️", '🚴', "🚴‍♂️", '🚴‍♀️', '🚵', "🚵‍♂️", "🚵‍♀️", '🤸', "🤸‍♂️", "🤸‍♀️", '🤼', "🤼‍♂️", "🤼‍♀️", '🤽', "🤽‍♂️", "🤽‍♀️", '🤾', "🤾‍♂️", "🤾‍♀️", '🤹', "🤹‍♂️", "🤹‍♀️", '🧘', "🧘‍♂️", "🧘‍♀️", '🛀', '🛌', "🧑‍🤝‍🧑", '👭', '👫', '👬', '💏', "👩‍❤️‍💋‍👨", "👨‍❤️‍💋‍👨", "👩‍❤️‍💋‍👩", '💑', "👩‍❤️‍👨", "👨‍❤️‍👨", "👩‍❤️‍👩", '👪', "👨‍👩‍👦", "👨‍👩‍👧", "👨‍👩‍👧‍👦", "👨‍👩‍👦‍👦", "👨‍👩‍👧‍👧", "👨‍👨‍👦", '👨‍👨‍👧', "👨‍👨‍👧‍👦", "👨‍👨‍👦‍👦", "👨‍👨‍👧‍👧", "👩‍👩‍👦", "👩‍👩‍👧", "👩‍👩‍👧‍👦", "👩‍👩‍👦‍👦", "👩‍👩‍👧‍👧", "👨‍👦", "👨‍👦‍👦", "👨‍👧", "👨‍👧‍👦", "👨‍👧‍👧", "👩‍👦", "👩‍👦‍👦", "👩‍👧", "👩‍👧‍👦", "👩‍👧‍👧", "🗣️", '👤', '👥', '🫂', '👣', '🦰', '🦱', '🦳', '🦲', '🐵'];
552
+ const randomOwnerReaction = reactions[Math.floor(Math.random() * reactions.length)]; //
553
+ m.react(randomOwnerReaction);
554
+ }
555
+ }
556
+
557
+ // custum react settings
558
+
559
+ if (!isReact && senderNumber !== botNumber) {
560
+ if (config.CUSTOM_REACT === 'true') {
561
+ // Use custom emojis from the configuration
562
+ const reactions = (config.CUSTOM_REACT_EMOJIS || '🎐,🎊,🎉,❄️,🌟').split(',');
563
+ const randomReaction = reactions[Math.floor(Math.random() * reactions.length)];
564
+ m.react(randomReaction);
565
+ }
566
+ }
567
+
568
+ if (!isReact && senderNumber === botNumber) {
569
+ if (config.CUSTOM_REACT === 'true') {
570
+ // Use custom emojis from the configuration
571
+ const reactions = (config.CUSTOM_REACT_EMOJIS || '🎐,🎊,🎉,❄️,🌟').split(',');
572
+ const randomReaction = reactions[Math.floor(Math.random() * reactions.length)];
573
+ m.react(randomReaction);
574
+ }
575
+ }
576
+ //==========WORKTYPE============
577
+ if(!isOwner && config.MODE === "private") return
578
+ if(!isOwner && isGroup && config.MODE === "inbox") return
579
+ if(!isOwner && !isGroup && config.MODE === "groups") return
580
+
581
+ // take commands
582
+
583
+ const events = require('./command')
584
+ const cmdName = isCmd ? body.slice(1).trim().split(" ")[0].toLowerCase() : false;
585
+ if (isCmd) {
586
+ const cmd = events.commands.find((cmd) => cmd.pattern === (cmdName)) || events.commands.find((cmd) => cmd.alias && cmd.alias.includes(cmdName))
587
+ if (cmd) {
588
+ if (cmd.react) conn.sendMessage(from, { react: { text: cmd.react, key: mek.key }})
589
+
590
+ try {
591
+ cmd.function(conn, mek, m,{from, quoted, body, isCmd, command, args, q, isGroup, sender, senderNumber, botNumber2, botNumber, pushname, isMe, isOwner, groupMetadata, groupName, participants, groupAdmins, isBotAdmins, isAdmins, reply});
592
+ } catch (e) {
593
+ console.error("[PLUGIN ERROR] " + e);
594
+ }
595
+ }
596
+ }
597
+ events.commands.map(async(command) => {
598
+ if (body && command.on === "body") {
599
+ command.function(conn, mek, m,{from, l, quoted, body, isCmd, command, args, q, isGroup, sender, senderNumber, botNumber2, botNumber, pushname, isMe, isOwner, groupMetadata, groupName, participants, groupAdmins, isBotAdmins, isAdmins, reply})
600
+ } else if (mek.q && command.on === "text") {
601
+ command.function(conn, mek, m,{from, l, quoted, body, isCmd, command, args, q, isGroup, sender, senderNumber, botNumber2, botNumber, pushname, isMe, isOwner, groupMetadata, groupName, participants, groupAdmins, isBotAdmins, isAdmins, reply})
602
+ } else if (
603
+ (command.on === "image" || command.on === "photo") &&
604
+ mek.type === "imageMessage"
605
+ ) {
606
+ command.function(conn, mek, m,{from, l, quoted, body, isCmd, command, args, q, isGroup, sender, senderNumber, botNumber2, botNumber, pushname, isMe, isOwner, groupMetadata, groupName, participants, groupAdmins, isBotAdmins, isAdmins, reply})
607
+ } else if (
608
+ command.on === "sticker" &&
609
+ mek.type === "stickerMessage"
610
+ ) {
611
+ command.function(conn, mek, m,{from, l, quoted, body, isCmd, command, args, q, isGroup, sender, senderNumber, botNumber2, botNumber, pushname, isMe, isOwner, groupMetadata, groupName, participants, groupAdmins, isBotAdmins, isAdmins, reply})
612
+ }});
613
+
614
+ })
615
+ }
616
+
617
+ app.get("/", (req, res) => {
618
+ res.send("[ 🤖 ] SUBZERO MD BOT ONLINE ✅");
619
+ });
620
+ app.listen(port, () => console.log(`Server listening on port http://localhost:${port}`));
621
+ setTimeout(() => {
622
+ connectToWA()
623
+ }, 4000);
624
+
package.json ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "SUBZERO-MD",
3
+ "version": "1.0.3",
4
+ "description": "THE BEST BOT IN THE UNIVERSE",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "start": "pm2 start index.js --deep-monitoring --attach --name SUBZERO-MD",
8
+ "stop": "pm2 stop SUBZERO-MD",
9
+ "restart": "pm2 restart SUBZERO-MD"
10
+ },
11
+ "dependencies": {
12
+ "@whiskeysockets/baileys": "6.6.0",
13
+ "@adiwajshing/keyed-db": "^0.2.4",
14
+ "@dark-yasiya/yt-dl.js": "1.0.5",
15
+ "pino": "^7.0.5",
16
+ "pm2": "^5.2.0",
17
+ "util": "^0.12.4",
18
+ "express": "latest",
19
+ "axios": "^1.2.5",
20
+ "crypto-digest-sync": "^1.0.0",
21
+ "crypto-js": "latest",
22
+ "file_size_url": "1.0.4",
23
+ "fs-extra": "^11.1.0",
24
+ "fs": "^0.0.1-security",
25
+ "ffmpeg": "^0.0.4",
26
+ "file-type": "^16.5.3",
27
+ "fluent-ffmpeg": "^2.1.2",
28
+ "form-data": "^4.0.0",
29
+ "google-tts-api": "^2.0.2",
30
+ "path": "^0.12.7",
31
+ "node-fetch": "^2.6.1",
32
+ "btch-downloader": "^2.2.9",
33
+ "megajs": "^1.1.0",
34
+ "wa_set_pkg": "1.0.5",
35
+ "wa-sticker-formatter": "^4.4.4",
36
+ "path": "^0.12.7",
37
+ "vm": "^0.1.0",
38
+ "cheerio": "^1.0.0-rc.12",
39
+ "ruhend-scraper" : "8.0.3",
40
+ "qrcode-terminal": "^0.12.0",
41
+ "wikipedia":"2.1.2",
42
+ "yt-search":"2.11.1",
43
+ "api-dylux":"1.8.5",
44
+ "@mrnima/tiktok-downloader":"1.0.0",
45
+ "@mrnima/facebook-downloader":"1.0.0",
46
+ "mrnima-moviedl":"1.0.0"
47
+ }
48
+ }