├── LICENSE
├── README.md
├── commands
├── moderation.js
└── profilecommands.js
├── configFiles
└── hm.txt
├── index.js
├── lib
├── NSFW.json
├── NoLink.json
├── Simsimi.json
├── admin.json
├── antilink.json
├── antistiker.json
├── asupan.json
├── bad.json
├── badword.json
├── ban.js
├── banned.json
├── brainly.js
├── cekResi.js
├── color.js
├── dare.js
├── data
│ ├── group.json
│ └── regis.json
├── database
│ ├── NoLink.json
│ ├── Simsimi.json
│ ├── VipUser.json
│ ├── a
│ ├── admin.json
│ ├── bad.json
│ ├── badword.json
│ ├── banned.json
│ ├── husbu.json
│ ├── left.json
│ ├── limit.json
│ ├── msgLimit.json
│ ├── muted.json
│ ├── nsfwz.json
│ ├── prefix.json
│ ├── quote.json
│ ├── setting.json
│ ├── vip.json
│ └── welcome.json
├── downloader.js
├── fetcher.js
├── functions.js
├── help.js
├── husbu.json
├── imageProcessing.js
├── images.js
├── index.js
├── kasar.js
├── kataksr.json
├── left.js
├── left.json
├── limit.json
├── medialimit.json
├── meme.js
├── msgFilter.js
├── msgLimit.json
├── muted.json
├── nekopoi.js
├── ngegas.json
├── nobg.js
├── nobw.json
├── nsfww.js
├── nsfwz.json
├── poll.js
├── quote.js
├── quote.json
├── rugaApi.js
├── say.json
├── setting.json
├── shortener.js
├── tod.json
├── truth.js
├── ttp.js
├── user.json
├── welcome.js
└── welcome.json
├── media
├── aswu.mp4
├── aswu.mp4__tmp__palette_1605939035042.png
├── aswu.mp4__tmp__palette_1606316598984.png
├── bgjg.mp3
├── img
│ ├── Kaguya.png
│ ├── before.jpg
│ ├── nimek.jpg
│ ├── origin.jpg
│ ├── result.png
│ ├── screenshot.jpeg
│ └── tutod.jpg
├── iri.mp3
├── nobg.png
├── output.gif
├── output.mp3
├── sticker
│ ├── .jpeg
│ ├── arap.jpeg
│ ├── aswu.mp4
│ ├── b
│ ├── cya.jpeg
│ ├── hai_cewe.jpeg
│ ├── ketawa.jpeg
│ ├── output.gif
│ ├── pukul.jpeg
│ └── santet.jpeg
├── tarekses.mp3
├── tts.mp3
├── tts
│ ├── nope.txt
│ └── tts.mp3
└── welot.mp3
├── msgHndlr.js
├── options.js
├── package.json
├── quote
└── compressed.jpeg
├── run.js
└── utils
├── fetcher.js
├── imageProcessing.js
├── index.js
└── stat.json
/LICENSE:
--------------------------------------------------------------------------------
1 |
2 | Apache License
3 | Version 2.0, January 2004
4 | http://www.apache.org/licenses/
5 |
6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7 |
8 | 1. Definitions.
9 |
10 | "License" shall mean the terms and conditions for use, reproduction,
11 | and distribution as defined by Sections 1 through 9 of this document.
12 |
13 | "Licensor" shall mean the copyright owner or entity authorized by
14 | the copyright owner that is granting the License.
15 |
16 | "Legal Entity" shall mean the union of the acting entity and all
17 | other entities that control, are controlled by, or are under common
18 | control with that entity. For the purposes of this definition,
19 | "control" means (i) the power, direct or indirect, to cause the
20 | direction or management of such entity, whether by contract or
21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
22 | outstanding shares, or (iii) beneficial ownership of such entity.
23 |
24 | "You" (or "Your") shall mean an individual or Legal Entity
25 | exercising permissions granted by this License.
26 |
27 | "Source" form shall mean the preferred form for making modifications,
28 | including but not limited to software source code, documentation
29 | source, and configuration files.
30 |
31 | "Object" form shall mean any form resulting from mechanical
32 | transformation or translation of a Source form, including but
33 | not limited to compiled object code, generated documentation,
34 | and conversions to other media types.
35 |
36 | "Work" shall mean the work of authorship, whether in Source or
37 | Object form, made available under the License, as indicated by a
38 | copyright notice that is included in or attached to the work
39 | (an example is provided in the Appendix below).
40 |
41 | "Derivative Works" shall mean any work, whether in Source or Object
42 | form, that is based on (or derived from) the Work and for which the
43 | editorial revisions, annotations, elaborations, or other modifications
44 | represent, as a whole, an original work of authorship. For the purposes
45 | of this License, Derivative Works shall not include works that remain
46 | separable from, or merely link (or bind by name) to the interfaces of,
47 | the Work and Derivative Works thereof.
48 |
49 | "Contribution" shall mean any work of authorship, including
50 | the original version of the Work and any modifications or additions
51 | to that Work or Derivative Works thereof, that is intentionally
52 | submitted to Licensor for inclusion in the Work by the copyright owner
53 | or by an individual or Legal Entity authorized to submit on behalf of
54 | the copyright owner. For the purposes of this definition, "submitted"
55 | means any form of electronic, verbal, or written communication sent
56 | to the Licensor or its representatives, including but not limited to
57 | communication on electronic mailing lists, source code control systems,
58 | and issue tracking systems that are managed by, or on behalf of, the
59 | Licensor for the purpose of discussing and improving the Work, but
60 | excluding communication that is conspicuously marked or otherwise
61 | designated in writing by the copyright owner as "Not a Contribution."
62 |
63 | "Contributor" shall mean Licensor and any individual or Legal Entity
64 | on behalf of whom a Contribution has been received by Licensor and
65 | subsequently incorporated within the Work.
66 |
67 | 2. Grant of Copyright License. Subject to the terms and conditions of
68 | this License, each Contributor hereby grants to You a perpetual,
69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70 | copyright license to reproduce, prepare Derivative Works of,
71 | publicly display, publicly perform, sublicense, and distribute the
72 | Work and such Derivative Works in Source or Object form.
73 |
74 | 3. Grant of Patent License. Subject to the terms and conditions of
75 | this License, each Contributor hereby grants to You a perpetual,
76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77 | (except as stated in this section) patent license to make, have made,
78 | use, offer to sell, sell, import, and otherwise transfer the Work,
79 | where such license applies only to those patent claims licensable
80 | by such Contributor that are necessarily infringed by their
81 | Contribution(s) alone or by combination of their Contribution(s)
82 | with the Work to which such Contribution(s) was submitted. If You
83 | institute patent litigation against any entity (including a
84 | cross-claim or counterclaim in a lawsuit) alleging that the Work
85 | or a Contribution incorporated within the Work constitutes direct
86 | or contributory patent infringement, then any patent licenses
87 | granted to You under this License for that Work shall terminate
88 | as of the date such litigation is filed.
89 |
90 | 4. Redistribution. You may reproduce and distribute copies of the
91 | Work or Derivative Works thereof in any medium, with or without
92 | modifications, and in Source or Object form, provided that You
93 | meet the following conditions:
94 |
95 | (a) You must give any other recipients of the Work or
96 | Derivative Works a copy of this License; and
97 |
98 | (b) You must cause any modified files to carry prominent notices
99 | stating that You changed the files; and
100 |
101 | (c) You must retain, in the Source form of any Derivative Works
102 | that You distribute, all copyright, patent, trademark, and
103 | attribution notices from the Source form of the Work,
104 | excluding those notices that do not pertain to any part of
105 | the Derivative Works; and
106 |
107 | (d) If the Work includes a "NOTICE" text file as part of its
108 | distribution, then any Derivative Works that You distribute must
109 | include a readable copy of the attribution notices contained
110 | within such NOTICE file, excluding those notices that do not
111 | pertain to any part of the Derivative Works, in at least one
112 | of the following places: within a NOTICE text file distributed
113 | as part of the Derivative Works; within the Source form or
114 | documentation, if provided along with the Derivative Works; or,
115 | within a display generated by the Derivative Works, if and
116 | wherever such third-party notices normally appear. The contents
117 | of the NOTICE file are for informational purposes only and
118 | do not modify the License. You may add Your own attribution
119 | notices within Derivative Works that You distribute, alongside
120 | or as an addendum to the NOTICE text from the Work, provided
121 | that such additional attribution notices cannot be construed
122 | as modifying the License.
123 |
124 | You may add Your own copyright statement to Your modifications and
125 | may provide additional or different license terms and conditions
126 | for use, reproduction, or distribution of Your modifications, or
127 | for any such Derivative Works as a whole, provided Your use,
128 | reproduction, and distribution of the Work otherwise complies with
129 | the conditions stated in this License.
130 |
131 | 5. Submission of Contributions. Unless You explicitly state otherwise,
132 | any Contribution intentionally submitted for inclusion in the Work
133 | by You to the Licensor shall be under the terms and conditions of
134 | this License, without any additional terms or conditions.
135 | Notwithstanding the above, nothing herein shall supersede or modify
136 | the terms of any separate license agreement you may have executed
137 | with Licensor regarding such Contributions.
138 |
139 | 6. Trademarks. This License does not grant permission to use the trade
140 | names, trademarks, service marks, or product names of the Licensor,
141 | except as required for reasonable and customary use in describing the
142 | origin of the Work and reproducing the content of the NOTICE file.
143 |
144 | 7. Disclaimer of Warranty. Unless required by applicable law or
145 | agreed to in writing, Licensor provides the Work (and each
146 | Contributor provides its Contributions) on an "AS IS" BASIS,
147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148 | implied, including, without limitation, any warranties or conditions
149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150 | PARTICULAR PURPOSE. You are solely responsible for determining the
151 | appropriateness of using or redistributing the Work and assume any
152 | risks associated with Your exercise of permissions under this License.
153 |
154 | 8. Limitation of Liability. In no event and under no legal theory,
155 | whether in tort (including negligence), contract, or otherwise,
156 | unless required by applicable law (such as deliberate and grossly
157 | negligent acts) or agreed to in writing, shall any Contributor be
158 | liable to You for damages, including any direct, indirect, special,
159 | incidental, or consequential damages of any character arising as a
160 | result of this License or out of the use or inability to use the
161 | Work (including but not limited to damages for loss of goodwill,
162 | work stoppage, computer failure or malfunction, or any and all
163 | other commercial damages or losses), even if such Contributor
164 | has been advised of the possibility of such damages.
165 |
166 | 9. Accepting Warranty or Additional Liability. While redistributing
167 | the Work or Derivative Works thereof, You may choose to offer,
168 | and charge a fee for, acceptance of support, warranty, indemnity,
169 | or other liability obligations and/or rights consistent with this
170 | License. However, in accepting such obligations, You may act only
171 | on Your own behalf and on Your sole responsibility, not on behalf
172 | of any other Contributor, and only if You agree to indemnify,
173 | defend, and hold each Contributor harmless for any liability
174 | incurred by, or claims asserted against, such Contributor by reason
175 | of your accepting any such warranty or additional liability.
176 |
177 | END OF TERMS AND CONDITIONS
178 |
179 | APPENDIX: How to apply the Apache License to your work.
180 |
181 | To apply the Apache License to your work, attach the following
182 | boilerplate notice, with the fields enclosed by brackets "[]"
183 | replaced with your own identifying information. (Don't include
184 | the brackets!) The text should be enclosed in the appropriate
185 | comment syntax for the file format. We also recommend that a
186 | file or class name and description of purpose be included on the
187 | same "printed page" as the copyright notice for easier
188 | identification within third-party archives.
189 |
190 | Copyright [2020] [MhankBarBar]
191 |
192 | Licensed under the Apache License, Version 2.0 (the "License");
193 | you may not use this file except in compliance with the License.
194 | You may obtain a copy of the License at
195 |
196 | http://www.apache.org/licenses/LICENSE-2.0
197 |
198 | Unless required by applicable law or agreed to in writing, software
199 | distributed under the License is distributed on an "AS IS" BASIS,
200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201 | See the License for the specific language governing permissions and
202 | limitations under the License.
203 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | ## Information
4 |
5 | - Change ownerNumber in msgHndlr.js to be your number
6 | ownerNumber = "62812xxxxxx@c.us"
7 | - Change adminNumber in admin.json to be your number
8 | [] -> ["62812xxxxxx@c.us"]
9 | - Set your limit, medialimit, prefix, etc at ./lib/setting
10 | - Add your blacklist word at ./lib/kataksr.json but you can add manually with ${prefix}addbadword
11 |
12 | ## Contact
13 |
14 | If you find some bugs please contact the WhatsApp number on Contact
15 |
16 | - [Whatsapp](https://wa.me/6281281817375)
17 | - [BOT WA](https://wa.me/6282115089860)
18 | - [GROUP WA](https://chat.whatsapp.com/LuZkEtgJz4kI6cOkAeHL5j)
19 |
20 | ## APIKEY
21 |
22 | Open msgHndlr.js then edit & paste it in YOUR_APIKEY
23 | - [VHTEAR](https://api.vhtear.com)
24 | - [MHANKBARBAR](https://mhankbarbar.herokuapp.com/api)
25 |
26 | Open ./lib/functions.js edit vhtear with your VHTEARKEY
27 |
28 | ## Donate
29 |
30 | - [SAWERIA](https://saweria.co/bdrsmsdn)
31 | - [TRAKTEER](https://trakteer.id/bdrsmsdn)
32 | - [OVO/DANA/GOPAY](081281817375)
33 | - [BCA](8480792000) an Badra Samsudin Ramdan N
34 |
35 | Jangan lupa follow instagramku yaa! https://instagram.com/bdrsmsdn
36 |
37 | ## Getting Started
38 |
39 | ### This project require NodeJS v14.
40 |
41 | ### Install
42 | Clone this project
43 |
44 | ```bash
45 | > git clone https://github.com/Angga23Bot/lucya-bot.git
46 | > cd lucya-bot
47 | ```
48 |
49 | Install the dependencies:
50 |
51 | ```bash
52 | > npm install
53 | > npm install -g pm2
54 | ```
55 |
56 | ### How to Install FFMPEG
57 | Just check Tobz Github XD
58 | - [TobyG74](https://github.com/TobyG74/ElainaBOT)
59 |
60 | ### Usage
61 | 1. run the Whatsapp bot
62 |
63 | ```bash
64 | > pm2 start run.js
65 | > pm2 monit
66 | ```
67 | 2. stop the Whatsapp bot
68 |
69 | ```bash
70 | > pm2 stop run.js
71 | ```
72 |
73 | after running it you need to scan the qr
74 |
75 |
76 |
77 | | All User | Feature |
78 | | :------------: | :---------------------------------------------: |
79 | | ✅ | Registration before use this bot |
80 |
81 | | Sticker Creator | Feature |
82 | | :-----------: | :--------------------------------: |
83 | | ✅ | Sticker With Image |
84 | | ✅ | Sticker With Gif |
85 | | ✅ | Sticker With Image Url |
86 | | ✅ | Sticker With Gif Url |
87 | | ✅ | Image To Sticker |
88 | | ✅ | Text To Picture |
89 | | and | Others... |
90 |
91 | | Downloader | Feature |
92 | | :------------: | :---------------------------------------------: |
93 | | ✅ | YouTube Video/Audio Downloader |
94 | | ✅ | Doujin Downloader |
95 | | ✅ | Instagram Video/Image Downloader |
96 | | ✅ | Facebook Video Downloader |
97 | | ✅ | Tiktok Downloader |
98 | | ✅ | Twitter Downloader |
99 | | ✅ | Smule Mp3 Downloader |
100 | | ✅ | Starmaker Video Downloader |
101 | | ✅ | Xnxx Video Downloader |
102 | | ✅ | Joox Downloader |
103 | | ✅ | Play Youtube in audio format |
104 | | and | Others... |
105 |
106 | | Kerang Ajaib | Feature |
107 | | :------------: | :---------------------------------------------: |
108 | | ✅ | Apakah |
109 | | ✅ | Bisakah |
110 | | ✅ | Rate |
111 | | ✅ | Kapankah |
112 |
113 | | Poll Menu | Feature |
114 | | :------------: | :---------------------------------------------: |
115 | | ✅ | Add Poll |
116 | | ✅ | Add Candidates |
117 | | ✅ | Vote |
118 | | ✅ | Poll Result |
119 |
120 | | Media | Feature |
121 | | :------------: | :---------------------------------------------: |
122 | | ✅ | Get a random meme |
123 | | ✅ | Text to speech |
124 | | ✅ | Get a random waifu images |
125 | | ✅ | Get a random quotes |
126 | | ✅ | Get a random anime quotes |
127 | | ✅ | Get info gempa from BMKG |
128 | | ✅ | Weather's report's |
129 | | ✅ | Wikipedia |
130 | | ✅ | Youtube |
131 | | ✅ | Google |
132 | | ✅ | Pinterest |
133 | | ✅ | Anime searcher |
134 | | ✅ | Google Image |
135 | | ✅ | Couple Fortune Telling |
136 | | ✅ | Chord |
137 | | ✅ | Prayer Times |
138 | | ✅ | Lyrics |
139 | | ✅ | Textmaker |
140 | | ✅ | Instagram Stalk |
141 | | ✅ | Tiktok Stalk |
142 | | ✅ | Smule Stalk |
143 | | ✅ | Write in Image |
144 | | ✅ | Weather Information |
145 | | ✅ | Get a random cat images |
146 | | ✅ | Get a random dog images |
147 | | and | Others... |
148 |
149 |
150 | | Group Only | Feature |
151 | | :------------: | :---------------------------------------------: |
152 | | ✅ | Promote User |
153 | | ✅ | Demote User |
154 | | ✅ | Kick User |
155 | | ✅ | Add User |
156 | | ✅ | Mention All User |
157 | | ✅ | Get link group |
158 | | ✅ | Get Admin list |
159 | | ✅ | Listblock |
160 | | ✅ | Listbanned |
161 | | ✅ | Listgroup |
162 | | ✅ | Get Admin list |
163 | | ✅ | Get owner group |
164 | | ✅ | Get group info |
165 | | ✅ | enable or disable nsfw command|
166 | | ✅ | enable or disable simi command|
167 | | ✅ | enable or disable welcome feature|
168 | | ✅ | enable or disable left feature|
169 | | ✅ | enable or disable no link feature|
170 | | ✅ | enable or disable no badword feature|
171 | | and | Others... |
172 |
173 | | Premium Commands | Feature |
174 | | :------------: | :---------------------------------------------: |
175 | | ✅ | Music |
176 | | ✅ | Get Music |
177 | | ✅ | Video |
178 | | ✅ | Get Video |
179 | | ✅ | Convert Video to Mp3 |
180 | | ✅ | Distord an audio |
181 | | and | Others... |
182 |
183 | | NSFW Commands | Feature |
184 | | :------------: | :---------------------------------------------: |
185 | | ✅ | Lewds |
186 | | ✅ | Fetish |
187 | | ✅ | Nhentai |
188 | | ✅ | Pornhub Downloader |
189 | | and | Others... |
190 |
191 | | Anonymous Chat Commands | Feature |
192 | | :------------: | :---------------------------------------------: |
193 | | ✅ | Registration |
194 | | ✅ | Send Message |
195 | | ✅ | List Number |
196 | | ✅ | Remove Number |
197 |
198 | | Owner Group Only | Feature |
199 | | :------------: | :---------------------------------------------: |
200 | | ✅ | Kick All Member Group |
201 |
202 | | Owner Bot Only | Feature |
203 | | :------------: | :---------------------------------------------: |
204 | | ✅ | Leave all group |
205 | | ✅ | Clear all message |
206 | | ✅ | Broadcast |
207 | | ✅ | Getses |
208 | | ✅ | Banchat |
209 | | ✅ | Maintenance |
210 | | ✅ | Add Premium |
211 | | ✅ | Del Premium |
212 | | ✅ | Block |
213 | | ✅ | Unblock |
214 | | ✅ | Join Group |
215 | | ✅ | Set Prefix |
216 | | ✅ | Set Limit |
217 | | and | Others... |
218 |
219 | ---
220 |
221 | ## Troubleshooting
222 | Make sure all the necessary dependencies are installed: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md
223 |
224 | Fix Stuck on linux, install google chrome stable:
225 | ```bash
226 | > wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
227 | > sudo apt install ./google-chrome-stable_current_amd64.deb
228 | ```
229 |
230 | ## 🙏Special Thanks To
231 |
232 | Allah SWT
233 | https://github.com/open-wa/wa-automate-nodejs
234 | https://github.com/MhankBarBar/whatsapp-bot
235 | https://github.com/ItzNgga/wa-bot
236 | https://github.com/TobyG74
237 | https://github.com/Angga23Bot
238 |
239 |
--------------------------------------------------------------------------------
/commands/moderation.js:
--------------------------------------------------------------------------------
1 | function ban(client, from, quotedMsg) {
2 | if (quotedMsg) {
3 | client.sendText(from, 'baned');
4 | return true;
5 | }
6 | }
7 |
8 | module.exports = {
9 | ban,
10 | }
--------------------------------------------------------------------------------
/commands/profilecommands.js:
--------------------------------------------------------------------------------
1 | var level = require('level')
2 |
3 | async function profile(client, from, pushname, cmd, sender, ban) {
4 | client.sendText(from, `*${pushname}* profile\n\n *Ban from using the bot:* ${ban} `)
5 | }
6 |
7 | module.exports = {
8 | profile
9 | }
--------------------------------------------------------------------------------
/configFiles/hm.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/configFiles/hm.txt
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | const { create, Client } = require('@open-wa/wa-automate')
2 | const welcome = require('./lib/welcome')
3 | const left = require('./lib/left')
4 | const cron = require('node-cron')
5 | const color = require('./lib/color')
6 | const fs = require('fs-extra')
7 | // const msgHndlr = require ('./msgHndlr')
8 | const figlet = require('figlet')
9 | const options = require('./options')
10 | //const fs = require('fs-extra')
11 | const {
12 | prefix
13 | } = JSON.parse(fs.readFileSync('./lib/setting.json'))
14 |
15 |
16 | // AUTO UPDATE BY NURUTOMO
17 | // THX FOR NURUTOMO
18 | // Cache handler and check for file change
19 | require('./msgHndlr.js')
20 | nocache('./msgHndlr.js', module => console.log(`${module} Updated!`))
21 |
22 | const adminNumber = JSON.parse(fs.readFileSync('./lib/admin.json'))
23 | const setting = JSON.parse(fs.readFileSync('./lib/setting.json'))
24 | const isWhite = (chatId) => adminNumber.includes(chatId) ? true : false
25 |
26 | let {
27 | limitCount,
28 | memberLimit,
29 | groupLimit,
30 | mtc: mtcState,
31 | banChats,
32 | restartState: isRestart
33 | } = setting
34 |
35 | function restartAwal(aksa) {
36 | setting.restartState = false
37 | isRestart = false
38 | aksa.sendText(setting.restartId, 'Restart Succesfull!')
39 | setting.restartId = 'undefined'
40 | fs.writeFileSync('./lib/setting.json', JSON.stringify(setting, null, 2));
41 | }
42 |
43 | const start = async(aksa = new Client()) => {
44 | console.log('------------------------------------------------')
45 | console.log(color(figlet.textSync('LUCYA BOT', { horizontalLayout: 'full' })))
46 | console.log('------------------------------------------------')
47 | console.log('[DEV] AKSARA')
48 | console.log('[SERVER] LUCYAV2 IS ONLINE!')
49 | //aksa.onAnyMessage((fn) => messageLog(fn.fromMe, fn.type))
50 | // Force it to keep the current session
51 | aksa.onStateChanged((state) => {
52 | console.log('[Client State]', state)
53 | if (state === 'CONFLICT' || state === 'UNLAUNCHED') aksa.forceRefocus()
54 | })
55 | // listening on message
56 | aksa.onAnyMessage((async(message) => {
57 |
58 | aksa.getAmountOfLoadedMessages() // Cut message Cache if cache more than 3K
59 | .then((msg) => {
60 | if (msg >= 1000) {
61 | console.log('[CLIENT]', color(`Loaded Message Reach ${msg}, cuting message cache...`, 'yellow'))
62 | aksa.cutMsgCache()
63 | }
64 | })
65 | // msgHndlr(aksa, message)
66 | // Message Handler (Loaded from recent cache)
67 | require('./msgHndlr.js')(aksa, message)
68 | }))
69 |
70 |
71 | aksa.onGlobalParicipantsChanged((async(heuh) => {
72 | await welcome(aksa, heuh)
73 | left(aksa, heuh)
74 | }))
75 |
76 | aksa.onAddedToGroup(async(chat) => {
77 | if (isWhite(chat.id)) return aksa.sendText(chat.id, `Halo aku LUCYA, Ketik ${prefix}help Untuk Melihat List Command Ku...`)
78 | if (mtcState === false) {
79 | const groups = await aksa.getAllGroups()
80 | // BOT group count less than
81 | if (groups.length > groupLimit) {
82 | await aksa.sendText(chat.id, 'Maaf, Batas group yang dapat LUCYA tampung sudah penuh').then(async() => {
83 | aksa.deleteChat(chat.id)
84 | aksa.leaveGroup(chat.id)
85 | })
86 | } else {
87 | if (chat.groupMetadata.participants.length < memberLimit) {
88 | await aksa.sendText(chat.id, `Maaf, BOT keluar jika member group tidak melebihi ${memberLimit} orang`).then(async() => {
89 | aksa.deleteChat(chat.id)
90 | aksa.leaveGroup(chat.id)
91 | })
92 | } else {
93 | if (!chat.isReadOnly) aksa.sendText(chat.id, `Halo aku LUCYA, Ketik ${prefix}help Untuk Melihat List Command Ku...`)
94 | }
95 | }
96 | } else {
97 | await aksa.sendText(chat.id, 'LUCYA sedang maintenance, coba lain hari').then(async() => {
98 | aksa.deleteChat(chat.id)
99 | aksa.leaveGroup(chat.id)
100 | })
101 | }
102 | })
103 |
104 | /*aksa.onAck((x => {
105 | const { from, to, ack } = x
106 | if (x !== 3) aksa.sendSeen(to)
107 | }))*/
108 |
109 | // listening on Incoming Call
110 | aksa.onIncomingCall((async(call) => {
111 | await aksa.sendText(call.peerJid, 'Maaf, saya tidak bisa menerima panggilan. nelpon = block!.\nJika ingin membuka block harap chat Owner!')
112 | .then(() => aksa.contactBlock(call.peerJid))
113 | }))
114 | }
115 |
116 | /**
117 | * Uncache if there is file change
118 | * @param {string} module Module name or path
119 | * @param {function} cb
120 | */
121 | function nocache(module, cb = () => {}) {
122 | console.log('Module', `${module}`, 'is now being watched for changes')
123 | fs.watchFile(require.resolve(module), async() => {
124 | await uncache(require.resolve(module))
125 | cb(module)
126 | })
127 | }
128 |
129 | /**
130 | * Uncache a module
131 | * @param {string} module Module name or path
132 | */
133 | function uncache(module = '.') {
134 | return new Promise((resolve, reject) => {
135 | try {
136 | delete require.cache[require.resolve(module)]
137 | resolve()
138 | } catch (e) {
139 | reject(e)
140 | }
141 | })
142 | }
143 |
144 | create(options(true, start))
145 | .then(aksa => start(aksa))
146 | .catch((error) => console.log(error))
--------------------------------------------------------------------------------
/lib/NSFW.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/NoLink.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/Simsimi.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/admin.json:
--------------------------------------------------------------------------------
1 | ["6281281817375@c.us"]
--------------------------------------------------------------------------------
/lib/antilink.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/antistiker.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/asupan.json:
--------------------------------------------------------------------------------
1 | ["http://sansekai.my.id/ptl_repost/120416207_674661289840975_7238538460676645249_n.mp4",
2 | "http://sansekai.my.id/ptl_repost/120443017_225738842307010_1507614018538871668_n.mp4",
3 | "http://sansekai.my.id/ptl_repost/120506710_129730895516659_9090102890235113922_n.mp4",
4 | "http://sansekai.my.id/ptl_repost/120518115_3382156938497131_2702539154432231938_n.mp4",
5 | "http://sansekai.my.id/ptl_repost/120533450_988960268238482_4908300175960396265_n.mp4",
6 | "http://sansekai.my.id/ptl_repost/120554993_913582535835353_7937155730001219945_n.mp4",
7 | "http://sansekai.my.id/ptl_repost/120565745_258483202099028_1831534734126408497_n.mp4",
8 | "http://sansekai.my.id/ptl_repost/120570166_2716242608644571_5562452335611050430_n.mp4",
9 | "http://sansekai.my.id/ptl_repost/120571358_3743879342322868_4731152347084614368_n.mp4",
10 | "http://sansekai.my.id/ptl_repost/120571938_198275171805822_8506241533969509004_n.mp4",
11 | "http://sansekai.my.id/ptl_repost/120573034_128654721967389_1837144340570017830_n.mp4",
12 | "http://sansekai.my.id/ptl_repost/120574217_2707319792866165_3682328392840010261_n.mp4",
13 | "http://sansekai.my.id/ptl_repost/120575986_151816433263092_6600262966520398271_n.mp4",
14 | "http://sansekai.my.id/ptl_repost/120582400_339926344091433_2581248581156693603_n.mp4",
15 | "http://sansekai.my.id/ptl_repost/120583739_1060190921079212_3898520254664507328_n.mp4",
16 | "http://sansekai.my.id/ptl_repost/120587415_638776546998307_3091093882267818607_n.mp4",
17 | "http://sansekai.my.id/ptl_repost/120589771_752670855329266_5064573607465519463_n.mp4",
18 | "http://sansekai.my.id/ptl_repost/120613860_3393110177444352_4287165838359264124_n.mp4",
19 | "http://sansekai.my.id/ptl_repost/120614859_768632723701773_5662521620734316774_n.mp4",
20 | "http://sansekai.my.id/ptl_repost/120615019_149392973357031_6254963333779779708_n.mp4",
21 | "http://sansekai.my.id/ptl_repost/120664457_338629710563119_6615226849280369453_n.mp4",
22 | "http://sansekai.my.id/ptl_repost/120670762_191033325874671_8168246094200167609_n.mp4",
23 | "http://sansekai.my.id/ptl_repost/120678112_971693299972883_1648826221504742220_n.mp4",
24 | "http://sansekai.my.id/ptl_repost/120682363_1181866688854694_4233466354892721595_n.mp4",
25 | "http://sansekai.my.id/ptl_repost/120698858_1302470566751609_3736999773452225729_n.mp4",
26 | "http://sansekai.my.id/ptl_repost/120707049_337981777304231_3152650741169851669_n.mp4",
27 | "http://sansekai.my.id/ptl_repost/120714412_680680702806959_2149499366562729814_n.mp4",
28 | "http://sansekai.my.id/ptl_repost/120678112_971693299972883_1648826221504742220_n.mp4",
29 | "http://sansekai.my.id/ptl_repost/120682363_1181866688854694_4233466354892721595_n.mp4",
30 | "http://sansekai.my.id/ptl_repost/120698858_1302470566751609_3736999773452225729_n.mp4",
31 | "http://sansekai.my.id/ptl_repost/120707049_337981777304231_3152650741169851669_n.mp4",
32 | "http://sansekai.my.id/ptl_repost/120714412_680680702806959_2149499366562729814_n.mp4",
33 | "http://sansekai.my.id/ptl_repost/120729883_377241769982767_642715046771519958_n.mp4",
34 | "http://sansekai.my.id/ptl_repost/120741456_1395316090659305_3110631973366381441_n.mp4",
35 | "http://sansekai.my.id/ptl_repost/120804593_375071033671397_730042634632696040_n.mp4",
36 | "http://sansekai.my.id/ptl_repost/120811928_330321474737175_3822013398976938583_n.mp4",
37 | "http://sansekai.my.id/ptl_repost/120827732_420952185557269_5167357444190622531_n.mp4",
38 | "http://sansekai.my.id/ptl_repost/121295788_784206982151618_6038841027462332944_n.mp4",
39 | "http://sansekai.my.id/ptl_repost/121397161_184551316508349_5165670393574165941_n.mp4",
40 | "http://sansekai.my.id/ptl_repost/121397161_184551316508349_5165670393574165941_.mp4",
41 | "http://sansekai.my.id/ptl_repost/121490453_375667816940042_452419418652125867_n.mp4",
42 | "http://sansekai.my.id/ptl_repost/121490692_1088317691600143_548516704252213826_n.mp4",
43 | "http://sansekai.my.id/ptl_repost/121512378_353672009084447_4807177857049781204_n.mp4",
44 | "http://sansekai.my.id/ptl_repost/121514904_1394510664087772_4892116957337248229_n.mp4",
45 | "http://sansekai.my.id/ptl_repost/121532200_3230547633739858_7235249192613555721_n.mp4",
46 | "http://sansekai.my.id/ptl_repost/121543814_392221925520356_303723117892337663_n.mp4",
47 | "http://sansekai.my.id/ptl_repost/121566321_1967512323390748_8144044345456106322_n.mp4",
48 | "http://sansekai.my.id/ptl_repost/121569003_3794961287195185_5240770287194085749_n.mp4",
49 | "http://sansekai.my.id/ptl_repost/121570428_3649598918408334_760862153363411335_n.mp4",
50 | "http://sansekai.my.id/ptl_repost/121587556_270383600856171_7968543183520180693_n.mp4",
51 | "http://sansekai.my.id/ptl_repost/121598277_725143885010216_2702670580432436899_n.mp4",
52 | "http://sansekai.my.id/ptl_repost/121601719_426270495031386_30694262768775241_n.mp4",
53 | "http://sansekai.my.id/ptl_repost/121609403_120034726353475_3893222109332425758_n.mp4",
54 | "http://sansekai.my.id/ptl_repost/121612312_878485046018534_5289861003344220782_n.mp4",
55 | "http://sansekai.my.id/ptl_repost/121613042_341575146916700_5517565558462194152_n.mp4",
56 | "http://sansekai.my.id/ptl_repost/121626779_125426819058957_5972135792117349573_n.mp4",
57 | "http://sansekai.my.id/ptl_repost/121638626_272649507265577_2820970834218299552_n.mp4",
58 | "http://sansekai.my.id/ptl_repost/121641487_262449401789781_827591489039254325_n.mp4",
59 | "http://sansekai.my.id/ptl_repost/121677336_788393261894163_9130920773531067993_n.mp4",
60 | "http://sansekai.my.id/ptl_repost/123028471_2408598322779397_6239627531739814509_n.mp4",
61 | "http://sansekai.my.id/ptl_repost/123260804_189929405997462_9012418470477994278_n.mp4",
62 | "http://sansekai.my.id/ptl_repost/123277749_175348317470558_9168794939364708729_n.mp4",
63 | "http://sansekai.my.id/ptl_repost/123287511_1077114019377699_5242512396101351610_n.mp4",
64 | "http://sansekai.my.id/ptl_repost/123297814_376057496966433_1804568275746178180_n.mp4",
65 | "http://sansekai.my.id/ptl_repost/123323731_2819106155006753_1694984579845943046_n.mp4",
66 | "http://sansekai.my.id/ptl_repost/123323758_184286839845625_5873725071990174983_n.mp4",
67 | "http://sansekai.my.id/ptl_repost/123333623_360678961661756_3602292858765963678_n.mp4",
68 | "http://sansekai.my.id/ptl_repost/123371526_690851954892873_8778378882841686432_n.mp4",
69 | "http://sansekai.my.id/ptl_repost/123378729_1000441247125635_585752599614538874_n.mp4",
70 | "http://sansekai.my.id/ptl_repost/123381939_654928755187710_742178935407729090_n.mp4",
71 | "http://sansekai.my.id/ptl_repost/123409727_832687040840236_2963075506306126159_n.mp4",
72 | "http://sansekai.my.id/ptl_repost/123445711_2800949130172895_7092610674854075926_n.mp4",
73 | "http://sansekai.my.id/ptl_repost/123453267_416624299746388_1511915930493422331_n.mp4",
74 | "http://sansekai.my.id/ptl_repost/123455588_345186733444264_4396311316061632404_n.mp4",
75 | "http://sansekai.my.id/ptl_repost/123500665_2836118109966517_3102834591166602919_n.mp4",
76 | "http://sansekai.my.id/ptl_repost/123521796_357984642134434_1802311042714502909_n.mp4",
77 | "http://sansekai.my.id/ptl_repost/123542025_2845611382343239_831943804862462614_n.mp4",
78 | "http://sansekai.my.id/ptl_repost/123556362_1280079069021214_3345337485962200490_n.mp4"]
--------------------------------------------------------------------------------
/lib/bad.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/badword.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/ban.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs-extra')
2 |
3 | exports.ban = async function(message) {
4 | numBan = message.body.substring(message.body.indexOf('@') + 1)
5 | fs.appendFileSync('./lib/ban.txt', `${message.from} ${numBan}@c.us\n`)
6 | console.log(numBan)
7 | }
8 |
9 | exports.unban = async function(message) {
10 | numUnBan = message.body.substring(message.body.indexOf('@') + 1)
11 | fs.readFile('./lib/ban.txt', { encoding: 'utf-8' }, function(err, data) {
12 | if (err) throw err
13 |
14 | let dataArray = data.split('\n')
15 | const key = `${message.from} ${numUnBan}@c.us`
16 | let lastI = -1
17 |
18 | for (let i = 0; i < dataArray.length; i++) {
19 | if (dataArray[i].includes(key)) {
20 | lastI = i
21 | break
22 | }
23 | }
24 | dataArray.splice(lastI, 1)
25 | const dataUpdate = dataArray.join('\n')
26 | fs.writeFile('./lib/ban.txt', dataUpdate, function(err) {
27 | if (err) throw err
28 | })
29 | })
30 | }
--------------------------------------------------------------------------------
/lib/banned.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/brainly.js:
--------------------------------------------------------------------------------
1 | const brainly = require('brainly-scraper')
2 |
3 | module.exports = BrainlySearch = (pertanyaan, jumlah, cb) => {
4 | brainly(pertanyaan.toString(), Number(jumlah)).then((res) => {
5 | let brainlyResult = []
6 | res.data.forEach((ask) => {
7 | let opt = {
8 | pertanyaan: ask.pertanyaan,
9 | fotoPertanyaan: ask.questionMedia
10 | }
11 | ask.jawaban.forEach(answer => {
12 | opt.jawaban = {
13 | judulJawaban: answer.text,
14 | fotoJawaban: answer.media
15 | }
16 | })
17 | brainlyResult.push(opt)
18 | })
19 | return brainlyResult
20 | }).then(x => {
21 | cb(x)
22 | }).catch(err => {
23 | console.log(err.error)
24 | })
25 | }
--------------------------------------------------------------------------------
/lib/cekResi.js:
--------------------------------------------------------------------------------
1 | const { fetchJson } = require('../utils/fetcher')
2 |
3 | /**
4 | * Get Resi Information
5 | *
6 | * @param {string} ekspedisi - nama ekpedisi
7 | * @param {string} resi - no / kode resi
8 | */
9 | module.exports = cekResi = (ekspedisi, resi) => new Promise((resolve, reject) => {
10 | fetchJson(`https://api.terhambar.com/resi?resi=${resi}&kurir=${ekspedisi}`)
11 | .then((result) => {
12 | if (result.status.code != 200 && result.status.description != 'OK') return resolve(result.status.description)
13 | // eslint-disable-next-line camelcase
14 | const { result: { summary, details, delivery_status, manifest } } = result
15 | const manifestText = manifest.map(x => `⏰ ${x.manifest_date} ${x.manifest_time}\n └ ${x.manifest_description}`)
16 | const resultText = `
17 | 📦 Data Ekspedisi
18 | ├ ${summary.courier_name}
19 | ├ Nomor: ${summary.waybill_number}
20 | ├ Service: ${summary.service_code}
21 | └ Dikirim Pada: ${details.waybill_date} ${details.waybill_time}
22 |
23 | 💁🏼♂️ Data Pengirim
24 | ├ Nama: ${details.shippper_name}
25 | └ Alamat: ${details.shipper_address1} ${details.shipper_city}
26 |
27 | 🎯 Data Penerima
28 | ├ Nama: ${details.receiver_name}
29 | └ Alamat: ${details.receiver_address1} ${details.receiver_city}
30 |
31 | 📮 Status Pengiriman
32 | └ ${delivery_status.status}
33 |
34 | 🚧 POD Detail\n
35 | ${manifestText.join('\n')}`
36 | resolve(resultText)
37 | }).catch((err) => {
38 | console.error(err)
39 | reject(err)
40 | })
41 | })
--------------------------------------------------------------------------------
/lib/color.js:
--------------------------------------------------------------------------------
1 | const chalk = require('chalk')
2 |
3 | module.exports = color = (text, color) => {
4 | return !color ? chalk.green(text) : chalk.keyword(color)(text)
5 | }
--------------------------------------------------------------------------------
/lib/dare.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs');
2 |
3 | module.exports = () => {
4 | const data = fs.readFileSync('./lib/tod.json');
5 | const jsonData = JSON.parse(data);
6 | const randIndex = Math.floor(Math.random() * jsonData.length);
7 | const randKey = jsonData[randIndex];
8 | return `*DARE* : ${randKey.dare}`;
9 | };
--------------------------------------------------------------------------------
/lib/data/group.json:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/lib/data/regis.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/database/NoLink.json:
--------------------------------------------------------------------------------
1 | ["6285722148164-1601740559@g.us","6281338888294-1604361992@g.us","6281338888294-1578835546@g.us","6281338888294-1606393774@g.us","6281338888294-1605010417@g.us","6281338888294-1605010417@g.us"]
--------------------------------------------------------------------------------
/lib/database/Simsimi.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/database/VipUser.json:
--------------------------------------------------------------------------------
1 | ["628992490269@c.us","6283160908152@c.us","6287811078485@c.us","6282132518352@c.us","6281338888294@c.us","6289607055246@c.us","6285805609094@c.us","15627318408@c.us","6281224276655@c.us","62895365279696@c.us","6289630152417@c.us"]
--------------------------------------------------------------------------------
/lib/database/a:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/lib/database/admin.json:
--------------------------------------------------------------------------------
1 | ["62813xxxxx@c.us","6281338888294@c.us","62895357701144@c.us","6285784444668@c.us","6289516959448@c.us","19412137558@c.us","15627318408@c.us","6281224276655@c.us","62895365279696@c.us"]
--------------------------------------------------------------------------------
/lib/database/bad.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/database/badword.json:
--------------------------------------------------------------------------------
1 | ["6281338888294-1606393774@g.us"]
--------------------------------------------------------------------------------
/lib/database/banned.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/database/husbu.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "teks": "Mikoto Mikoshiba",
4 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/08/joi-mikorin-featured-700x394.jpg"
5 | },
6 | {
7 | "teks": "(Top Leader) Mikazuki Augus",
8 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
9 | },
10 | {
11 | "teks": "Azusagawa Sakuta",
12 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/Sakuta_Azusagawa_Anime_-_Screenshot_1-700x394.png"
13 | },
14 | {
15 | "teks": "Hideyuki Maya",
16 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/01/joi-maya-featured-700x458.jpg"
17 | },
18 | {
19 | "teks": "Slaine Troyard",
20 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
21 | },
22 | {
23 | "teks": "Willem Kmetsch",
24 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/Films-TV-15_02_2019-21_33_37-700x394.png"
25 | },
26 | {
27 | "teks": "Slaine Troyard",
28 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
29 | },
30 | {
31 | "teks": "(Top Leader) Mikazuki Augus",
32 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
33 | },
34 | {
35 | "teks": "Hideyuki Maya",
36 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/01/joi-maya-featured-700x458.jpg"
37 | },
38 | {
39 | "teks": "Willem Kmetsch",
40 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/Films-TV-15_02_2019-21_33_37-700x394.png"
41 | },
42 | {
43 | "teks": "Kinoshita Hideyoshi",
44 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/04/hideyoshi_cover-700x409.jpg?x21210"
45 | },
46 | {
47 | "teks": "Azusagawa Sakuta",
48 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/Sakuta_Azusagawa_Anime_-_Screenshot_1-700x394.png"
49 | },
50 | {
51 | "teks": "Kinoshita Hideyoshi",
52 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/04/hideyoshi_cover-700x409.jpg?x21210"
53 | },
54 | {
55 | "teks": "(Top Leader) Mikazuki Augus",
56 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
57 | },
58 | {
59 | "teks": "Slaine Troyard",
60 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
61 | },
62 | {
63 | "teks": "Hideyuki Maya",
64 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/01/joi-maya-featured-700x458.jpg"
65 | },
66 | {
67 | "teks": "Kinoshita Hideyoshi",
68 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/04/hideyoshi_cover-700x409.jpg?x21210"
69 | },
70 | {
71 | "teks": "Kinoshita Hideyoshi",
72 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/04/hideyoshi_cover-700x409.jpg?x21210"
73 | },
74 | {
75 | "teks": "Bakugou Katsuki",
76 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/07/kacchan_cover1-700x409.jpg?x21210"
77 | },
78 | {
79 | "teks": "Takigawa Yoshino",
80 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/husbufri-yoshino-joi10-700x394.jpg"
81 | },
82 | {
83 | "teks": "Slaine Troyard",
84 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
85 | },
86 | {
87 | "teks": "Hideyuki Maya",
88 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/01/joi-maya-featured-700x458.jpg"
89 | },
90 | {
91 | "teks": "(Top Leader) Mikazuki Augus",
92 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
93 | },
94 | {
95 | "teks": "(CEO) Orga Itsuka",
96 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/11/joi-ceo-orga-featured-700x394.jpg"
97 | },
98 | {
99 | "teks": "Takigawa Yoshino",
100 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/husbufri-yoshino-joi10-700x394.jpg"
101 | },
102 | {
103 | "teks": "Kinoshita Hideyoshi",
104 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/04/hideyoshi_cover-700x409.jpg?x21210"
105 | },
106 | {
107 | "teks": "Slaine Troyard",
108 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
109 | },
110 | {
111 | "teks": "Haruitsuki Abeno",
112 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2016/12/joi-abeno-featured-700x394.jpg"
113 | },
114 | {
115 | "teks": "Azusagawa Sakuta",
116 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/Sakuta_Azusagawa_Anime_-_Screenshot_1-700x394.png"
117 | },
118 | {
119 | "teks": "Azusagawa Sakuta",
120 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/Sakuta_Azusagawa_Anime_-_Screenshot_1-700x394.png"
121 | },
122 | {
123 | "teks": "Hideyuki Maya",
124 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/01/joi-maya-featured-700x458.jpg"
125 | },
126 | {
127 | "teks": "Slaine Troyard",
128 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
129 | },
130 | {
131 | "teks": "Willem Kmetsch",
132 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/Films-TV-15_02_2019-21_33_37-700x394.png"
133 | },
134 | {
135 | "teks": "Mikoto Mikoshiba",
136 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/08/joi-mikorin-featured-700x394.jpg"
137 | },
138 | {
139 | "teks": "Mikoto Mikoshiba",
140 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/08/joi-mikorin-featured-700x394.jpg"
141 | },
142 | {
143 | "teks": "(Top Leader) Mikazuki Augus",
144 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
145 | },
146 | {
147 | "teks": "(CEO) Orga Itsuka",
148 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/11/joi-ceo-orga-featured-700x394.jpg"
149 | },
150 | {
151 | "teks": "Willem Kmetsch",
152 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/Films-TV-15_02_2019-21_33_37-700x394.png"
153 | },
154 | {
155 | "teks": "Bakugou Katsuki",
156 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/07/kacchan_cover1-700x409.jpg?x21210"
157 | },
158 | {
159 | "teks": "Slaine Troyard",
160 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
161 | },
162 | {
163 | "teks": "(Top Leader) Mikazuki Augus",
164 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
165 | },
166 | {
167 | "teks": "Willem Kmetsch",
168 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/Films-TV-15_02_2019-21_33_37-700x394.png"
169 | },
170 | {
171 | "teks": "Kinoshita Hideyoshi",
172 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/04/hideyoshi_cover-700x409.jpg?x21210"
173 | },
174 | {
175 | "teks": "Mikoto Mikoshiba",
176 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/08/joi-mikorin-featured-700x394.jpg"
177 | },
178 | {
179 | "teks": "Willem Kmetsch",
180 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/Films-TV-15_02_2019-21_33_37-700x394.png"
181 | },
182 | {
183 | "teks": "Bakugou Katsuki",
184 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/07/kacchan_cover1-700x409.jpg?x21210"
185 | },
186 | {
187 | "teks": "Haruitsuki Abeno",
188 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2016/12/joi-abeno-featured-700x394.jpg"
189 | },
190 | {
191 | "teks": "Takigawa Yoshino",
192 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/husbufri-yoshino-joi10-700x394.jpg"
193 | },
194 | {
195 | "teks": "(Top Leader) Mikazuki Augus",
196 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
197 | },
198 | {
199 | "teks": "Slaine Troyard",
200 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
201 | },
202 | {
203 | "teks": "(Top Leader) Mikazuki Augus",
204 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
205 | },
206 | {
207 | "teks": "Kinoshita Hideyoshi",
208 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/04/hideyoshi_cover-700x409.jpg?x21210"
209 | },
210 | {
211 | "teks": "Willem Kmetsch",
212 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/Films-TV-15_02_2019-21_33_37-700x394.png"
213 | },
214 | {
215 | "teks": "Takigawa Yoshino",
216 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/husbufri-yoshino-joi10-700x394.jpg"
217 | },
218 | {
219 | "teks": "Hideyuki Maya",
220 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/01/joi-maya-featured-700x458.jpg"
221 | },
222 | {
223 | "teks": "(CEO) Orga Itsuka",
224 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/11/joi-ceo-orga-featured-700x394.jpg"
225 | },
226 | {
227 | "teks": "(CEO) Orga Itsuka",
228 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/11/joi-ceo-orga-featured-700x394.jpg"
229 | },
230 | {
231 | "teks": "Slaine Troyard",
232 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
233 | },
234 | {
235 | "teks": "Haruitsuki Abeno",
236 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2016/12/joi-abeno-featured-700x394.jpg"
237 | },
238 | {
239 | "teks": "Bakugou Katsuki",
240 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/07/kacchan_cover1-700x409.jpg?x21210"
241 | },
242 | {
243 | "teks": "Takigawa Yoshino",
244 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/husbufri-yoshino-joi10-700x394.jpg"
245 | },
246 | {
247 | "teks": "Mikoto Mikoshiba",
248 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/08/joi-mikorin-featured-700x394.jpg"
249 | },
250 | {
251 | "teks": "(Top Leader) Mikazuki Augus",
252 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
253 | },
254 | {
255 | "teks": "(Top Leader) Mikazuki Augus",
256 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
257 | },
258 | {
259 | "teks": "Azusagawa Sakuta",
260 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/Sakuta_Azusagawa_Anime_-_Screenshot_1-700x394.png"
261 | },
262 | {
263 | "teks": "Azusagawa Sakuta",
264 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/Sakuta_Azusagawa_Anime_-_Screenshot_1-700x394.png"
265 | },
266 | {
267 | "teks": "Azusagawa Sakuta",
268 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/Sakuta_Azusagawa_Anime_-_Screenshot_1-700x394.png"
269 | },
270 | {
271 | "teks": "Azusagawa Sakuta",
272 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/Sakuta_Azusagawa_Anime_-_Screenshot_1-700x394.png"
273 | },
274 | {
275 | "teks": "Takigawa Yoshino",
276 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/husbufri-yoshino-joi10-700x394.jpg"
277 | },
278 | {
279 | "teks": "(Top Leader) Mikazuki Augus",
280 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
281 | },
282 | {
283 | "teks": "(CEO) Orga Itsuka",
284 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/11/joi-ceo-orga-featured-700x394.jpg"
285 | },
286 | {
287 | "teks": "Mikoto Mikoshiba",
288 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/08/joi-mikorin-featured-700x394.jpg"
289 | },
290 | {
291 | "teks": "Takigawa Yoshino",
292 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/husbufri-yoshino-joi10-700x394.jpg"
293 | },
294 | {
295 | "teks": "(CEO) Orga Itsuka",
296 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/11/joi-ceo-orga-featured-700x394.jpg"
297 | },
298 | {
299 | "teks": "Slaine Troyard",
300 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
301 | },
302 | {
303 | "teks": "Willem Kmetsch",
304 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/Films-TV-15_02_2019-21_33_37-700x394.png"
305 | },
306 | {
307 | "teks": "(Top Leader) Mikazuki Augus",
308 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
309 | },
310 | {
311 | "teks": "Bakugou Katsuki",
312 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/07/kacchan_cover1-700x409.jpg?x21210"
313 | },
314 | {
315 | "teks": "(CEO) Orga Itsuka",
316 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/11/joi-ceo-orga-featured-700x394.jpg"
317 | },
318 | {
319 | "teks": "Kinoshita Hideyoshi",
320 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/04/hideyoshi_cover-700x409.jpg?x21210"
321 | },
322 | {
323 | "teks": "Willem Kmetsch",
324 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/Films-TV-15_02_2019-21_33_37-700x394.png"
325 | },
326 | {
327 | "teks": "(Top Leader) Mikazuki Augus",
328 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
329 | },
330 | {
331 | "teks": "Hideyuki Maya",
332 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/01/joi-maya-featured-700x458.jpg"
333 | },
334 | {
335 | "teks": "Takigawa Yoshino",
336 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/husbufri-yoshino-joi10-700x394.jpg"
337 | },
338 | {
339 | "teks": "Kinoshita Hideyoshi",
340 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/04/hideyoshi_cover-700x409.jpg?x21210"
341 | },
342 | {
343 | "teks": "Kinoshita Hideyoshi",
344 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/04/hideyoshi_cover-700x409.jpg?x21210"
345 | },
346 | {
347 | "teks": "Slaine Troyard",
348 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
349 | },
350 | {
351 | "teks": "Bakugou Katsuki",
352 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/07/kacchan_cover1-700x409.jpg?x21210"
353 | },
354 | {
355 | "teks": "Kinoshita Hideyoshi",
356 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/04/hideyoshi_cover-700x409.jpg?x21210"
357 | },
358 | {
359 | "teks": "Takigawa Yoshino",
360 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/husbufri-yoshino-joi10-700x394.jpg"
361 | },
362 | {
363 | "teks": "(Top Leader) Mikazuki Augus",
364 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
365 | },
366 | {
367 | "teks": "Hideyuki Maya",
368 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/01/joi-maya-featured-700x458.jpg"
369 | },
370 | {
371 | "teks": "(CEO) Orga Itsuka",
372 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/11/joi-ceo-orga-featured-700x394.jpg"
373 | },
374 | {
375 | "teks": "Bakugou Katsuki",
376 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/07/kacchan_cover1-700x409.jpg?x21210"
377 | },
378 | {
379 | "teks": "Slaine Troyard",
380 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
381 | },
382 | {
383 | "teks": "Takigawa Yoshino",
384 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/husbufri-yoshino-joi10-700x394.jpg"
385 | },
386 | {
387 | "teks": "Azusagawa Sakuta",
388 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/Sakuta_Azusagawa_Anime_-_Screenshot_1-700x394.png"
389 | },
390 | {
391 | "teks": "Willem Kmetsch",
392 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/Films-TV-15_02_2019-21_33_37-700x394.png"
393 | },
394 | {
395 | "teks": "(Top Leader) Mikazuki Augus",
396 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
397 | },
398 | {
399 | "teks": "Haruitsuki Abeno",
400 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2016/12/joi-abeno-featured-700x394.jpg"
401 | }
402 | ]
--------------------------------------------------------------------------------
/lib/database/left.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/database/limit.json:
--------------------------------------------------------------------------------
1 | [{"id":"6281802381243@c.us","limit":-16}]
--------------------------------------------------------------------------------
/lib/database/msgLimit.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/database/muted.json:
--------------------------------------------------------------------------------
1 | [
2 | "447723992261-1603256329@g.us"
3 | ]
--------------------------------------------------------------------------------
/lib/database/nsfwz.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/database/prefix.json:
--------------------------------------------------------------------------------
1 | {
2 | "prefix": "@"
3 | }
--------------------------------------------------------------------------------
/lib/database/quote.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "by": "A. France",
4 | "quote": "Lebih baik mengerti sedikit daripada salah mengerti."
5 | },
6 | {
7 | "by": "Abraham Lincoln",
8 | "quote": "Hampir semua pria memang mampu bertahan menghadapi kesulitan. Namun, jika Anda ingin menguji karakter sejati pria, beri dia kekuasaan."
9 | },
10 | {
11 | "by": "Aeschylus",
12 | "quote": "Bila tekad seseorang kuat dan teguh, Tuhan akan bergabung dalam usahanya."
13 | },
14 | {
15 | "by": "Aesop",
16 | "quote": "Penderitaan adalah pelajaran."
17 | },
18 | {
19 | "by": "Albert Einstein",
20 | "quote": "Ilmu pengetahuan tanpa agama adalah pincang."
21 | },
22 | {
23 | "by": "Albert Einstein",
24 | "quote": "Hidup itu seperti sebuah sepeda, agar tetap seimbang kita harus tetap bergerak."
25 | },
26 | {
27 | "by": "Albert Einstein",
28 | "quote": "Perbedaan masa lalu, sekarang, dan masa depan tak lebih dari ilusi yang keras kepala."
29 | },
30 | {
31 | "by": "Albert Einstein",
32 | "quote": "Sebuah meja, sebuah kursi, semangkuk buah, dan sebuah biola; apa lagi yang dibutuhkan agar seseorang bisa merasa bahagia?."
33 | },
34 | {
35 | "by": "Albert Enstein",
36 | "quote": "Belas kasihanlah terhadap sesama, bersikap keraslah terhadap diri sendiri."
37 | },
38 | {
39 | "by": "Alex Osborn",
40 | "quote": "Cara paling baik untuk menggerakkan diri Anda ialah memberi tugas kepada diri sendiri."
41 | },
42 | {
43 | "by": "Alexander A. Bogomoletz",
44 | "quote": "Kita tidak boleh kehilangan semangat. Semangat adalah stimulan terkuat untuk mencintai, berkreasi dan berkeinginan untuk hidup lebih lama."
45 | },
46 | {
47 | "by": "Alexander Solzhenitsyn",
48 | "quote": "Manusia akan bahagia selama ia memilih untuk bahagia."
49 | },
50 | {
51 | "by": "Ali Javan",
52 | "quote": "Saya tidak berharap menjadi segalanya bagi setiap orang. Saya hanya ingin menjadi sesuatu untuk seseorang."
53 | },
54 | {
55 | "by": "Ali bin Abi Thalib",
56 | "quote": "Apabila sempurna akal seseorang, maka sedikit perkataannya."
57 | },
58 | {
59 | "by": "Ali bin Abi Thalib",
60 | "quote": "Bahagialah orang yang dapat menjadi tuan untuk dirinya, menjadi kusir untuk nafsunya dan menjadi kapten untuk bahtera hidupnya."
61 | },
62 | {
63 | "by": "Ali bin Abi Thalib",
64 | "quote": "Sahabat yang jujur lebih besar harganya daripada harta benda yang diwarisi dari nenek moyang."
65 | },
66 | {
67 | "by": "Anne M. Lindbergh",
68 | "quote": "Yang palin melelahkan dalam hidup adalah menjadi orang yang tidak tulus."
69 | },
70 | {
71 | "by": "Anonim",
72 | "quote": "Terbuka untuk Anda, begitulah Tuhan memberi kita jalan untuk berusaha. Jangan pernah berfikir jalan sudah tertutup."
73 | },
74 | {
75 | "by": "Anonim",
76 | "quote": "Penundaan adalah kuburan dimana peluang dikuburkan."
77 | },
78 | {
79 | "by": "Antonie De Saint",
80 | "quote": "Cinta bukan saling menatap mata, namun melihat ke arah yang sama bersama-sama."
81 | },
82 | {
83 | "by": "Aristoteles",
84 | "quote": "Kita adalah apa yang kita kerjakan berulang kali. Dengan demikian, kecemerlangan bukan tindakan, tetapi kebiasaan."
85 | },
86 | {
87 | "by": "Arnold Glasow",
88 | "quote": "Jangan pernah mencoba menjadikan putra atau putri Anda menjadi seperti Anda. Diri Anda hanya cukup satu saja."
89 | },
90 | {
91 | "by": "Art Buchwald",
92 | "quote": "Jika Anda bisa membuat orang lain tertawa, maka Anda akan mendapatkan semua cinta yang Anda inginkan."
93 | },
94 | {
95 | "by": "Artemus Ward",
96 | "quote": "Masalah akan datang cepat atau lambat. Jika masalah datang, sambut dengan sebaik mungkin. Semakin ramah Anda menyapanya, semakin cepat ia pergi."
97 | },
98 | {
99 | "by": "Ashleigh Brilliant",
100 | "quote": "Kita tak bisa melakukan apapun untuk mengubah masa lalu. Tapi apapun yang kita lakukan bisa mengubah masa depan."
101 | },
102 | {
103 | "by": "Augustine",
104 | "quote": "Kesabaran adalah teman dari kebijaksanaan."
105 | },
106 | {
107 | "by": "Ayn Rand",
108 | "quote": "Orang-orang kreatif termotivasi oleh keinginan untuk maju, bukan oleh keinginan untuk mengalahkan orang lain."
109 | },
110 | {
111 | "by": "B. J. Habibie",
112 | "quote": "Dimanapun engkau berada selalulah menjadi yang terbaik dan berikan yang terbaik dari yang bisa kita berikan."
113 | },
114 | {
115 | "by": "Balzac",
116 | "quote": "Kebencian seperti halnya cinta, berkobar karena hal-hal kecil."
117 | },
118 | {
119 | "by": "Barbara Sher",
120 | "quote": "Anda tidak perlu harus berhasil pada kali pertama."
121 | },
122 | {
123 | "by": "Beecher",
124 | "quote": "Satu jam yang intensif, jauh lebih baik dan menguntungkan daripada bertahun-tahun bermimpi dan merenung-renung."
125 | },
126 | {
127 | "by": "Benjamin Disraeli",
128 | "quote": "Hal terbaik yang bisa Anda lakukan untuk orang lain bukanlah membagikan kekayaan Anda, tetapi membantu dia untuk memiliki kekayaannya sendiri."
129 | },
130 | {
131 | "by": "Bill Clinton",
132 | "quote": "Tidak ada jaminan keberhasilan, tetapi tidak berusaha adalah jaminan kegagalan."
133 | },
134 | {
135 | "by": "Bill Cosby",
136 | "quote": "Aku tidak tahu kunci sukses itu apa, tapi kunci menuju kegagalan adalah mencoba membuat semua orang senang."
137 | },
138 | {
139 | "by": "Bill Gates",
140 | "quote": "Konsumen yang paling tidak puas adalah sumber berharga untuk belajar."
141 | },
142 | {
143 | "by": "Bill Mccartney",
144 | "quote": "Kita ada disini bukan untuk saling bersaing. Kita ada disini untuk saling melengkapi."
145 | },
146 | {
147 | "by": "Brian Koslow",
148 | "quote": "Semakin kita bersedia bertanggung jawab atas perbuatan-perbuatan kita, semakin banyak kredibilitas yang kita miliki."
149 | },
150 | {
151 | "by": "Browning",
152 | "quote": "Selalu baik untuk memaafkan, tapi yang paling baik adalah melupakan sebuah kesalahan."
153 | },
154 | {
155 | "by": "Bruce Lee",
156 | "quote": "Jangan menjadi pohon kaku yang mudah patah. Jadilah bambu yang mampu bertahan melengkung melawan terpaan angin."
157 | },
158 | {
159 | "by": "Budha Gautama",
160 | "quote": "Jangan menangis karena kegagalan cinta, sebab manusia akan meninggalkan semua yang dicintainya."
161 | },
162 | {
163 | "by": "Bunda Teresa",
164 | "quote": "Jika Anda mengadili orang lain, Anda tak punya waktu untuk mencintai mereka."
165 | },
166 | {
167 | "by": "Bunda Teresa",
168 | "quote": "Jika tidak ada perdamaian, hal itu disebabkan kita telah lupa bahwa kita saling membutuhkan."
169 | },
170 | {
171 | "by": "Bung Hatta",
172 | "quote": "Kurang cerdas dapat diperbaiki dengan belajar, kurang cekatan dapat diperbaiki dengan pengalaman, kurang jujur sulit memperbaikinya."
173 | },
174 | {
175 | "by": "Burn",
176 | "quote": "Banyak orang sukses berkat banyaknya kesulitan dan kesukaran yang mesti dihadapi."
177 | },
178 | {
179 | "by": "Carol Burnet",
180 | "quote": "Hanya aku yang bisa merubah hidupku, tak ada seorang pun yang dapat melakukannya untukku."
181 | },
182 | {
183 | "by": "Charles Darwin",
184 | "quote": "Yang bisa bertahan hidup bukan spesies yang paling kuat. Bukan juga spesies yang paling cerdas. Tapi spesies yang paling responsif terhadap perubahan."
185 | },
186 | {
187 | "by": "Charles R. Swindoll",
188 | "quote": "Hidup adalah 10 persen yang terjadi kepada Anda, 90 persen bagaimana cara Anda menyikapinya."
189 | },
190 | {
191 | "by": "Ching Hai",
192 | "quote": "Memperbaiki diri kita adalah memperbaiki dunia."
193 | },
194 | {
195 | "by": "Ching Hai",
196 | "quote": "Jangan membeda-bedakan pekerjaan mana yang baik dan mana yang buruk. Masalah muncul jika kita membeda-bedakan dan memihak sesuatu."
197 | },
198 | {
199 | "by": "Ching Hai",
200 | "quote": "Kita bekerja harus tanpa pamrih. Itu berlaku untuk segala pekerjaan. Pengabdian tanpa syarat adalah yang terbaik."
201 | },
202 | {
203 | "by": "Ching Hai",
204 | "quote": "Kita harus menemukan kekuatan cinta dalam diri kita terlebih dahulu, barulah kita dapat benar-benar mencintai orang lain."
205 | },
206 | {
207 | "by": "Ching Hai",
208 | "quote": "Carilah uang secukupnya saja untuk membiayai kehidupan, agar dapat menyisihkan waktu dan tenaga untuk melatih spiritual."
209 | },
210 | {
211 | "by": "Christopher Colombus",
212 | "quote": "Harta benda tak membuat seseorang menjadi kaya raya, mereka hanya membuatnya lebih sibuk."
213 | },
214 | {
215 | "by": "Cicero",
216 | "quote": "Hati yang penuh syukur, bukan saja merupakan kebajikan terbesar, melainkan induk dari segala kebajikan yang lain."
217 | },
218 | {
219 | "by": "Cicero",
220 | "quote": "Hati yang penuh syukur, bukan saja merupakan kebajikan terbesar, melainkan juga induk dari segala kebajikan yang lain."
221 | },
222 | {
223 | "by": "Clarence Darrow",
224 | "quote": "Kebebasan itu berasal dari manusia, tidak dari undang-undang atau institusi."
225 | },
226 | {
227 | "by": "Confucius",
228 | "quote": "Hidup ini benar-benar sederhana, tapi kita malah bersikeras membuatnya menjadi rumit."
229 | },
230 | {
231 | "by": "Confucius",
232 | "quote": "Kemana pun Anda pergi, pergilah dengan sepenuh hati."
233 | },
234 | {
235 | "by": "Confucius",
236 | "quote": "Orang yang melakukan kesalahan dan tidak memperbaiki kesalahannya, melalakukan kesalahan yang lainnya."
237 | },
238 | {
239 | "by": "Confucius",
240 | "quote": "Kebanggaan kita yang terbesar bukan karena tidak pernah gagal, tetapi bangkit kembali setiap kita jatuh."
241 | },
242 | {
243 | "by": "Cowper",
244 | "quote": "Bunga yang tidak akan pernah layu dibumi adalah kebajikan."
245 | },
246 | {
247 | "by": "Cynthia Ozick",
248 | "quote": "Untuk membayangkan hal yang tak dapat dibayangkan, dibutuhkan imajinasi yang luar biasa."
249 | },
250 | {
251 | "by": "D. J. Schwartz",
252 | "quote": "Kesulitan apapun tidak tahan terhadap keuletan dan ketekunan. Tanpa keuletan, orang yang paling pintar dan paling berbakat sering gagal dalam hidupnya."
253 | },
254 | {
255 | "by": "Dale Carnegie",
256 | "quote": "Satu-satunya cara agar kita memperoleh kasih sayang, adalah jangan menuntut agar kita dicintai, tetapi mulailah memberi kasih sayang kepada orang lain tanpa mengharapkan balasan."
257 | },
258 | {
259 | "by": "Dale Carnegie",
260 | "quote": "Bila orang yang kuatir akan kekurangannya mau mensyukuri kekayaan yang mereka miliki, mereka akan berhenti kuatir."
261 | },
262 | {
263 | "by": "Dale Carnegie",
264 | "quote": "Usahakan membentuk suatu hubungan \"kawat\" antara otak dan hati Anda."
265 | },
266 | {
267 | "by": "Dale Carnegie",
268 | "quote": "Senyuman akan membuat kaya jiwa seseorang yang menerimanya, tanpa membuat miskin seseorang yang memberikannya."
269 | },
270 | {
271 | "by": "Dale Carnegie",
272 | "quote": "Orang jarang sukses kecuali jika mereka senang dengan apa yang dikerjakannya."
273 | },
274 | {
275 | "by": "David Livingston",
276 | "quote": "Saya akan pergi kemanapun selama itu arahnya ke depan."
277 | },
278 | {
279 | "by": "David V. Ambrose",
280 | "quote": "Jika Anda punya kemauan untuk menang, Anda sudah mencapai separuh sukses. Jika Anda tidak punya kemauan untuk menang, Anda sudah mencapai separuh kegagalan."
281 | },
282 | {
283 | "by": "David Weinbaum",
284 | "quote": "Rahasia menuju hidup kaya adalah mempunyai lebih banyak awal ketimbang akhir."
285 | },
286 | {
287 | "by": "Desbarolles",
288 | "quote": "Kebenaran yang tidak dimengerti akan menjadi kesalahan."
289 | },
290 | {
291 | "by": "Descrates",
292 | "quote": "Saya berpikir, karena itu saya ada."
293 | },
294 | {
295 | "by": "Djamaludin Abassy",
296 | "quote": "Mental yang lemah lebih parah dari fisik yang lemah."
297 | },
298 | {
299 | "by": "Donald Kendall",
300 | "quote": "Satu-satunya sukses yang diraih sebelum bekerja hanyalah ada di kamus saja."
301 | },
302 | {
303 | "by": "Dr. Frank Crane",
304 | "quote": "Sahabat terbaik dan musuh terburuk kita adalah pikiran-pikiran kita. Pikiran dapat lebih baik dari seorang dokter atau seorang bankir atau seorang teman kepercayaan. Juga dapat lebih berbahaya dadi penjahat."
305 | },
306 | {
307 | "by": "Dr. Ronald Niednagel",
308 | "quote": "Pergilah sejauh Anda bisa memandang, dan ketika Anda tiba disana, Anda akan memandang lebih jauh."
309 | },
310 | {
311 | "by": "Dr.\u00a0Johnnetta Cole",
312 | "quote": "Jika kamu ingin pergi cepat, pergilah sendiri. Jika kamu ingin pergi jauh, pergilah bersama-sama."
313 | },
314 | {
315 | "by": "Dwigt D. Esenhower",
316 | "quote": "Seorang intelektual tidak akan pernah mengatakan lebih daripada apa yang diketahuinya."
317 | },
318 | {
319 | "by": "Earl Campbell",
320 | "quote": "Persoalan-persoalan adalah harga yang Anda bayar untuk kemajuan."
321 | },
322 | {
323 | "by": "Earl Campbell",
324 | "quote": "Persoalan-persoalan adalah harga yang harus Anda bayar untuk kemajuan."
325 | },
326 | {
327 | "by": "Edgar Alnsel",
328 | "quote": "Hidup manusia penuh dengan bahaya, tetapi disitulah letak daya tariknya."
329 | },
330 | {
331 | "by": "Edmund Burke",
332 | "quote": "Anda tidak dapat merencanakan masa yang akan datang berdasarkan masa lalu."
333 | },
334 | {
335 | "by": "Edward L. Curtis",
336 | "quote": "Optimisme yang tidak disertai dengan usaha hanya merupakan pemikiran semata yang tidak menghasilkan buah."
337 | },
338 | {
339 | "by": "Edward de Bono",
340 | "quote": "Jika Anda termasuk orang yang senang menunggu datangnya peluang, Anda adalah bagian dari manusia pada umumnya."
341 | },
342 | {
343 | "by": "Edy Murphy",
344 | "quote": "Aku menghabiskan usia 30-an untuk memperbaiki segala kesalahanku di usia 20-an."
345 | },
346 | {
347 | "by": "Einstein",
348 | "quote": "Berusaha untuk tidak menjadi manusia yang berhasil tapi berusahalah menjadi manusia yang berguna."
349 | },
350 | {
351 | "by": "Eisenhower",
352 | "quote": "Mulai sekarang kita tidak usah membuang-buang waktu barang semenit pun untuk memikirkan orang-orang yang tidak kita sukai."
353 | },
354 | {
355 | "by": "Elanor Roosevelt",
356 | "quote": "Ketika kita berhenti membuat kontribusi, kita mulai mati."
357 | },
358 | {
359 | "by": "Elbert Hubbad",
360 | "quote": "Kesalahan terbesar yang dibuat manusia dalam kehidupannya adalah terus-menerus merasa takut bahwa mereka akan melakukan kesalahan."
361 | },
362 | {
363 | "by": "Elizabeth Browning",
364 | "quote": "Janganlah menyebut orang tidak bahagia sebelum dia mati. Jangan menilai pekerjaan seseorang sebelum pekerjaannya berakhir."
365 | },
366 | {
367 | "by": "Emerson",
368 | "quote": "Percaya pada diri sendiri adalah rahasia utama mencapai sukses."
369 | },
370 | {
371 | "by": "Engelbert Huperdinck",
372 | "quote": "Anda harus waspada dengan kesenangan. Pastikan bahwa Anda menikmatinya dan bukan dikendalikannya."
373 | },
374 | {
375 | "by": "Erich Watson",
376 | "quote": "Kehilangan kekayaan masih dapat dicari kembali, kehilangan kepercayaan sulit didapatkan kembali."
377 | },
378 | {
379 | "by": "Francois De La Roche",
380 | "quote": "Bila tidak mampu menemukan kedamaian dalam diri sendiri, tak ada gunanya mencari di tempat lain."
381 | },
382 | {
383 | "by": "Francois De La Roche",
384 | "quote": "Kita terbiasa menyembunyikan diri dari orang lain, sampai akhirnya kita sendiri tersembunyi dari diri kita."
385 | },
386 | {
387 | "by": "Francois Roche",
388 | "quote": "Kita lebih sibuk menyakinkan orang lain bahwa kita bahagia ketimbang benar-benar merasakan bahagia itu sendiri."
389 | },
390 | {
391 | "by": "Frank Crane",
392 | "quote": "Anda mungkin ditipu jika terlalu mempercayai, tetapi hidup Anda akan tersiksa jika tidak cukup mempercayai."
393 | },
394 | {
395 | "by": "Frank Giblin",
396 | "quote": "Jadilah diri Anda sendiri. Siapa lagi yang bisa melakukannya lebih baik ketimbang diri Anda sendiri?."
397 | },
398 | {
399 | "by": "Franklin",
400 | "quote": "Bila Anda ingin dicintai, cintailah dan bersikaplah sebagai orang yang patut dicintai."
401 | },
402 | {
403 | "by": "Fuller",
404 | "quote": "Contoh yang baik adalah nasihat terbaik."
405 | },
406 | {
407 | "by": "Galileo Galilei",
408 | "quote": "Rumput yang paling kuat tumbuhnya terdapat di atas tanah yang paling keras."
409 | },
410 | {
411 | "by": "Galileo Galilei",
412 | "quote": "Kamu tidak dapat mengajari seseorang apa pun, kamu hanya bisa membantunyanya menemukan apa yang ada dalam dirinya sendiri."
413 | },
414 | {
415 | "by": "Gandhi",
416 | "quote": "Mereka yang berjiwa lemah tak akan mampu memberi seuntai maaf tulus. Pemaaf sejati hanya melekat bagi mereka yang berjiwa tangguh."
417 | },
418 | {
419 | "by": "Gandhi",
420 | "quote": "Kebahagiaan tergantung pada apa yang dapat Anda berikan, bukan pada apa yang Anda peroleh."
421 | },
422 | {
423 | "by": "Gen Collin Powel",
424 | "quote": "Tak ada rahasia untuk menggapai sukses. Sukses itu dapat terjadi karena persiapan, kerja keras dan mau belajar dari kegagalan."
425 | },
426 | {
427 | "by": "George B. Shaw",
428 | "quote": "Hidup bukanlah tentang menemukan dirimu sendiri. Hidup adalah tentang menciptakan dirimu sendiri."
429 | },
430 | {
431 | "by": "George III",
432 | "quote": "Saya lebih baik kehilangan mahkota daripada melakukan tindakan yang menurut saya memalukan."
433 | },
434 | {
435 | "by": "George Santayana",
436 | "quote": "Tidak ada obat untuk kelahiran dan kematian, kecuali menikmati yang ada di antara keduanya."
437 | },
438 | {
439 | "by": "George W.",
440 | "quote": "Harapan tak pernah meninggalkan kita, kita yang meninggalkan harapan."
441 | },
442 | {
443 | "by": "Gilbert Chesterton",
444 | "quote": "Agar bisa menjadi cukup cerdas untuk meraih semua uang yang diinginkan, kita harus cukup bodoh untuk menginginkannya."
445 | },
446 | {
447 | "by": "Gothe",
448 | "quote": "Semua pengetahuan yang kumiliki bisa orang lain peroleh, tapi hatiku hanyalah untuk diriku sendiri."
449 | },
450 | {
451 | "by": "H. N. Spieghel",
452 | "quote": "Betapapun tingginya burung terbang, toh dia harus mencari dan mendapatkan makanannya di bumi juga."
453 | },
454 | {
455 | "by": "H.L Hunt",
456 | "quote": "Tetapkan apa yang Anda inginkan. Putuskan Anda ingin menukarnya dengan apa. Tentukan prioritas dan laksanakan."
457 | },
458 | {
459 | "by": "Hal Borland",
460 | "quote": "Melihat pohon, saya jadi mengerti tentang kesabaran. Memandang rumput, saya jadi menghargai ketekunan."
461 | },
462 | {
463 | "by": "Hamka",
464 | "quote": "Kecantikan yang abadi terletak pada keelokan adab dan ketinggian ilmu seseorang, bukan terletak pada wajah dan pakaiannya."
465 | },
466 | {
467 | "by": "Hamka",
468 | "quote": "Kita harus yakin bahwa apa yang ditentukan oleh Tuhan untuk kita, itulah yang terbaik."
469 | },
470 | {
471 | "by": "Hamka",
472 | "quote": "Berani menegakkan keadilan, walaupun mengenai diri sendiri, adalah puncak segala keberanian."
473 | },
474 | {
475 | "by": "Hamka",
476 | "quote": "Hawa nafsu membawa kesesatan dan tidak berpedoman. Sementara akal menjadi pedoman menuju keutamaan. Hawa nafsu menyuruhmu berangan-angan, tetapi akal menyuruhmu menimbang."
477 | },
478 | {
479 | "by": "Harriet Braiker",
480 | "quote": "Berusaha berhasil untuk memotivasi dirimu, tapi berusaha untuk selalu sempurna akan membuat tertekan."
481 | },
482 | {
483 | "by": "Helen Keller",
484 | "quote": "Kita tidak akan belajar berani dan sabar jika di dunia ini hanya ada kegembiraan."
485 | },
486 | {
487 | "by": "Henri Ford",
488 | "quote": "Kegagalan hanyalah kesempatan untuk memulai lagi dengan lebih pandai."
489 | },
490 | {
491 | "by": "Henry David Thoreau",
492 | "quote": "Kebaikan adalah satu-satunya investasi yang tidak akan merugikan."
493 | },
494 | {
495 | "by": "Henry Ford",
496 | "quote": "Idealis adalah orang yang membantu orang lain untuk makmur."
497 | },
498 | {
499 | "by": "Henry Ford",
500 | "quote": "Berpikir itu adalah pekerjaan yang berat di antara segala jenis pekerjaan. Itulah sebabnya sedikit sekali orang yang senang melakukannya."
501 | },
502 | {
503 | "by": "Henry Ford",
504 | "quote": "Persaingan yang tujuannya hanya untuk bersaing, untuk mengalahkan orang lain, tak pernah mendatangkan banyak manfaat."
505 | },
506 | {
507 | "by": "Henry Longfellow",
508 | "quote": "Kehidupan orang-orang besar mengingatkan kita bahwa kita bisa membuat kehidupan kita luhur."
509 | },
510 | {
511 | "by": "Henry Thoreau",
512 | "quote": "Hidupku menjadi hiburanku dan tak hentinya memberikan kejutan. Hidupku bagaikan drama dengan begitu banyak babak tanpa adegan penutup."
513 | },
514 | {
515 | "by": "Hubert Humprey",
516 | "quote": "Apa yang Anda lihat adalah apa yang Anda capai."
517 | },
518 | {
519 | "by": "Imam Al-Ghazali",
520 | "quote": "Kebahagiaan terletak pada kemenangan memerangi hawa nafsu dan menahan keinginan yang berlebih-lebihan."
521 | },
522 | {
523 | "by": "Imam Ghazali",
524 | "quote": "Caci maki dari seorang penjahat merupakan kehormatan bagi seorang yang jujur."
525 | },
526 | {
527 | "by": "J.C.F von Schiller",
528 | "quote": "Orang yang terlalu banyak merenung akan meraih sedikit."
529 | },
530 | {
531 | "by": "Jack Hyles",
532 | "quote": "Jangan gunakan orang-orang untuk membangun pekerjaan besar, gunakan pekerjaan Anda untuk membangun orang-orang besar."
533 | },
534 | {
535 | "by": "Jackson Brown",
536 | "quote": "Kesalahaan terbesar yang mungkin Anda buat adalah mempercayai bahwa Anda bekerja untuk orang lain."
537 | },
538 | {
539 | "by": "Jacques Audiberti",
540 | "quote": "Kepengecutan yang paling besar adalah ketika kita membuktikan kekuatan kita kepada kelemanan orang lain."
541 | },
542 | {
543 | "by": "James Thurber",
544 | "quote": "Jangan lihat masa lalu dengan penyesalan, jangan pula lihat masa depan dengan ketakutan, tapi lihatlah sekitar Anda dengan penuh kesadaran."
545 | },
546 | {
547 | "by": "Janet Erskine",
548 | "quote": "Jangan menunggu keadaan yang ideal. Jangan juga menunggu peluang-peluang terbaik. Keduanya tak akan pernah datang."
549 | },
550 | {
551 | "by": "Jeff Goins",
552 | "quote": "Kebanyakan orang sukses yang saya kenal bukan orang yang sibuk, mereka orang yang focus."
553 | },
554 | {
555 | "by": "Jerry West",
556 | "quote": "Anda tidak dapat melakukan banyak hal di hidup Anda, jika Anda hanya bekerja di hari-hari yang Anda rasakan baik."
557 | },
558 | {
559 | "by": "Jim Rohn",
560 | "quote": "Tembok yang kita bangun untuk menghambat kesedihan, juga membuat kita tertutup dari kebahagiaan."
561 | },
562 | {
563 | "by": "Jim Rohn",
564 | "quote": "Jika Anda tidak merancang hidup Anda sendiri, kemungkinan Anda akan menjalani rencana orang lain. Apa yang mereka rencanakan untuk Anda? Tidak banyak."
565 | },
566 | {
567 | "by": "Jim Ryan",
568 | "quote": "Motivasi adalah sesuatu yang membuat Anda memulai. Kebiasaan adalah sesuatu yang membuat Anda melanjutkan."
569 | },
570 | {
571 | "by": "Jimi Hendrix",
572 | "quote": "Ketika kekuatan akan cinta melebihi kecintaan akan kekuasaan, maka dunia pun menemukan kedamaian."
573 | },
574 | {
575 | "by": "Jimmy Dean",
576 | "quote": "Aku tak bisa merubah arah angin, tapi aku bisa menyesuaikan layarku untuk tetap bisa mencapai tujuanku."
577 | },
578 | {
579 | "by": "Joan Baez",
580 | "quote": "Kita tak bisa memilih bagaimana kita meninggal atau kapan. Kita hanya bisa memutuskan bagaimana kita hidup. Sekarang."
581 | },
582 | {
583 | "by": "John B. Gough",
584 | "quote": "Jika Anda ingin sukses, Anda harus menciptakan peluang untuk diri sendiri."
585 | },
586 | {
587 | "by": "John C. Maxwell",
588 | "quote": "Bekerja keras sekarang, merasakan hasilnya nanti; bermalas-malasan sekarang, merasakan akibatnya nanti."
589 | },
590 | {
591 | "by": "John C. Maxwell",
592 | "quote": "Untuk menangani diri Anda sendiri, gunakan kepala Anda. Untuk menangani orang lain, gunakan hati Anda."
593 | },
594 | {
595 | "by": "John C. Maxwell",
596 | "quote": "Bekerja keras sekarang, merasakannya nanti. Bermalas-malas sekarang, merasakan akibatnya nanti."
597 | },
598 | {
599 | "by": "John Craig",
600 | "quote": "Tidak peduli seberapa banyak yang dapat Anda lakukan, tidak peduli seberapa menarik hati kepribadian Anda, Anda tidak dapat melangkah jauh jika Anda tidak dapat bekerja bersama orang lain."
601 | },
602 | {
603 | "by": "John D. Rockefeller",
604 | "quote": "Orang termiskin adalah orang yang tidak mempunyai apa-apa kecuali uang."
605 | },
606 | {
607 | "by": "John Gardne",
608 | "quote": "Jika kita melayani, maka hidup akan lebih berarti."
609 | },
610 | {
611 | "by": "John Gray",
612 | "quote": "Sebenarnya semua kesulitan merupakan kesempatan bagi jiwa yang tumbuh."
613 | },
614 | {
615 | "by": "John Manson",
616 | "quote": "Anda dilahirkan orisinal, jadi tidak perlu setengah mati meniru orang lain."
617 | },
618 | {
619 | "by": "John Maxwell",
620 | "quote": "Seberapa jauh Anda gagal, tidak masalah, tetapi yang penting seberapa sering Anda bangkit kembali."
621 | },
622 | {
623 | "by": "John Q. Adams",
624 | "quote": "Jika tindakan-tindakan Anda mengilhami orang lain untuk bermimpi lebih, belajar lebih, bekerja lebih, dan menjadi lebih baik, Anda adalah seorang pemimpin."
625 | },
626 | {
627 | "by": "John Ruskin",
628 | "quote": "Saya yakin, ujian pertama bagi orang besar ialah kerendahan hati."
629 | },
630 | {
631 | "by": "John Ruskin",
632 | "quote": "Penghargaan tertinggi untuk kerja keras seseorang bukanlah apa yang ia hasilkan, tapi bagaimana ia berkembang karenanya."
633 | },
634 | {
635 | "by": "John Ruskin",
636 | "quote": "Penghargaan tertinggi untuk kerja keras seseorang bukanlah apa yang ia hasilkan, tetapi bagaimana ia berkembang karenanya."
637 | },
638 | {
639 | "by": "John Wolfgang",
640 | "quote": "Perbuatan-perbuatan salah adalah biasa bagi manusia, tetapi perbuatan pura-pura itulah sebenarnya yang menimbulkan permusuhan dan pengkhianatan."
641 | },
642 | {
643 | "by": "Joseph Addison",
644 | "quote": "Rahmat sering datang kepada kita dalam bentuk kesakitan, kehilangan dan kekecewaan; tetapi kalau kita sabar, kita segera akan melihat bentuk aslinya."
645 | },
646 | {
647 | "by": "Julia Roberts",
648 | "quote": "Cinta sejati tidak datang kepadamu, tetapi harus datang dari dalam dirimu."
649 | },
650 | {
651 | "by": "Junius",
652 | "quote": "Integritas seseorang diukur dengan tingkah lakunya bukan profesinya."
653 | },
654 | {
655 | "by": "Kahlil Gibran",
656 | "quote": "Kita berdoa kalau kesusahan dan membutuhkan sesuatu, mestinya kita juga berdoa dalam kegembiraan besar dan saat rezeki melimpah."
657 | },
658 | {
659 | "by": "Kahlil Gibran",
660 | "quote": "Untuk memahami hati dan pikiran seseorang, jangan lihat apa yang sudah dia capai, tapi lihat apa yang dia cita-citakan."
661 | },
662 | {
663 | "by": "Keri Russel",
664 | "quote": "Kadang kala, justru keputusan kecil yang akan mampu merubah hidup kita selamanya."
665 | },
666 | {
667 | "by": "Knute Rockne",
668 | "quote": "Apabila perjalanan menjadi sulit, orang ulet akan berjalan terus."
669 | },
670 | {
671 | "by": "Kong Hu Cu",
672 | "quote": "Orang yang berbudi tinggi selalu berpedoman pada keadilan dan selalu berusaha menjalankan kewajiban."
673 | },
674 | {
675 | "by": "Konrad Adenauer",
676 | "quote": "Kita semua hidup di bawah langit yang sama, tetapi tidak semua orang punya cakrawala yang sama."
677 | },
678 | {
679 | "by": "Kung Fu-Tze",
680 | "quote": "Ia yang bijak akan merasa malu, jika kata-katanya lebih baik daripada tindakannya."
681 | },
682 | {
683 | "by": "Lao Tzu",
684 | "quote": "Saat sadar bahwa kau tidak kekurangan suatu apa pun, seisi dunia menjadi milikku."
685 | },
686 | {
687 | "by": "Lao Tzu",
688 | "quote": "Saat sadar bahwa kau tidak kekurangan suatu apa pun, seisi dunia menjadi milikmu."
689 | },
690 | {
691 | "by": "Les Brown",
692 | "quote": "Terima tanggung jawab untuk diri Anda sendiri. Sadari bahwa hanya Anda sendiri, bukan orang lain, yang bisa membuat Anda pergi ke tempat yang Anda inginkan."
693 | },
694 | {
695 | "by": "Louis Gittner",
696 | "quote": "Meski yang kita hadapi adalah jalan buntu, namun cinta akan membangun jalan layang di atasnya."
697 | },
698 | {
699 | "by": "Louis Pasteur",
700 | "quote": "Tahukah Anda rahasia sukses saya dalam mencapai tujuan? Cuma keuletan, tak lebih dan tak kurang."
701 | },
702 | {
703 | "by": "Mahatma Gandhi",
704 | "quote": "Kepuasan terletak pada usaha, bukan pada hasil. Berusaha dengan keras adalah kemenangan yang hakiki."
705 | },
706 | {
707 | "by": "Marcel Ayme",
708 | "quote": "Kerendahan hati merupakan ruang tunggu bagi kesempurnaan."
709 | },
710 | {
711 | "by": "Maria Sharapova",
712 | "quote": "Saya belajar banyak dari kekalahan. Dan kekalahan-kekalahan itu, membuat saya semakin tabah."
713 | },
714 | {
715 | "by": "Mark Cuban",
716 | "quote": "Buatlah usaha Anda berhasil dengan satu-satunya cara: kerja keras!."
717 | },
718 | {
719 | "by": "Mark Twain",
720 | "quote": "Kebaikan adalah bahasa yang dapat didengar si tuli dan bisa dilihat si buta."
721 | },
722 | {
723 | "by": "Marsha Sinetar",
724 | "quote": "Lakukan apa yang Anda senangi, uang akan mengikuti."
725 | },
726 | {
727 | "by": "Martin Luther King",
728 | "quote": "Tak ada waktu yang tidak tepat untuk melakukan sesuatu yang benar."
729 | },
730 | {
731 | "by": "Mary McCarthy",
732 | "quote": "Kendatipun Anda berada di jalur yang tepat, Anda akan tetap terkejar jika hanya duduk-duduk saja disana."
733 | },
734 | {
735 | "by": "Maxim Gorky",
736 | "quote": "Kebahagiaan selalu tampak kecil saat berada dalam genggaman. Tapi coba lepaskan dan Anda akan langsung tahu, betapa besar dan berhargannya kebahagiaan."
737 | },
738 | {
739 | "by": "Mery Hemingway",
740 | "quote": "Latih diri Anda untuk tidak khawatir. Kekhawatiran tak pernah memperbaiki apa-apa."
741 | },
742 | {
743 | "by": "Michael Drury",
744 | "quote": "Kematangan bukanlah suatu keadaan yang dicapai dengan usia. Dia merupakan perkembangan dari cinta, belajar, membaca dan berpikir hingga menghasilkan kemampuan."
745 | },
746 | {
747 | "by": "Michael Pritchard",
748 | "quote": "Anda berhenti tertawa bukan karena bertambah tua. Sebaliknya Anda bertambah tua justru karena berhenti tertawa."
749 | },
750 | {
751 | "by": "Miguel de Cervantes",
752 | "quote": "Pepatah adalah kalimat singkat berdasarkan pengalaman panjang."
753 | },
754 | {
755 | "by": "Miguel de Unamuno",
756 | "quote": "Tidak dicintai orang lain memang menyedihkan, tapi lebih menyedihkan lagi kalau tidak bisa mencintai orang lain."
757 | },
758 | {
759 | "by": "N. H. Casson",
760 | "quote": "Kemiskinan jiwa lebih mengerikan daripada kemiskinan jasmani atau materi."
761 | },
762 | {
763 | "by": "Natalie Portman",
764 | "quote": "Anda belum bisa dibilang kaya sampai Anda memiliki sesuatu yang tidak dapat dibeli uang."
765 | },
766 | {
767 | "by": "Nelson Mandela",
768 | "quote": "Pendidikan adalah senjata paling ampuh dimana kau dapat menggunakannya untuk merubah dunia."
769 | },
770 | {
771 | "by": "Norman Peale",
772 | "quote": "Campakanlah jauh-jauh pikiran murung dan kesal itu, lalu bangkitkanlah."
773 | },
774 | {
775 | "by": "Nunse",
776 | "quote": "Bukanlah yang kuat, tetapi yang uletlah yang menjadikan mereka manusia yang besar."
777 | },
778 | {
779 | "by": "O. S. Marden",
780 | "quote": "Kemajuan adalah hasil dari memusatkan seluruh kekuatan jiwa dan pikiran pada cita-cita yang dituju."
781 | },
782 | {
783 | "by": "Oliver W. Holmes",
784 | "quote": "Semakin lama kita hidup, semakin kita menemukan bahwa kita mirip dengan orang lain."
785 | },
786 | {
787 | "by": "Oprah Winfrey",
788 | "quote": "Melakukan yang terbaik pada saat ini akan menempatkan Anda ke tempat terbaik pada saat berikutnya."
789 | },
790 | {
791 | "by": "Oscar Wilde",
792 | "quote": "Jika seseorang menyatakan kebenaran, dia yakin; cepat atau lambat; akan mendapatkannya."
793 | },
794 | {
795 | "by": "Pablo Picasso",
796 | "quote": "Bila semangat Anda menurun, lakukanlah sesuatu. Kalau Anda telah melakukan sesuatu keadaan tidak berubah, lakukanlah sesuatu yang berbeda."
797 | },
798 | {
799 | "by": "Paul Galvin",
800 | "quote": "Jangan takut dengan kesalahan. Kebijaksanaan biasanya lahir dari kesalahan."
801 | },
802 | {
803 | "by": "Paul Harvey",
804 | "quote": "Saya tidak pernah melihat suatu monumen didirikan bagi orang pesimis."
805 | },
806 | {
807 | "by": "Pepatah Cina",
808 | "quote": "Beranilah menyadari kesalahan dan mulai lagi."
809 | },
810 | {
811 | "by": "Pepatah Cina",
812 | "quote": "Benar jadi berani."
813 | },
814 | {
815 | "by": "Pepatah Cina",
816 | "quote": "Orang yang bertanya, bodoh dalam 5 menit. Dan orang yang tidak bertanya akan tetap bodoh untuk selamanya."
817 | },
818 | {
819 | "by": "Pepatah Cina",
820 | "quote": "Bila saya mendengar, saya akan lupa. Setelah melihat saya bisa mengerti. Dan setelah mengerjakan, barulah saya bisa memahami."
821 | },
822 | {
823 | "by": "Pepatah Cina",
824 | "quote": "Orang yang tersenyum selalu lebih kuat dari orang yang marah."
825 | },
826 | {
827 | "by": "Pepatah Cina",
828 | "quote": "Orang yang memindahkan gunung memulai dengan memindahkan batu-batu kecil."
829 | },
830 | {
831 | "by": "Pepatah Inggris",
832 | "quote": "Orang yang mencari masalah akan selalu mendapatkannya."
833 | },
834 | {
835 | "by": "Pepatah Inggriss",
836 | "quote": "Keterampilan dan keyakinan merupakan pasukan bersenjata yang tidak dapat dikalahkan."
837 | },
838 | {
839 | "by": "Pepatah Jepang",
840 | "quote": "Sebatang anak panah mudah dipatahkan, tetapi tidak demikian dengan sepuluh anak panah yang disatukan."
841 | },
842 | {
843 | "by": "Pepatah Jepang",
844 | "quote": "Visi tanpa aksi adalah mimpi di siang bolong. Aksi tanpa visi adalah mimpi buruk."
845 | },
846 | {
847 | "by": "Pepatah Jerman",
848 | "quote": "Orang yang tak pernah mencicipi pahit tak akan tahu apa itu manis."
849 | },
850 | {
851 | "by": "Pepatah Latin",
852 | "quote": "Dengan belajar Anda bisa mengajar. Dengan mengajar, Anda belajar."
853 | },
854 | {
855 | "by": "Pepatah Persia",
856 | "quote": "Saya menangis karena tak punya sepatu, sampai saya melihat orang tak punya kaki."
857 | },
858 | {
859 | "by": "Pepatah Roma",
860 | "quote": "Kesengsaraan menghasilkan ketekunan. Ketekunan menghasilkan watak, dan watak menghasilkan harapan."
861 | },
862 | {
863 | "by": "Pepatah Skotlandia",
864 | "quote": "Bila kemauan siap, kaki menjadi ringan."
865 | },
866 | {
867 | "by": "Pepatah Spanyol",
868 | "quote": "Mengenal diri sendiri adalah awal dari perbaikan diri."
869 | },
870 | {
871 | "by": "Pepatah Tibet",
872 | "quote": "Jangan meremehkan raja yang picik, seperti halnya jangan meremehkan sungai yang kecil."
873 | },
874 | {
875 | "by": "Pepatah Tibet",
876 | "quote": "Apabila seseorang mengajarkan sesuatu, dia sendiri harus melaksanakan ajaran itu."
877 | },
878 | {
879 | "by": "Peter Sinclair",
880 | "quote": "Kehidupan yang hebat adalah kulminasi dari pemikiran-pemikiran hebat disertai dengan tindakan-tindakan hebat."
881 | },
882 | {
883 | "by": "Phyllis Bottome",
884 | "quote": "Ada dua cara mengatasi kesulitan, Anda mengubah kesulitan-kesulitan atau Anda mengubah diri sendiri untuk mengatasinya."
885 | },
886 | {
887 | "by": "Plato",
888 | "quote": "Orang bijak berbicara karena mereka mempunyai sesuatu untuk dikatakan, orang bodoh berbicara karena mereka ingin mengatakan sesuatu."
889 | },
890 | {
891 | "by": "Plato",
892 | "quote": "Orang bijak berbicara karena ia memiliki sesuatu untuk dikatakan. Orang bodoh berbicara karena ia atau dia harus mengatakan sesuatu."
893 | },
894 | {
895 | "by": "Plato",
896 | "quote": "Berbuat tidak adil lebih memalukan daripada menderita ketidakadilan."
897 | },
898 | {
899 | "by": "Plato",
900 | "quote": "Siapa yang tidak bisa memimpin dirinya sendiri, tidak akan bisa memimpin orang."
901 | },
902 | {
903 | "by": "Plautus",
904 | "quote": "Kesabaran adalah obat terbaik untuk semua masalah."
905 | },
906 | {
907 | "by": "Plautus",
908 | "quote": "Jauh lebih mudah memulai secara baik daripada mengakhiri secara baik."
909 | },
910 | {
911 | "by": "Pliny The Elder",
912 | "quote": "Harapan adalah tiang yang menyangga dunia."
913 | },
914 | {
915 | "by": "R. A. Kartini",
916 | "quote": "Kemenangan gemilang tidak diperoleh dari medan pertempuran saja, tetapi sering diperoleh dari hati."
917 | },
918 | {
919 | "by": "R. Browning",
920 | "quote": "kita jatuh untuk bangun, berhenti untuk berjalan, dan tidur untuk bangun."
921 | },
922 | {
923 | "by": "R. W. Shephred",
924 | "quote": "Kamu harus menghadapi depresi, sama seperti kamu menghadapi seekor harimau."
925 | },
926 | {
927 | "by": "R.H. Grant",
928 | "quote": "Jika Anda mempekerjakan orang-orang yang lebih pintar dari Anda, Anda membuktikan Anda lebih pintar dari mereka."
929 | },
930 | {
931 | "by": "Rabbi Schachtel",
932 | "quote": "Kebahagiaan bukanlah memiliki apa yang kita inginkan, melainkan menginginkan apa yang kita miliki."
933 | },
934 | {
935 | "by": "Ralph W. Emerson",
936 | "quote": "Satu ons aksi jauh lebih berharga daripada satu ton teori."
937 | },
938 | {
939 | "by": "Ralph W. Emerson",
940 | "quote": "Seseorang itu sukses besar jika dia sadar, kegagalan-kegagalannya adalah persiapan untuk kemenangan-kemenangannya."
941 | },
942 | {
943 | "by": "Ralph Waldo Emerson",
944 | "quote": "Kedamaian tidak terdapat di dunia luar, melainkan terdapat dalam jiwa manusia itu sendiri."
945 | },
946 | {
947 | "by": "Ralph Waldo Emerson",
948 | "quote": "Percayalah kepada orang lain, dan mereka akan tulus kepada Anda. Perlakukan mereka seperti orang besar dan mereka akan memperlihatkan dirinya sebagai orang besar."
949 | },
950 | {
951 | "by": "Rene Descartes",
952 | "quote": "Tidak cukup hanya punya otak yang baik. Yang penting adalah menggunakannya secara baik."
953 | },
954 | {
955 | "by": "Richard Bach",
956 | "quote": "Tanyakan pada diri sendiri rahasia sukses. Dengarkan jawaban Anda, dan lakukan."
957 | },
958 | {
959 | "by": "Richard C. Miller",
960 | "quote": "Jika rumput tetangga lebih hijau, bersyukurlah Anda masih bisa berpijak di tanah untuk melihatnya."
961 | },
962 | {
963 | "by": "Robert Collier",
964 | "quote": "Kesempatan Anda untuk sukses di setiap kondisi selalu dapat diukur oleh seberapa besar kepercayaan Anda pada diri sendiri."
965 | },
966 | {
967 | "by": "Robert F. Kennedy",
968 | "quote": "Kemajuan merupakan kata-kata merdu, tetapi perubahanlah penggerakknya dan perubahan mempunyai banyak musuh."
969 | },
970 | {
971 | "by": "Robert Frost",
972 | "quote": "Dua jalan dipisahkan pohon, dan saya mengambil jalan yang jarang ditempuh orang. Dan itulah yang membuat perubahan."
973 | },
974 | {
975 | "by": "Robert Frost",
976 | "quote": "Alasan mengapa kecemasan membunuh lebih banyak orang dibanding kerja adalah, lebih banyak orang cemas dibanding bekerja."
977 | },
978 | {
979 | "by": "Robert G. Ingersoll",
980 | "quote": "Sedikit orang kaya yang memiliki harta. Kebanyakan harta yang memiliki mereka."
981 | },
982 | {
983 | "by": "Robert Half",
984 | "quote": "Ketekunan bisa membuat yang tidak mungkin jadi mungkin, membuat kemungkinan jadi kemungkinan besar, dan kemungkinan besar menjadi pasti."
985 | },
986 | {
987 | "by": "Robert S. Lynd",
988 | "quote": "Hanya ikan yang bodoh yang bisa dua kali kena pancing dengan umpan yang sama."
989 | },
990 | {
991 | "by": "Robert Von Hartman",
992 | "quote": "Ambisi seperti air laut, semakin banyak orang meminumnya semakin orang menjadi haus."
993 | },
994 | {
995 | "by": "Robinsori",
996 | "quote": "Cemas dan ketakutan adalah akibat kebodohan dan keraguan."
997 | },
998 | {
999 | "by": "Romand Rolland",
1000 | "quote": "Pahlawan adalah seseorang yang melakukan apa yang mampu dia lakukan."
1001 | },
1002 | {
1003 | "by": "Roosevelt",
1004 | "quote": "Jika Anda ingin menjadi orang besar, janganlah suka beromong besar, kerjakanlah hal-hal yang kecil dahulu."
1005 | },
1006 | {
1007 | "by": "Ross Cooper",
1008 | "quote": "Satu-satunya cara untuk mengubah hidup kita adalah dengan mengubah pikiran kita."
1009 | },
1010 | {
1011 | "by": "Ruth P. Freedman",
1012 | "quote": "Perubahan terjadi ketika seseorang menjadi dirinya sendiri, bukan ketika ia mencoba menjadi orang lain."
1013 | },
1014 | {
1015 | "by": "Salanter Lipkin",
1016 | "quote": "Perbaiki diri Anda, tetapi jangan jatuhkan orang lain."
1017 | },
1018 | {
1019 | "by": "Samuel Smiles",
1020 | "quote": "Cara tercepat untuk menuntaskan banyak hal adalah dengan menyelesaikannya satu demi satu."
1021 | },
1022 | {
1023 | "by": "Satya Sai Baba",
1024 | "quote": "Dua hal yang harus dilupakan, kebaikan yang telah kita lakukan kepada orang lain dan kesalahan orang lain kepada kita."
1025 | },
1026 | {
1027 | "by": "Scott Fitzgerald",
1028 | "quote": "Ingatlah, jika Anda menutup mulut sebenarnya Anda telah melakukan pilihan."
1029 | },
1030 | {
1031 | "by": "Seneca",
1032 | "quote": "Hati manusia tidak akan pernah tenteram sebelum berdamai dengan diri sendiri."
1033 | },
1034 | {
1035 | "by": "Seneca",
1036 | "quote": "Hidup berarti berjuang. Hidup nikmat tanpa badai topan adalah laksana laut yang mati."
1037 | },
1038 | {
1039 | "by": "Shackespeare",
1040 | "quote": "Kesedihan hanya bisa ditanggulangi oleh orang yang mengalaminya sendiri."
1041 | },
1042 | {
1043 | "by": "Shirley Briggs",
1044 | "quote": "Beranikan diri untuk menjadi dirimu sendiri, karena kita bisa melakukan hal itu lebih baik daripada orang lain."
1045 | },
1046 | {
1047 | "by": "Soe Hok Gie",
1048 | "quote": "Lebih baik diasingkan daripada menyerah kepada kemunafikan."
1049 | },
1050 | {
1051 | "by": "Soemantri Metodipuro",
1052 | "quote": "Langkah pertama untuk memilih keyakinan pada diri sendiri adalah mengenal diri kita sendiri."
1053 | },
1054 | {
1055 | "by": "Sophocles",
1056 | "quote": "Bila seseorang kehilangan segala sumber kebahagiaan, dia tidak lagi hidup, tapi mayat yang bernafas."
1057 | },
1058 | {
1059 | "by": "St. Jerome",
1060 | "quote": "Baik, lebih baik, terbaik. Jangan pernah berhenti sampai baik menjadi lebih baik, dan lebih baik menjadi terbaik."
1061 | },
1062 | {
1063 | "by": "Stephen R. Covey",
1064 | "quote": "Motivasi adalah api dari dalam. Jika orang lain mencoba menyalakannya untuk Anda, kemungkinan apinya hanya menyala sebentar."
1065 | },
1066 | {
1067 | "by": "Steve Jobs",
1068 | "quote": "Saya bangga, baik pada hal yang tidak kami lakukan maupun pada hal yang kami lakukan."
1069 | },
1070 | {
1071 | "by": "Sujiwo Tejo",
1072 | "quote": "Cinta tak perlu pengorbanan. Pada saat kau merasa berkorban, pada saat itu cintamu mulai pudar."
1073 | },
1074 | {
1075 | "by": "Sydney Harris",
1076 | "quote": "Ancaman nyata sebenarnya bukan pada saat komputer mulai bisa berpikir seperti manusia, tetapi ketika manusia mulai berpikir seperti komputer."
1077 | },
1078 | {
1079 | "by": "Theodore Rosevelt",
1080 | "quote": "Lakukan apa yang dapat Anda lakukan dengan apa yang Anda miliki dan tempat Anda berada."
1081 | },
1082 | {
1083 | "by": "Thomas Alva Edison",
1084 | "quote": "Banyak kegagalan dalam ini dikarenakan orang-orang tidak menyadari betapa dekatnya mereka dengan keberhasilan saat mereka menyerah."
1085 | },
1086 | {
1087 | "by": "Thomas Carlyle",
1088 | "quote": "Pergilah sejauh mungkin yang bisa Anda lihat dan Anda akan bisa melihat lebih jauh."
1089 | },
1090 | {
1091 | "by": "Thomas Fuller",
1092 | "quote": "Orang yang tidak bisa memaafkan orang lain sama saja dengan orang yang memutuskan jembatan yang harus dilaluinya, karena semua orang perlu dimaafkan."
1093 | },
1094 | {
1095 | "by": "Thomas Fuller",
1096 | "quote": "Menyaksikan adalah mempercayai, tapi merasakan adalah kebenaran."
1097 | },
1098 | {
1099 | "by": "Thomas Jefferson",
1100 | "quote": "Dalam hal prinsip, usahakan kukuh seperti batu karang. Dalam hal selera, coba berenang mengikuti arus."
1101 | },
1102 | {
1103 | "by": "Tung Desem Waringin",
1104 | "quote": "Setiap badai pasti berlalu dan saya akan tumbuh semakin kuat."
1105 | },
1106 | {
1107 | "by": "Tyler Durden",
1108 | "quote": "Setelah kehilangan segalanya, barulah kita bebas melakukan apa saja."
1109 | },
1110 | {
1111 | "by": "Umar bin Khattab",
1112 | "quote": "Raihlah ilmu dan untuk meraih ilmu belajarlah untuk tenang dan sabar."
1113 | },
1114 | {
1115 | "by": "Vicosta Efran",
1116 | "quote": "Hiduplah seperti lilin yang menerangi orang lain. Jangan hidup seperti duri yang mencucuk diri dan menyakiti orang lain."
1117 | },
1118 | {
1119 | "by": "Victor Hugo",
1120 | "quote": "Kesedihan adalah buah. Tuhan tak pernah membiarkannya tumbuh dicabang yang terlalu lemah untuk menanggungnya."
1121 | },
1122 | {
1123 | "by": "Victor Hugo",
1124 | "quote": "Kebahagian tertinggi dalam kehidupan adalah kepastian bahwa Anda dicintai apa adanya, atau lebih tepatnya dicintai walaupun Anda seperti diri Anda adanya."
1125 | },
1126 | {
1127 | "by": "Victor Hugo",
1128 | "quote": "Masalahnya bukan kurangnya tenaga, tetapi kurangnya daya kemauan."
1129 | },
1130 | {
1131 | "by": "Vince Lambardi",
1132 | "quote": "Kemenangan bukanlah segala-galanya, tetapi perjuangan untuk menang adalah segala-galanya."
1133 | },
1134 | {
1135 | "by": "Virginia Wolf",
1136 | "quote": "Jika Anda tak bisa mengatakan hal yang benar dari diri Anda, maka Anda pun tak bisa mengatakan hal yang benar dari orang lain."
1137 | },
1138 | {
1139 | "by": "W. Camden",
1140 | "quote": "Burung yang terbang pagi akan memperoleh cacing paling banyak."
1141 | },
1142 | {
1143 | "by": "Walt Disney",
1144 | "quote": "Cara untuk memulai adalah berhenti berbicara dan mulai lakukan sesuatu."
1145 | },
1146 | {
1147 | "by": "Walter Cronkite",
1148 | "quote": "Sukses akan lebih permanen jika Anda meraihnya tanpa menghancurkan prinsip-prinsip Anda."
1149 | },
1150 | {
1151 | "by": "Warren Buffett",
1152 | "quote": "Dari dulu saya selalu yakin saya akan kaya. Saya kira saya tak pernah meragukannya, satu menit pun."
1153 | },
1154 | {
1155 | "by": "Whitney Young",
1156 | "quote": "Lebih baik menyiapkan diri untuk sebuah peluang dan tidak mendapatkannya daripada punya peluang dan tidak menyiapkan diri."
1157 | },
1158 | {
1159 | "by": "William A. W.",
1160 | "quote": "Satu-satunya yang bisa menghalangi kita adalah keyakinan yang salah dan sikap yang negatif."
1161 | },
1162 | {
1163 | "by": "William Allen White",
1164 | "quote": "Saya tidak takut pada hari esok karena saya sudah melihat hari kemarin dan saya mencintai hari ini."
1165 | },
1166 | {
1167 | "by": "William Arthur",
1168 | "quote": "Guru yang biasa-biasa, berbicara. Guru yang bagus, menerangkan. Guru yang hebat, mendemonstrasikan. Guru yang agung, memberi inspirasi."
1169 | },
1170 | {
1171 | "by": "William F. Halsey",
1172 | "quote": "Semua masalah menjadi lebih kecil jika Anda tidak mengelaknya, tapi menghadapinya."
1173 | },
1174 | {
1175 | "by": "William J. Johnston",
1176 | "quote": "Perubahan yang paling bermakna dalam hidup adalah perubahan sikap. Sikap yang benar akan menghasilkan tindakan yang benar."
1177 | },
1178 | {
1179 | "by": "William James",
1180 | "quote": "Jika Anda harus membuat pilihan dan Anda tidak melakukannya, itu saja sudah pilihan."
1181 | },
1182 | {
1183 | "by": "William James",
1184 | "quote": "Percaya bahwa hidup itu berharga, dan kepercayaan Anda akan membantu menciptakan hidup yang berharga."
1185 | },
1186 | {
1187 | "by": "William Ralph Inge",
1188 | "quote": "Kuatir sama seperti membayar bunga untuk uang yang mungkin tak pernah Anda pinjam."
1189 | },
1190 | {
1191 | "by": "William Shakespeare",
1192 | "quote": "Jangan sering menyalakan api kebencian terhadap musuhmu, karena nanti akan membakar dirimu sendiri."
1193 | },
1194 | {
1195 | "by": "William Shakespeare",
1196 | "quote": "Bila kamu jujur kepada dirimu sendiri, bagai siang pasti berganti malam, kamu takkan pernah berdusta kepada orang lain."
1197 | },
1198 | {
1199 | "by": "William Shakespeare",
1200 | "quote": "Kutu yang berani adalah kutu yang bisa berani mendapatkan sarapannya pada bibir seekor singa."
1201 | },
1202 | {
1203 | "by": "Winston Churchill",
1204 | "quote": "Kita menyambung hidup dengan apa yang kita peroleh, tapi kita menghadirkan kehidupkan dengan apa yang kita berikan."
1205 | },
1206 | {
1207 | "by": "Wolfgang von Gothe",
1208 | "quote": "Pengetahuan tidaklah cukup, kita harus mengamalkannya. Niat tidak cukup, kita harus melakukannya."
1209 | },
1210 | {
1211 | "by": "Zachary Scott",
1212 | "quote": "Ketika Anda bertambah tua, Anda akan menemukan satu-satunya hal yang Anda sesali adalah hal-hal yang tidak Anda lakukan."
1213 | },
1214 | {
1215 | "by": "Zig Zaglar",
1216 | "quote": "Batu fondasi untuk sukses yang seimbang adalah kejujuran, watak, integritas, iman, cinta dan kesetiaan."
1217 | },
1218 | {
1219 | "by": "Zig Zaglar",
1220 | "quote": "Kebanyakan orang gagal meraih cita-citanya bukan karena mereka tidak mampu, tetapi karena tidak berkomitmen."
1221 | },
1222 | {
1223 | "by": "Zig Zaglar",
1224 | "quote": "Kita tidak harus hebat saat memulai, tapi kita harus memulai untuk menjadi hebat."
1225 | }
1226 | ]
1227 |
--------------------------------------------------------------------------------
/lib/database/setting.json:
--------------------------------------------------------------------------------
1 | {
2 | "limitCount": 15,
3 | "memberLimit": 0,
4 | "groupLimit": 15,
5 | "barbarkey": "YOUR.APIKEY",
6 | "vhtearkey": "YOUR.APIKEY",
7 | "prefix": "_",
8 | "owner": "YOUR_NUMBER@c.us",
9 | "mtc": false,
10 | "restartState": false,
11 | "restartId": "undefined",
12 | "banChats": false,
13 | "Rest": true
14 | }
15 |
--------------------------------------------------------------------------------
/lib/database/vip.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/database/welcome.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/downloader.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable prefer-promise-reject-errors */
2 | const { fetchJson } = require('../utils/fetcher')
3 | const { promisify } = require('util')
4 | const { twitter } = require('video-url-link')
5 |
6 | const twtGetInfo = promisify(twitter.getInfo)
7 |
8 |
9 | /**
10 | * Get Twitter Metadata
11 | *
12 | * @param {String} url
13 | */
14 | const tweet = (url) => new Promise((resolve, reject) => {
15 | console.log('Get metadata from =>', url)
16 | twtGetInfo(url, {})
17 | .then((content) => resolve(content))
18 | .catch((err) => {
19 | console.error(err)
20 | reject(err)
21 | })
22 | })
23 |
24 |
25 | module.exports = {
26 | tweet
27 | }
--------------------------------------------------------------------------------
/lib/fetcher.js:
--------------------------------------------------------------------------------
1 | const fetch = require('node-fetch');
2 |
3 | const getBase64 = async (url) => {
4 | const response = await fetch(url, { headers: { 'User-Agent': 'okhttp/4.5.0' } });
5 | if (!response.ok) throw new Error(`unexpected response ${response.statusText}`);
6 | const buffer = await response.buffer();
7 | const videoBase64 = `data:${response.headers.get('content-type')};base64,` + buffer.toString('base64');
8 | if (buffer)
9 | return videoBase64;
10 | };
11 |
12 | exports.getBase64 = getBase64;
13 |
--------------------------------------------------------------------------------
/lib/functions.js:
--------------------------------------------------------------------------------
1 | const { default: got } = require('got/dist/source');
2 | const fetch = require('node-fetch')
3 | const { fetchBase64 } = require("../utils/fetcher")
4 | const request = require('request')
5 | const emoji = require('emoji-regex')
6 | const fs = require('fs-extra')
7 | const axios = require('axios')
8 | const vhtear = 'API_KEY'
9 |
10 | function curlyRemover(chat) {
11 | if (chat !== undefined) {
12 | let sr = /{(.*?)}/g;
13 | let ket = chat.toString().replace(sr, '');
14 | return ket;
15 | }
16 | return chat;
17 | }
18 |
19 | const liriklagu = async(lagu) => {
20 | const response = await fetch(`http://scrap.terhambar.com/lirik?word=${lagu}`)
21 | if (!response.ok) throw new Error(`unexpected response ${response.statusText}`);
22 | const json = await response.json()
23 | if (json.status === true) return `Lirik Lagu ${lagu}\n\n${json.result.lirik}`
24 | return `[ Error ] Lirik Lagu ${lagu} tidak di temukan!`
25 | }
26 |
27 |
28 | const quotemaker = async(quotes, author = 'EmditorBerkelas', type = 'random') => {
29 | var q = quotes.replace(/ /g, '%20').replace('\n', '%5Cn')
30 | const response = await fetch(`https://terhambar.com/aw/qts/?kata=${q}&author=${author}&tipe=${type}`)
31 | if (!response.ok) throw new Error(`unexpected response ${response.statusText}`)
32 | const json = await response.json()
33 | if (json.status) {
34 | if (json.result !== '') {
35 | const base64 = await fetchBase64(json.result)
36 | return base64
37 | }
38 | }
39 | }
40 |
41 | const emojiStrip = (string) => {
42 | return string.replace(emoji, '')
43 | }
44 | const fb = async(url) => {
45 | const response = await fetch(`http://scrap.terhambar.com/fb?link=${url}`)
46 | if (!response.ok) throw new Error(`unexpected response ${response.statusText}`)
47 | const json = await response.json()
48 | if (json.status === true) return {
49 | 'capt': json.result.title,
50 | 'exts': '.mp4',
51 | 'url': json.result.linkVideo.sdQuality
52 | }
53 | return {
54 | 'capt': '[ ERROR ] Not found!',
55 | 'exts': '.jpg',
56 | 'url': 'https://c4.wallpaperflare.com/wallpaper/976/117/318/anime-girls-404-not-found-glowing-eyes-girls-frontline-wallpaper-preview.jpg'
57 | }
58 | }
59 |
60 | const ss = async(query) => {
61 | request({
62 | url: "https://api.apiflash.com/v1/urltoimage",
63 | encoding: "binary",
64 | qs: {
65 | access_key: "2fc9726e595d40eebdf6792f0dd07380",
66 | url: query
67 | }
68 | }, (error, response, body) => {
69 | if (error) {
70 | console.log(error);
71 | } else {
72 | fs.writeFile("./media/img/screenshot.jpeg", body, "binary", error => {
73 | console.log(error);
74 | })
75 | }
76 | })
77 | }
78 |
79 | const randomNimek = async(type) => {
80 | var url = 'https://api.computerfreaker.cf/v1/'
81 | switch (type) {
82 | case 'nsfw':
83 | const nsfw = await fetch(url + 'nsfwneko')
84 | if (!nsfw.ok) throw new Error(`unexpected response ${nsfw.statusText}`)
85 | const resultNsfw = await nsfw.json()
86 | return resultNsfw.url
87 | break
88 | case 'hentai':
89 | const hentai = await fetch(url + 'hentai')
90 | if (!hentai.ok) throw new Error(`unexpected response ${hentai.statusText}`)
91 | const resultHentai = await hentai.json()
92 | return resultHentai.url
93 | break
94 | case 'anime':
95 | let anime = await fetch(url + 'anime')
96 | if (!anime.ok) throw new Error(`unexpected response ${anime.statusText}`)
97 | const resultNime = await anime.json()
98 | return resultNime.url
99 | break
100 | case 'neko':
101 | let neko = await fetch(url + 'neko')
102 | if (!neko.ok) throw new Error(`unexpected response ${neko.statusText}`)
103 | const resultNeko = await neko.json()
104 | return resultNeko.url
105 | break
106 | case 'trap':
107 | let trap = await fetch(url + 'trap')
108 | if (!trap.ok) throw new Error(`unexpected response ${trap.statusText}`)
109 | const resultTrap = await trap.json()
110 | return resultTrap.url
111 | break
112 | }
113 | }
114 |
115 | const stickerburn = (imageUrl) => new Promise((resolve, reject) => {
116 | fetch('https://api.vhtear.com/burning_fire?link=' + encodeURIComponent(imageUrl) + '&apikey=' + vhtear, {
117 | method: 'GET',
118 | })
119 | .then(async res => {
120 | const text = await res.json()
121 |
122 | resolve(text)
123 |
124 | })
125 | .catch(err => reject(err))
126 | });
127 |
128 | const stickerlight = (imageUrl) => new Promise((resolve, reject) => {
129 | fetch('https://api.vhtear.com/lightning?link=' + encodeURIComponent(imageUrl) + '&apikey=' + vhtear, {
130 | method: 'GET',
131 | })
132 | .then(async res => {
133 | const text = await res.json()
134 |
135 | resolve(text)
136 |
137 | })
138 | .catch(err => reject(err))
139 | });
140 |
141 | const sleep = async(ms) => {
142 | return new Promise(resolve => setTimeout(resolve, ms));
143 | }
144 |
145 | const jadwalTv = async(query) => {
146 | const res = await got.get(`https://api.haipbis.xyz/jadwaltv/${query}`).json()
147 | if (res.error) return res.error
148 | switch (query) {
149 | case 'antv':
150 | return `\t\t[ ANTV ]\n${res.join('\n')}`
151 | break
152 | case 'gtv':
153 | return `\t\t[ GTV ]\n${res.join('\n')}`
154 | break
155 | case 'indosiar':
156 | return `\t\t[ INDOSIAR ]\n${res.join('\n')}`
157 | break
158 | case 'inewstv':
159 | return `\t\t[ iNewsTV ]\n${res.join('\n')}`
160 | break
161 | case 'kompastv':
162 | return `\t\t[ KompasTV ]\n${res.join('\n')}`
163 | break
164 | case 'mnctv':
165 | return `\t\t[ MNCTV ]\n${res.join('\n')}`
166 | break
167 | case 'metrotv':
168 | return `\t\t[ MetroTV ]\n${res.join('\n')}`
169 | break
170 | case 'nettv':
171 | return `\t\t[ NetTV ]\n${res.join('\n')}`
172 | break
173 | case 'rcti':
174 | return `\t\t[ RCTI ]\n${res.join('\n')}`
175 | break
176 | case 'sctv':
177 | return `\t\t[ SCTV ]\n${res.join('\n')}`
178 | break
179 | case 'rtv':
180 | return `\t\t[ RTV ]\n${res.join('\n')}`
181 | break
182 | case 'trans7':
183 | return `\t\t[ Trans7 ]\n${res.join('\n')}`
184 | break
185 | case 'transtv':
186 | return `\t\t[ TransTV ]\n${res.join('\n')}`
187 | break
188 | default:
189 | return '[ ERROR ] Channel TV salah! silahkan cek list channel dengan mengetik perintah *!listChannel*'
190 | break
191 | }
192 | }
193 |
194 | const instagram = async(url) => new Promise(async(resolve, reject) => {
195 | const api = 'https://api.vhtear.com/instadl?link=' + url + '&apikey=vhtear'
196 | axios.get(api).then(async(res) => {
197 | const st = res.data.result
198 | if (st.status === false) {
199 | resolve(`Media Tidak Di Temukan`)
200 | } else {
201 | resolve(st)
202 | }
203 | }).catch(err => {
204 | console.log(err)
205 | resolve(`Maaf, Server Sedang Error`)
206 | })
207 | })
208 |
209 | const igstory = async(query) => new Promise(async(resolve, reject) => {
210 | const api = 'https://api.vhtear.com/igstory?query=' + query + '&apikey=vhtear'
211 | axios.get(api).then(async(res) => {
212 | const sta = res.data.result
213 | if (sta.status === false) {
214 | resolve(`Media Tidak Di Temukan`)
215 | } else {
216 | resolve(sta)
217 | }
218 | }).catch(err => {
219 | console.log(err)
220 | resolve(`Maaf, Server Sedang Error`)
221 | })
222 | })
223 |
224 | exports.liriklagu = liriklagu;
225 | exports.quotemaker = quotemaker;
226 | exports.randomNimek = randomNimek
227 | exports.fb = fb
228 | exports.emojiStrip = emojiStrip
229 | exports.sleep = sleep
230 | exports.jadwalTv = jadwalTv
231 | exports.ss = ss
232 | exports.stickerburn = stickerburn
233 | exports.instagram = instagram
234 | exports.igstory = igstory
235 | exports.stickerlight = stickerlight
--------------------------------------------------------------------------------
/lib/help.js:
--------------------------------------------------------------------------------
1 | const { groupChangeEvent } = require("@open-wa/wa-automate/dist/api/model/group-metadata")
2 | const fs = require('fs-extra')
3 | const moment = require('moment-timezone')
4 | const speed = require('performance-now')
5 | const {
6 | prefix
7 | } = JSON.parse(fs.readFileSync('./lib/setting.json'))
8 |
9 | exports.admeen = () => {
10 | return `
11 | ╭──「 *MENU ADMIN GROUP* 」──
12 | │+ *${prefix}add* 6281281XXXX
13 | │+ *${prefix}kick* @tagmember
14 | │+ *${prefix}promote* @tagmember
15 | │+ *${prefix}demote* @tagmember
16 | │+ *${prefix}mentionall*
17 | │+ *${prefix}del*
18 | │+ *${prefix}leave*
19 | │+ *${prefix}kickall*
20 | │+ *${prefix}opengc*
21 | │+ *${prefix}closegc*
22 | │+ *${prefix}seticon*
23 | │+ *${prefix}groupinfo*
24 | │+ *${prefix}linkgroup*
25 | │+ *${prefix}ownergroup*
26 | │+ *${prefix}sider*
27 | │+ *${prefix}resetlinkgroup*
28 | │+ *${prefix}setgroupname*
29 | │+ *${prefix}nobadword* enable/disable
30 | │+ *${prefix}nolinkgc* enable/disable
31 | │+ *${prefix}welcome* enable/disable
32 | │+ *${prefix}left* enable/disable
33 | │+ *${prefix}nsfw* enable/disable
34 | ╰───────────────────
35 | Terima kasih telah menggunakan Lucya-BOT.💓
36 | `
37 | }
38 |
39 | exports.prem = () => {
40 | return `Hi!!👋
41 | Selamat Datang di Menu Prem.
42 | Berikut adalah beberapa perintah yang tersedia:
43 |
44 | ╭──「 *MENU PREMIUM* 」──
45 | │+ *${prefix}snbg*
46 | │+ *${prefix}stgif*
47 | │+ *${prefix}ttp*
48 | │+ *${prefix}stickerfire*
49 | │+ *${prefix}stickerlight*
50 | │+ *${prefix}s2img*
51 | │+ *${prefix}musik*
52 | │+ *${prefix}getmusik*
53 | │+ *${prefix}video*
54 | │+ *${prefix}getvideo*
55 | │+ *${prefix}google*
56 | │+ *${prefix}ptlvid*
57 | │+ *${prefix}nhentai*
58 | │+ *${prefix}getnhentai*
59 | │+ *${prefix}play*
60 | │+ *${prefix}playstore*
61 | │+ *${prefix}shopee*
62 | │+ *${prefix}news*
63 | │+ *${prefix}jadwalbola*
64 | │+ *${prefix}jurnalotaku*
65 | │+ *${prefix}movie*
66 | │+ *${prefix}xvideos*
67 | │+ *${prefix}getxvideos*
68 | │+ *${prefix}phdl
69 | │+ *${prefix}lewds
70 | │+ *${prefix}fetish
71 | │+ *${prefix}moviecs
72 | │+ *${prefix}giftlimit @user
73 | ╰───────────────────
74 | Terima kasih telah menggunakan Lucya-BOT.💓
75 | `
76 |
77 | }
78 |
79 | exports.readme = () => {
80 | return `
81 | ❉──────────────────❉
82 | *_PANDUAN PENGGUNAAN_*
83 | ❉──────────────────❉
84 |
85 | ** Diisi dengan link YouTube yang valid tanpa tanda “<” dan “>”
86 | Contoh : *!ytmp3 https://youtu.be/Bskehapzke8*
87 |
88 | ** Diisi dengan link YouTube yang valid tanpa tanda “<” dan “>”
89 | Contoh : *!ytmp4 https://youtu.be/Bskehapzke8*
90 |
91 | ** Diisi dengan link Instagram yang valid tanpa tanda “<” dan “>”
92 | Contoh : *!ig https://www.instagram.com/p/CFqRZTlluAi/?igshid=1gtxkbdqhnbbe*
93 |
94 | ** Diisi dengan link Facebook yang valid tanpa tanda “<” dan “>”
95 | Contoh : *!fb https://www.facebook.com/EpochTimesTrending/videos/310155606660409*
96 |
97 | ** Diisi dengan link Twitter yang valid tanpa tanda "<" dan ">"
98 | Contoh : *!twt https://twitter.com/9GAG/status/13326691430019067904?s=19*
99 |
100 | ** Diisi dengan daerah yang valid, tanpa tanda “<” dan “>”
101 | Contoh : *!jadwalshalat Bandung*
102 |
103 | ** Diisi dengan tempat/lokasi yang valid, tanpa tanda “<” dan “>“
104 | Contoh : *!cuaca Jakarta*
105 |
106 | ** Diisi dengan kode bahasa, contoh *id*, *en*, dll. Dan ** Diisi dengan teks yang ingin di jadikan voice, tanpa tanda “<” dan “>”
107 | Kode bahasa bisa dicek di https://bit.ly/3kAELDe
108 | Contoh : *!tts id Test*
109 | Note : Max 250 huruf
110 |
111 | *<@username>* Diisi dengan username Instagram yang valid, tanpa tanda “<” dan “>”
112 | Contoh : *!igstalk @bdrsmsdn*
113 |
114 | *<|teks|author|theme>* Diisi dengan teks, author, dan theme, tanpa tanda “<” dan “>”
115 | Contoh : *!quotemaker |Odading|Mang Oleh|Shark*
116 |
117 | ** Diisi dengan link group whatsapp yang valid, tanpa tanda “<” dan “>”
118 | Contoh : *!join https://chat.whatsapp.com/LuZkEtgJz4kI6cOkAeHL5j*
119 |
120 | ** Key yang berisikan 19 character secara acak yang berguna untuk memasukkan bot ke dalam grup, tanpa tanda "<" dan ">".
121 |
122 | ** Diisi dengan teks|title lirik lagu, tanpa tanda “<” dan “>”.
123 | Contoh : *!lirik aku bukan boneka*`
124 | }
125 |
126 | exports.info = () => {
127 | return `
128 | ╔════════════════════
129 | ╭────❉ *_INFO_* ❉──
130 | │++ _*LUCYAV2*_
131 | │+ 3.1.X
132 | │+ OWNER : _*AKSARA*_
133 | │+ wa.me/6281281817375
134 | ╰───────────────────
135 | ╠════ _*AKSARA*_ ═════
136 | ╚════════════════════
137 | Primary Source Code BOT https://github.com/mhankbarbar
138 | Special Thanks to:
139 | - Mhankbarbar
140 | - ArugaZ
141 | - Tobz
142 | - AlenSaito
143 | - Gimenz
144 | - dkk.`
145 | }
146 |
147 | exports.snk = () => {
148 | return `
149 | ❉──────────────────❉
150 | *_Syarat dan Ketentuan_*
151 | ❉──────────────────❉
152 |
153 | 1. Teks dan nama pengguna WhatsApp anda akan disimpan di dalam server selama bot aktif.
154 | 2. Data anda akan dihapus ketika bot Offline.
155 | 3. BOT tidak menyimpan gambar, video, file, audio, dan dokumen yang anda kirim.
156 | 4. BOT tidak akan pernah meminta anda untuk memberikan informasi pribadi.
157 | 5. Jika menemukan Bug/Error silahkan langsung lapor ke Owner bot.
158 | 6. BOT tidak boleh digunakan untuk layanan yang bertujuan/berkontribusi dalam:
159 | • seks / perdagangan manusia
160 | • perjudian
161 | • perilaku adiktif yang merugikan
162 | • kejahatan
163 | • kekerasan (kecuali jika diperlukan untuk melindungi keselamatan publik)
164 | • pembakaran hutan / penggundulan hutan
165 | • ujaran kebencian atau diskriminasi berdasarkan usia, jenis kelamin, identitas gender, ras, seksualitas, agama, kebangsaan.
166 | 7. Dilarang keras melakukan SPAM ke bot, menelpon bot, dan mengirim pesan ke owner bot di luar jam kerja. Jika terindikasi melakukan hal yang tadi disebutkan, akan mendapat BANNED PERMANEN.
167 | 8. Selalu ingat bahwa bot ini dalam proses pengembangan jadi diharapkan anda dapat memakluminya jika bot terdapat banyak kekurangan.
168 | 9. Dan selalu ingat juga yang menggunakan bot ini bukan hanya anda/grup anda jadi saya memohon agar bersabar jika terjadinya delay. Serta gunakan fitur yang tersedia dengan seperlunya.
169 | 10. Apapun yang anda perintah pada bot ini baik ketika menggunakan ataupun sesudahnya, OWNER TIDAK BERTANGGUNG JAWAB!
170 |
171 | Terima kasih!✨`
172 | }
173 |
174 | exports.donate = () => {
175 | return `Kamu dapat membantu owner mengembangkan bot ini dengan melakukan donasi.
176 |
177 | Jika berkenan, silakan langsung saja ke :
178 | - https://saweria.co/bdrsmsdn
179 | - https://trakteer.id/bdrsmsdn
180 | - OVO/DANA 081281817375
181 | - BCA 8480792000 an Badra Samsudin Ramdan N
182 | Jangan lupa follow instagramku yaa! https://instagram.com/bdrsmsdn
183 |
184 | Terima kasih!✨`
185 | }
186 |
187 | exports.nsfwmenu = () => {
188 | return `Hi!!👋
189 | Selamat Datang di Menu NSFW.
190 | Berikut adalah beberapa perintah yang tersedia:
191 |
192 | ╭──「 *NSFW MENU* 」──
193 | │+ *${prefix}nhinfo*
194 | │+ *${prefix}nhview*
195 | │+ *${prefix}nekopoi*
196 | │+ *${prefix}xnxx*
197 | │+ *${prefix}randomhentai*
198 | │+ *${prefix}randomnsfwneko*
199 | │+ *${prefix}dlhentai*
200 | │+ *${prefix}indohot*
201 | ╰───────────────────
202 | Terima kasih telah menggunakan Lucya-BOT.💓
203 | `
204 | }
205 |
206 | exports.maker = () => {
207 | return `Hi!!👋
208 | Selamat Datang di Menu Maker.
209 | Berikut adalah beberapa perintah yang tersedia:
210 |
211 | ╭────「 *MENU MAKER* 」──
212 | │+ *${prefix}sticker*
213 | │+ *${prefix}stickergif*
214 | │+ *${prefix}quotemaker*
215 | │+ *${prefix}textmaker*
216 | │+ *${prefix}url2img*
217 | │+ *${prefix}text2img*
218 | │+ *${prefix}sandwriting*
219 | │+ *${prefix}sth*
220 | │+ *${prefix}esticker*
221 | │+ *${prefix}bp*
222 | │+ *${prefix}thunder*
223 | │+ *${prefix}ff*
224 | │+ *${prefix}lg*
225 | │+ *${prefix}phub* |text1|text2
226 | │+ *${prefix}glow*
227 | │+ *${prefix}joker*
228 | │+ *${prefix}codmw*
229 | │+ *${prefix}avengers* |text1|text2
230 | │+ *${prefix}outline*
231 | │+ *${prefix}sunset*
232 | │+ *${prefix}minion*
233 | │+ *${prefix}space* |text1|text2
234 | │+ *${prefix}bloods*
235 | ╰───────────────────
236 | Terima kasih telah menggunakan Lucya-BOT.💓
237 | `
238 | }
239 |
240 | exports.media = () => {
241 | return `Hi!!👋
242 | Selamat Datang di Menu Media.
243 | Berikut adalah beberapa perintah yang tersedia:
244 |
245 | ╭────「 *MENU MEDIA* 」──
246 | │+ *${prefix}ytmp3*
247 | │+ *${prefix}ytmp4*
248 | │+ *${prefix}ig*
249 | │+ *${prefix}fb*
250 | │+ *${prefix}igstalk* @username
251 | │+ *${prefix}twitter*
252 | │+ *${prefix}twstalk* @username
253 | │+ *${prefix}joox*
254 | │+ *${prefix}tiktok*
255 | │+ *${prefix}igstory*
256 | │+ *${prefix}images*
257 | │+ *${prefix}ytsearch
258 | ╰───────────────────
259 | Terima kasih telah menggunakan Lucya-BOT.💓
260 | `
261 | }
262 |
263 | exports.edukasi = () => {
264 | return `Hi!!👋
265 | Selamat Datang di Menu Edukasi.
266 | Berikut adalah beberapa perintah yang tersedia:
267 |
268 | ╭────「 *MENU EDUKASI* 」──
269 | │+ *${prefix}wiki* Wikipedia.
270 | │+ *${prefix}brainly* <.answer>
271 | │+ *${prefix}nulis*
272 | │+ *${prefix}kbbi*
273 | ╰───────────────────
274 | Terima kasih telah menggunakan Lucya-BOT.💓
275 | `
276 | }
277 |
278 | exports.poll = () => {
279 | return `Hi!!👋
280 | Selamat Datang di Menu Poll/Voting.
281 | Berikut adalah beberapa perintah yang tersedia:
282 |
283 | ╭────「 *POLL MENU* 」──
284 | │+ *${prefix}addpoll*
285 | │+ *${prefix}addv*
286 | │+ *${prefix}pollresult*
287 | │+ *${prefix}vote*
288 | ╰───────────────────
289 | Terima kasih telah menggunakan Lucya-BOT.💓
290 | `
291 | }
292 |
293 | exports.anonymous = () => {
294 | return `Hi!!👋
295 | Selamat Datang di Menu Anonymous Chat.
296 | Berikut adalah beberapa perintah yang tersedia:
297 |
298 | ╭「 *ANONYMOUS CHAT MENU* 」
299 | │+ *${prefix}daftar* 6281XXX
300 | │+ *${prefix}send*
301 | │+ *${prefix}remove* 6281XXX
302 | │+ *${prefix}listno*
303 | ╰───────────────────
304 | Terima kasih telah menggunakan Lucya-BOT.💓
305 | `
306 | }
307 |
308 | exports.funmenu = () => {
309 | return `Hi!!👋
310 | Selamat Datang di Fun Menu.
311 | Berikut adalah beberapa perintah yang tersedia:
312 |
313 | ╭────「 *FUN MENU* 」──
314 | │+ *${prefix}tebakgambar*
315 | │+ *${prefix}family100*
316 | │+ *${prefix}caklontong*
317 | │+ *${prefix}profile*
318 | │+ *${prefix}koin*
319 | │+ *${prefix}dadu*
320 | │+ *${prefix}tts*
321 | │+ *${prefix}artinama*
322 | │+ *${prefix}ramalpasangan*
323 | │+ *${prefix}simi*
324 | │+ *${prefix}say*
325 | │+ *${prefix}addsay*
326 | │+ *${prefix}delsay*
327 | │+ *${prefix}saylist*
328 | │+ *${prefix}mypic*
329 | │+ *${prefix}yourpic* @
330 | │+ *${prefix}meme*
331 | │+ *${prefix}ptl*
332 | │+ *${prefix}cerpen*
333 | │+ *${prefix}puisi1*
334 | │+ *${prefix}puisi2*
335 | │+ *${prefix}puisi3*
336 | │+ *${prefix}artimimpi*
337 | │+ *${prefix}ptlvid*
338 | │+ *${prefix}hilih*
339 | │+ *${prefix}mock*
340 | │+ *${prefix}heroml*
341 | │+ *${prefix}zodiak*
342 | │+ *${prefix}spamcall*
343 | │+ *${prefix}babi*
344 | │+ *${prefix}ganteng*
345 | │+ *${prefix}ToD*
346 | │+ *${prefix}apakah*
347 | │+ *${prefix}kapankah*
348 | │+ *${prefix}bisakah*
349 | │+ *${prefix}nilai*
350 | │+ *${prefix}savesticker*
351 | │+ *${prefix}sendsticker*
352 | │+ *${prefix}pat* @user
353 | │+ *${prefix}slap* @user
354 | │+ *${prefix}nye* @user
355 | │+ *${prefix}hug* @user
356 | ╰───────────────────
357 | Terima kasih telah menggunakan Lucya-BOT.💓
358 | `
359 | }
360 |
361 | exports.weebs = () => {
362 | return `Hi!!👋
363 | Selamat Datang di Menu Weebs.
364 | Berikut adalah beberapa perintah yang tersedia:
365 |
366 | ╭────「 *MENU WEEBS* 」──
367 | │+ *${prefix}downloadanime*
368 | │+ *${prefix}downloadmanga*
369 | │+ *${prefix}nhinfo*
370 | │+ *${prefix}nhview*
371 | │+ *${prefix}wait*
372 | │+ *${prefix}anime*
373 | │+ *${prefix}otakudesu*
374 | │+ *${prefix}kusonime*
375 | │+ *${prefix}dewabatch*
376 | │+ *${prefix}komiku*
377 | │+ *${prefix}loli*
378 | │+ *${prefix}shota
379 | │+ *${prefix}waifu*
380 | │+ *${prefix}husbu*
381 | │+ *${prefix}randomnekonime*
382 | │+ *${prefix}randomtrapnime*
383 | │+ *${prefix}randomhentai*
384 | │+ *${prefix}randomnsfwneko*
385 | │+ *${prefix}randomanime*
386 | │+ *${prefix}nhder*
387 | │+ *${prefix}wallanime*
388 | │+ *${prefix}quotesnime*
389 | │+ *${prefix}quoteanime* anime
390 | │+ *${prefix}malanime*
391 | │+ *${prefix}malcharacter*
392 | ╰───────────────────
393 | Terima kasih telah menggunakan Lucya-BOT.💓
394 | `
395 | }
396 |
397 | exports.tools = () => {
398 | return `Hi!!👋
399 | Selamat Datang di Tools Menu.
400 | Berikut adalah beberapa perintah yang tersedia:
401 |
402 | ╭────「 *TOOLS MENU* 」──
403 | │+ *${prefix}cekresi*
404 | │+ *${prefix}shortlink*
405 | │+ *${prefix}imgcompress*
406 | │+ *${prefix}qrcode*
407 | │+ *${prefix}translate*
408 | │+ *${prefix}hitung*
409 | │+ *${prefix}ping*
410 | │+ *${prefix}bugreport*
411 | │+ *${prefix}maps*
412 | ╰───────────────────
413 | Terima kasih telah menggunakan Lucya-BOT.💓
414 | `
415 | }
416 |
417 | exports.infor = () => {
418 | return `Hi!!👋
419 | Selamat Datang di Menu Informasi.
420 | Berikut adalah beberapa perintah yang tersedia:
421 |
422 | ╭──「 *INFORMATION MENU* 」──
423 | │+ *${prefix}jadwalshalat*
424 | │+ *${prefix}cuaca*
425 | │+ *${prefix}listdaerah*
426 | │+ *${prefix}infogempa*
427 | │+ *${prefix}listchannel*
428 | │+ *${prefix}covid*
429 | ╰───────────────────
430 | Terima kasih telah menggunakan Lucya-BOT.💓
431 | `
432 | }
433 |
434 | exports.pray = () => {
435 | return `Hi!!👋
436 | Selamat Datang di Pray Menu.
437 | Berikut adalah beberapa perintah yang tersedia:
438 |
439 | ╭──「 *PRAY MENU* 」──
440 | │+ *${prefix}jadwalshalat*
441 | │+ *${prefix}quran*
442 | │+ *${prefix}listsurah*
443 | │+ *${prefix}infosurah*
444 | │+ *${prefix}tafsir*
445 | │+ *${prefix}renungan*
446 | │+ *${prefix}alkitab*
447 | ╰───────────────────
448 | Terima kasih telah menggunakan Lucya-BOT.💓
449 | `
450 | }
451 |
452 | exports.contact = () => {
453 | return `Hi!!👋
454 | Selamat Datang di Menu Kontak.
455 | Berikut adalah beberapa perintah yang tersedia:
456 |
457 | ╭──「 *CONTACT* 」──
458 | │+ *${prefix}creator*
459 | │+ *${prefix}bot1*
460 | │+ *${prefix}bot2*
461 | ╰───────────────────
462 | Terima kasih telah menggunakan Lucya-BOT.💓
463 | `
464 | }
465 |
466 | exports.tnc = () => {
467 | return `Hi!!👋
468 | Selamat Datang di Menu TNC.
469 | Berikut adalah beberapa perintah yang tersedia:
470 |
471 | ╭──「 *TNC* 」──
472 | │+ *${prefix}info*
473 | │+ *${prefix}readme*
474 | │+ *${prefix}snk*
475 | ╰───────────────────
476 | Terima kasih telah menggunakan Lucya-BOT.💓
477 | `
478 | }
479 |
480 | exports.others = () => {
481 | return `Hi!!👋
482 | Selamat Datang di Others Menu.
483 | Berikut adalah beberapa perintah yang tersedia:
484 |
485 | ╭──「 *OTHERS* 」──
486 | │+ *${prefix}googleimage*
487 | │+ *${prefix}lirik*
488 | │+ *${prefix}chord*
489 | │+ *${prefix}kpop*
490 | │+ *${prefix}listprem*
491 | │+ *${prefix}listgroup*
492 | │+ *${prefix}listblock*
493 | ╰───────────────────
494 | Terima kasih telah menggunakan Lucya-BOT.💓
495 | `
496 | }
497 |
498 | exports.listChannel = () => {
499 | return `Daftar channel:
500 | 1. ANTV
501 | 2. GTV
502 | 3. Indosiar
503 | 4. iNewsTV
504 | 5. KompasTV
505 | 6. MNCTV
506 | 7. METROTV
507 | 8. NETTV
508 | 9. RCTI
509 | 10. SCTV
510 | 11. RTV
511 | 12. Trans7
512 | 13. TransTV`
513 | }
514 |
515 | exports.sewa = () => {
516 | return `
517 | GAADA IKLAN MENDING FOLLOW IG AKU AJA
518 | https://instagram.com/bdrsmsdn`
519 | }
--------------------------------------------------------------------------------
/lib/husbu.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "teks": "Mikoto Mikoshiba",
4 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/08/joi-mikorin-featured-700x394.jpg"
5 | },
6 | {
7 | "teks": "(Top Leader) Mikazuki Augus",
8 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
9 | },
10 | {
11 | "teks": "Azusagawa Sakuta",
12 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/Sakuta_Azusagawa_Anime_-_Screenshot_1-700x394.png"
13 | },
14 | {
15 | "teks": "Hideyuki Maya",
16 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/01/joi-maya-featured-700x458.jpg"
17 | },
18 | {
19 | "teks": "Slaine Troyard",
20 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
21 | },
22 | {
23 | "teks": "Willem Kmetsch",
24 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/Films-TV-15_02_2019-21_33_37-700x394.png"
25 | },
26 | {
27 | "teks": "Slaine Troyard",
28 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
29 | },
30 | {
31 | "teks": "(Top Leader) Mikazuki Augus",
32 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
33 | },
34 | {
35 | "teks": "Hideyuki Maya",
36 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/01/joi-maya-featured-700x458.jpg"
37 | },
38 | {
39 | "teks": "Willem Kmetsch",
40 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/Films-TV-15_02_2019-21_33_37-700x394.png"
41 | },
42 | {
43 | "teks": "Kinoshita Hideyoshi",
44 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/04/hideyoshi_cover-700x409.jpg?x21210"
45 | },
46 | {
47 | "teks": "Azusagawa Sakuta",
48 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/Sakuta_Azusagawa_Anime_-_Screenshot_1-700x394.png"
49 | },
50 | {
51 | "teks": "Kinoshita Hideyoshi",
52 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/04/hideyoshi_cover-700x409.jpg?x21210"
53 | },
54 | {
55 | "teks": "(Top Leader) Mikazuki Augus",
56 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
57 | },
58 | {
59 | "teks": "Slaine Troyard",
60 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
61 | },
62 | {
63 | "teks": "Hideyuki Maya",
64 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/01/joi-maya-featured-700x458.jpg"
65 | },
66 | {
67 | "teks": "Kinoshita Hideyoshi",
68 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/04/hideyoshi_cover-700x409.jpg?x21210"
69 | },
70 | {
71 | "teks": "Kinoshita Hideyoshi",
72 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/04/hideyoshi_cover-700x409.jpg?x21210"
73 | },
74 | {
75 | "teks": "Bakugou Katsuki",
76 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/07/kacchan_cover1-700x409.jpg?x21210"
77 | },
78 | {
79 | "teks": "Takigawa Yoshino",
80 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/husbufri-yoshino-joi10-700x394.jpg"
81 | },
82 | {
83 | "teks": "Slaine Troyard",
84 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
85 | },
86 | {
87 | "teks": "Hideyuki Maya",
88 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/01/joi-maya-featured-700x458.jpg"
89 | },
90 | {
91 | "teks": "(Top Leader) Mikazuki Augus",
92 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
93 | },
94 | {
95 | "teks": "(CEO) Orga Itsuka",
96 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/11/joi-ceo-orga-featured-700x394.jpg"
97 | },
98 | {
99 | "teks": "Takigawa Yoshino",
100 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/husbufri-yoshino-joi10-700x394.jpg"
101 | },
102 | {
103 | "teks": "Kinoshita Hideyoshi",
104 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/04/hideyoshi_cover-700x409.jpg?x21210"
105 | },
106 | {
107 | "teks": "Slaine Troyard",
108 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
109 | },
110 | {
111 | "teks": "Haruitsuki Abeno",
112 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2016/12/joi-abeno-featured-700x394.jpg"
113 | },
114 | {
115 | "teks": "Azusagawa Sakuta",
116 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/Sakuta_Azusagawa_Anime_-_Screenshot_1-700x394.png"
117 | },
118 | {
119 | "teks": "Azusagawa Sakuta",
120 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/Sakuta_Azusagawa_Anime_-_Screenshot_1-700x394.png"
121 | },
122 | {
123 | "teks": "Hideyuki Maya",
124 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/01/joi-maya-featured-700x458.jpg"
125 | },
126 | {
127 | "teks": "Slaine Troyard",
128 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
129 | },
130 | {
131 | "teks": "Willem Kmetsch",
132 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/Films-TV-15_02_2019-21_33_37-700x394.png"
133 | },
134 | {
135 | "teks": "Mikoto Mikoshiba",
136 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/08/joi-mikorin-featured-700x394.jpg"
137 | },
138 | {
139 | "teks": "Mikoto Mikoshiba",
140 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/08/joi-mikorin-featured-700x394.jpg"
141 | },
142 | {
143 | "teks": "(Top Leader) Mikazuki Augus",
144 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
145 | },
146 | {
147 | "teks": "(CEO) Orga Itsuka",
148 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/11/joi-ceo-orga-featured-700x394.jpg"
149 | },
150 | {
151 | "teks": "Willem Kmetsch",
152 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/Films-TV-15_02_2019-21_33_37-700x394.png"
153 | },
154 | {
155 | "teks": "Bakugou Katsuki",
156 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/07/kacchan_cover1-700x409.jpg?x21210"
157 | },
158 | {
159 | "teks": "Slaine Troyard",
160 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
161 | },
162 | {
163 | "teks": "(Top Leader) Mikazuki Augus",
164 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
165 | },
166 | {
167 | "teks": "Willem Kmetsch",
168 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/Films-TV-15_02_2019-21_33_37-700x394.png"
169 | },
170 | {
171 | "teks": "Kinoshita Hideyoshi",
172 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/04/hideyoshi_cover-700x409.jpg?x21210"
173 | },
174 | {
175 | "teks": "Mikoto Mikoshiba",
176 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/08/joi-mikorin-featured-700x394.jpg"
177 | },
178 | {
179 | "teks": "Willem Kmetsch",
180 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/Films-TV-15_02_2019-21_33_37-700x394.png"
181 | },
182 | {
183 | "teks": "Bakugou Katsuki",
184 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/07/kacchan_cover1-700x409.jpg?x21210"
185 | },
186 | {
187 | "teks": "Haruitsuki Abeno",
188 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2016/12/joi-abeno-featured-700x394.jpg"
189 | },
190 | {
191 | "teks": "Takigawa Yoshino",
192 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/husbufri-yoshino-joi10-700x394.jpg"
193 | },
194 | {
195 | "teks": "(Top Leader) Mikazuki Augus",
196 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
197 | },
198 | {
199 | "teks": "Slaine Troyard",
200 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
201 | },
202 | {
203 | "teks": "(Top Leader) Mikazuki Augus",
204 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
205 | },
206 | {
207 | "teks": "Kinoshita Hideyoshi",
208 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/04/hideyoshi_cover-700x409.jpg?x21210"
209 | },
210 | {
211 | "teks": "Willem Kmetsch",
212 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/Films-TV-15_02_2019-21_33_37-700x394.png"
213 | },
214 | {
215 | "teks": "Takigawa Yoshino",
216 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/husbufri-yoshino-joi10-700x394.jpg"
217 | },
218 | {
219 | "teks": "Hideyuki Maya",
220 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/01/joi-maya-featured-700x458.jpg"
221 | },
222 | {
223 | "teks": "(CEO) Orga Itsuka",
224 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/11/joi-ceo-orga-featured-700x394.jpg"
225 | },
226 | {
227 | "teks": "(CEO) Orga Itsuka",
228 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/11/joi-ceo-orga-featured-700x394.jpg"
229 | },
230 | {
231 | "teks": "Slaine Troyard",
232 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
233 | },
234 | {
235 | "teks": "Haruitsuki Abeno",
236 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2016/12/joi-abeno-featured-700x394.jpg"
237 | },
238 | {
239 | "teks": "Bakugou Katsuki",
240 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/07/kacchan_cover1-700x409.jpg?x21210"
241 | },
242 | {
243 | "teks": "Takigawa Yoshino",
244 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/husbufri-yoshino-joi10-700x394.jpg"
245 | },
246 | {
247 | "teks": "Mikoto Mikoshiba",
248 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/08/joi-mikorin-featured-700x394.jpg"
249 | },
250 | {
251 | "teks": "(Top Leader) Mikazuki Augus",
252 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
253 | },
254 | {
255 | "teks": "(Top Leader) Mikazuki Augus",
256 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
257 | },
258 | {
259 | "teks": "Azusagawa Sakuta",
260 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/Sakuta_Azusagawa_Anime_-_Screenshot_1-700x394.png"
261 | },
262 | {
263 | "teks": "Azusagawa Sakuta",
264 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/Sakuta_Azusagawa_Anime_-_Screenshot_1-700x394.png"
265 | },
266 | {
267 | "teks": "Azusagawa Sakuta",
268 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/Sakuta_Azusagawa_Anime_-_Screenshot_1-700x394.png"
269 | },
270 | {
271 | "teks": "Azusagawa Sakuta",
272 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/Sakuta_Azusagawa_Anime_-_Screenshot_1-700x394.png"
273 | },
274 | {
275 | "teks": "Takigawa Yoshino",
276 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/husbufri-yoshino-joi10-700x394.jpg"
277 | },
278 | {
279 | "teks": "(Top Leader) Mikazuki Augus",
280 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
281 | },
282 | {
283 | "teks": "(CEO) Orga Itsuka",
284 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/11/joi-ceo-orga-featured-700x394.jpg"
285 | },
286 | {
287 | "teks": "Mikoto Mikoshiba",
288 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/08/joi-mikorin-featured-700x394.jpg"
289 | },
290 | {
291 | "teks": "Takigawa Yoshino",
292 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/husbufri-yoshino-joi10-700x394.jpg"
293 | },
294 | {
295 | "teks": "(CEO) Orga Itsuka",
296 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/11/joi-ceo-orga-featured-700x394.jpg"
297 | },
298 | {
299 | "teks": "Slaine Troyard",
300 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
301 | },
302 | {
303 | "teks": "Willem Kmetsch",
304 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/Films-TV-15_02_2019-21_33_37-700x394.png"
305 | },
306 | {
307 | "teks": "(Top Leader) Mikazuki Augus",
308 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
309 | },
310 | {
311 | "teks": "Bakugou Katsuki",
312 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/07/kacchan_cover1-700x409.jpg?x21210"
313 | },
314 | {
315 | "teks": "(CEO) Orga Itsuka",
316 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/11/joi-ceo-orga-featured-700x394.jpg"
317 | },
318 | {
319 | "teks": "Kinoshita Hideyoshi",
320 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/04/hideyoshi_cover-700x409.jpg?x21210"
321 | },
322 | {
323 | "teks": "Willem Kmetsch",
324 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/Films-TV-15_02_2019-21_33_37-700x394.png"
325 | },
326 | {
327 | "teks": "(Top Leader) Mikazuki Augus",
328 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
329 | },
330 | {
331 | "teks": "Hideyuki Maya",
332 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/01/joi-maya-featured-700x458.jpg"
333 | },
334 | {
335 | "teks": "Takigawa Yoshino",
336 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/husbufri-yoshino-joi10-700x394.jpg"
337 | },
338 | {
339 | "teks": "Kinoshita Hideyoshi",
340 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/04/hideyoshi_cover-700x409.jpg?x21210"
341 | },
342 | {
343 | "teks": "Kinoshita Hideyoshi",
344 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/04/hideyoshi_cover-700x409.jpg?x21210"
345 | },
346 | {
347 | "teks": "Slaine Troyard",
348 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
349 | },
350 | {
351 | "teks": "Bakugou Katsuki",
352 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/07/kacchan_cover1-700x409.jpg?x21210"
353 | },
354 | {
355 | "teks": "Kinoshita Hideyoshi",
356 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/04/hideyoshi_cover-700x409.jpg?x21210"
357 | },
358 | {
359 | "teks": "Takigawa Yoshino",
360 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/husbufri-yoshino-joi10-700x394.jpg"
361 | },
362 | {
363 | "teks": "(Top Leader) Mikazuki Augus",
364 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
365 | },
366 | {
367 | "teks": "Hideyuki Maya",
368 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2017/01/joi-maya-featured-700x458.jpg"
369 | },
370 | {
371 | "teks": "(CEO) Orga Itsuka",
372 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/11/joi-ceo-orga-featured-700x394.jpg"
373 | },
374 | {
375 | "teks": "Bakugou Katsuki",
376 | "image": "http://jurnalotaku.com/wp-content/uploads/2020/07/kacchan_cover1-700x409.jpg?x21210"
377 | },
378 | {
379 | "teks": "Slaine Troyard",
380 | "image": "http://jurnalotaku.com/wp-content/uploads/2019/10/husbufri-slaine-joi2-1-e1570784701581-700x421.jpg?x21210"
381 | },
382 | {
383 | "teks": "Takigawa Yoshino",
384 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/husbufri-yoshino-joi10-700x394.jpg"
385 | },
386 | {
387 | "teks": "Azusagawa Sakuta",
388 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/Sakuta_Azusagawa_Anime_-_Screenshot_1-700x394.png"
389 | },
390 | {
391 | "teks": "Willem Kmetsch",
392 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2019/02/Films-TV-15_02_2019-21_33_37-700x394.png"
393 | },
394 | {
395 | "teks": "(Top Leader) Mikazuki Augus",
396 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2018/12/joi-mikazuki-top5-700x394.jpg"
397 | },
398 | {
399 | "teks": "Haruitsuki Abeno",
400 | "image": "http://storage.jurnalotaku.com/wp-content/uploads/2016/12/joi-abeno-featured-700x394.jpg"
401 | }
402 | ]
--------------------------------------------------------------------------------
/lib/imageProcessing.js:
--------------------------------------------------------------------------------
1 | const sharp = require('sharp')
2 | const { fromBuffer } = require('file-type')
3 |
4 | /**
5 | * Resize image to buffer or base64
6 | * @param {Buffer} bufferdata
7 | * @param {Boolean} encode
8 | * @param {String} mimType
9 | */
10 | // eslint-disable-next-line no-async-promise-executor
11 | module.exports = resizeImage = (buff, encode) => new Promise(async (resolve, reject) => {
12 | console.log('Resizeing image...')
13 | const { mime } = await fromBuffer(buff)
14 | sharp(buff, { failOnError: false })
15 | .resize(512, 512)
16 | .toBuffer()
17 | .then(resizedImageBuffer => {
18 | if (!encode) return resolve(resizedImageBuffer)
19 | console.log('Create base64 from resizedImageBuffer...')
20 | const resizedImageData = resizedImageBuffer.toString('base64')
21 | const resizedBase64 = `data:${mime};base64,${resizedImageData}`
22 | resolve(resizedBase64)
23 | })
24 | .catch(error => reject(error))
25 | })
26 |
--------------------------------------------------------------------------------
/lib/images.js:
--------------------------------------------------------------------------------
1 | const { resolve, reject } = require('promise')
2 | const { fetchJson } = require('../utils/fetcher')
3 |
4 | /**
5 | *
6 | * @param {String} query
7 | *
8 | */
9 |
10 | const fdci = async(wall) => new Promise((resolve, reject) => {
11 | fetchJson('http://api.fdci.se/rep.php?gambar=' + wall)
12 | .then((result) => {
13 | const andwall = Math.floor(Math.random() * 41)
14 | resolve(result[andwall])
15 | })
16 | .catch((err) => {
17 | reject(err)
18 | })
19 | })
20 |
21 | module.exports = {
22 | fdci
23 | }
--------------------------------------------------------------------------------
/lib/index.js:
--------------------------------------------------------------------------------
1 | exports.cekResi = require('./cekResi')
2 | exports.downloader = require('./downloader')
3 | exports.urlShortener = require('./shortener')
4 | exports.images = require('./images')
5 | exports.rugaapi = require('./rugaApi')
6 | exports.brainlyv2 = require('./brainly')
7 | exports.rugapoi = require('./nekopoi')
8 | exports.nobg = require('./nobg')
9 | exports.nsfww = require('./nsfww')
10 | exports.meme = require('./meme')
--------------------------------------------------------------------------------
/lib/kasar.js:
--------------------------------------------------------------------------------
1 | const sastrawi = require('sastrawijs');
2 |
3 | const kataKasar = [
4 | 'anjing',
5 | 'kontol',
6 | 'memek',
7 | 'jembut',
8 | 'asu',
9 | 'bangsat',
10 | 'tolol',
11 | 'goblok',
12 | 'babi',
13 | 'goblog'
14 | //Tambahin Sendiri
15 | ];
16 |
17 | const inArray = (needle, haystack) => {
18 | let length = haystack.length;
19 | for (let i = 0; i < length; i++) {
20 | if (haystack[i] == needle) return true;
21 | }
22 | return false;
23 | }
24 |
25 | module.exports = cariKasar = (kata) => new Promise((resolve, reject) => {
26 | let sentence = kata;
27 | let stemmer = new sastrawi.Stemmer();
28 | let tokenizer = new sastrawi.Tokenizer();
29 | let words = tokenizer.tokenize(sentence);
30 | for (word of words) {
31 | if (inArray(stemmer.stem(word), kataKasar)) {
32 | resolve(true)
33 | }
34 | }
35 | resolve(false)
36 | })
--------------------------------------------------------------------------------
/lib/kataksr.json:
--------------------------------------------------------------------------------
1 | [
2 | "anjing",
3 | "kontol",
4 | "memek",
5 | "jembut",
6 | "pepek",
7 | "pntk",
8 | "kntl",
9 | "asw",
10 | "ppk",
11 | "kontok",
12 | "tolol",
13 | "ngtd",
14 | "kontl",
15 | "kntol",
16 | "ppek",
17 | "pepk",
18 | "anjg",
19 | "ajg",
20 | "bgst",
21 | "bangsat",
22 | "tulul",
23 | "asu",
24 | "pantek",
25 | "anjg",
26 | "ngentot",
27 | "coli",
28 | "coly",
29 | "pantk",
30 | "pntek",
31 | "jmbt",
32 | "ngentod",
33 | "meki",
34 | "puki"
35 | ]
--------------------------------------------------------------------------------
/lib/left.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs-extra')
2 |
3 | module.exports = left = async(client, event) => {
4 | //console.log(event.action)
5 | const left = JSON.parse(fs.readFileSync('./lib/left.json'))
6 | const isLeft = left.includes(event.chat)
7 | try {
8 | if (event.action == 'remove' && left) {
9 | const gChat = await client.getChatById(event.chat)
10 | const pChat = await client.getContact(event.who)
11 | const { contact, groupMetadata, name } = gChat
12 | const pepe = await client.getProfilePicFromServer(event.who)
13 | const capt = `Good bye @${event.who.replace('@c.us', '')}, We'll miss you✨`
14 | if (pepe == '' || pepe == undefined) {
15 | await client.sendFileFromUrl(event.chat, 'https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcTQcODjk7AcA4wb_9OLzoeAdpGwmkJqOYxEBA&usqp=CAU', 'profile.jpg')
16 | } else {
17 | await client.sendFileFromUrl(event.chat, pepe, 'profile.jpg')
18 | client.sendTextWithMentions(event.chat, capt)
19 | }
20 | }
21 | } catch (err) {
22 | console.log(err)
23 | }
24 | }
--------------------------------------------------------------------------------
/lib/left.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/limit.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/medialimit.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/meme.js:
--------------------------------------------------------------------------------
1 | const { fetchJson, fetchBase64 } = require('../utils/fetcher')
2 | const fs = require('fs-extra')
3 |
4 | /**
5 | * create custom meme
6 | * @param {String} imageUrl
7 | * @param {String} topText
8 | * @param {String} bottomText
9 | */
10 | const custom = async(imageUrl, top, bottom) => new Promise((resolve, reject) => {
11 | topText = top.trim().replace(/\s/g, '_').replace(/\?/g, '~q').replace(/\%/g, '~p').replace(/\#/g, '~h').replace(/\//g, '~s')
12 | bottomText = bottom.trim().replace(/\s/g, '_').replace(/\?/g, '~q').replace(/\%/g, '~p').replace(/\#/g, '~h').replace(/\//g, '~s')
13 | fetchBase64(`https://api.memegen.link/images/custom/${topText}/${bottomText}.png?background=${imageUrl}`, 'image/png')
14 | .then((result) => resolve(result))
15 | .catch((err) => {
16 | console.error(err)
17 | reject(err)
18 | })
19 | })
20 |
21 | module.exports = {
22 | custom
23 | }
--------------------------------------------------------------------------------
/lib/msgFilter.js:
--------------------------------------------------------------------------------
1 | const usedCommandRecently = new Set()
2 |
3 | /**
4 | * Check is number filtered
5 | * @param {String} from
6 | */
7 | const isFiltered = (from) => !!usedCommandRecently.has(from)
8 |
9 | /**
10 | * Add number to filter
11 | * @param {String} from
12 | */
13 | const addFilter = (from) => {
14 | usedCommandRecently.add(from)
15 | setTimeout(() => usedCommandRecently.delete(from), 5000) // 5sec is delay before processing next command
16 | }
17 |
18 | module.exports = {
19 | isFiltered,
20 | addFilter
21 | }
--------------------------------------------------------------------------------
/lib/msgLimit.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/muted.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/nekopoi.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @author Aruga
3 | * @license MIT
4 | */
5 | "use strict"
6 | const axios = require('axios')
7 | const cheerio = require('cheerio')
8 |
9 | function getLatest() {
10 | return new Promise(function(resolve, reject) { //
11 | const url = 'http://nekopoi.care'
12 | axios.get(url)
13 | .then(req => {
14 | const title = []
15 | const link = []
16 | const image = []
17 | const data = {}
18 | const soup = cheerio.load(req.data)
19 | soup('div.eropost').each(function(i, e) {
20 | soup(e).find('h2').each(function(j, s) {
21 | title.push(soup(s).find('a').text().trim())
22 | link.push(soup(s).find('a').attr('href'))
23 | })
24 | image.push(soup(e).find('img').attr('src'))
25 | })
26 | if (data == undefined) {
27 | reject('No Result:(')
28 | } else {
29 | let i = Math.floor(Math.random() * title.length)
30 | let hehe = {
31 | "title": title[i],
32 | "image": image[i],
33 | "link": link[i]
34 | }
35 | resolve(hehe)
36 | }
37 | })
38 | })
39 | }
40 | /**
41 | * @author Aruga
42 | * @license MIT
43 | */
44 | function getVideo(url) {
45 | return new Promise(function(resolve, reject) { //
46 | axios.get(url)
47 | .then(req => {
48 | try {
49 | const links = []
50 | let soup = cheerio.load(req.data)
51 | let title = soup("title").text()
52 | soup('div.liner').each(function(i, e) {
53 | soup(e).find('div.listlink').each(function(j, s) {
54 | soup(s).find('a').each(function(p, q) {
55 | links.push(soup(q).attr('href'))
56 | })
57 | })
58 | })
59 | const data = {
60 | "title": title,
61 | "links": links
62 | }
63 | resolve(data)
64 | } catch (err) {
65 | reject('Error : ' + err)
66 | }
67 | })
68 | })
69 | }
70 | module.exports = {
71 | getLatest,
72 | getVideo
73 | }
--------------------------------------------------------------------------------
/lib/ngegas.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/nobg.js:
--------------------------------------------------------------------------------
1 | //Remove background
2 |
3 | const fs = require('fs');
4 | var request = require('request');
5 |
6 | function Removebg(beforePath, afterpath) {
7 | let path = afterpath;
8 | let fileSu = beforePath;
9 | const VhtearKey = "bdrsmsdn27"; //CHAT wa.me/6281238552767
10 | let formData = {
11 | image: {
12 | value: fs.createReadStream(fileSu),
13 | options: {
14 | filename: fileSu,
15 | contentType: 'image/jpeg'
16 | }
17 | }
18 | };
19 | let options = {
20 | url: 'https://api.vhtear.com/removebg&apikey=' + VhtearKey,
21 | method: 'POST',
22 | formData: formData
23 | };
24 | request(options, function(err, resp, body) {
25 | if (err)
26 | console.log(err);
27 | if (!err && resp.statusCode == 200) {
28 | console.log("Upload success horay!!!");
29 | const user = JSON.parse(body)
30 | return user
31 | }
32 | });
33 | }
34 |
35 | Removebg('origin.jpg', 'result.png')
36 |
37 | module.exports = {
38 | Removebg
39 | }
--------------------------------------------------------------------------------
/lib/nobw.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/nsfww.js:
--------------------------------------------------------------------------------
1 | const { fetchJson } = require('../utils/fetcher')
2 | const ph = require('@justalk/pornhub-api')
3 |
4 | /**
5 | * Get random lewd images from defined subreddits.
6 | * @returns {Promise} Return lewd.
7 | */
8 | const randomLewd = () => new Promise((resolve, reject) => {
9 | const tag = ['ecchi', 'lewdanimegirls', 'hentai', 'hentaifemdom', 'hentaiparadise', 'hentai4everyone', 'animearmpits', 'animefeets', 'animethighss', 'animebooty', 'biganimetiddies', 'animebellybutton', 'sideoppai', 'ahegao']
10 | const randTag = tag[Math.random() * tag.length | 0]
11 | console.log(`Searching lewd from ${randTag}...`)
12 | fetchJson('https://meme-api.herokuapp.com/gimme/' + randTag)
13 | .then((result) => resolve(result))
14 | .catch((err) => reject(err))
15 | })
16 |
17 | /**
18 | * Get armpits pict.
19 | * @returns {Promise} Return armpits pict.
20 | */
21 | const armpits = () => new Promise((resolve, reject) => {
22 | console.log('Searching for armpits...')
23 | fetchJson('https://meme-api.herokuapp.com/gimme/animearmpits')
24 | .then((result) => resolve(result))
25 | .catch((err) => reject(err))
26 | })
27 |
28 | /**
29 | * Get feets pict.
30 | * @returns {Promise} Return feets pict.
31 | */
32 | const feets = () => new Promise((resolve, reject) => {
33 | console.log('Searching for feets...')
34 | fetchJson('https://meme-api.herokuapp.com/gimme/animefeets')
35 | .then((result) => resolve(result))
36 | .catch((err) => reject(err))
37 | })
38 |
39 | /**
40 | * Get thighs pict.
41 | * @returns {Promise} Return thighs pict.
42 | */
43 | const thighs = () => new Promise((resolve, reject) => {
44 | console.log('Searching for thighs...')
45 | fetchJson('https://meme-api.herokuapp.com/gimme/animethighss')
46 | .then((result) => resolve(result))
47 | .catch((err) => reject(err))
48 | })
49 |
50 | /**
51 | * Get ass pict.
52 | * @returns {Promise} Return ass pict.
53 | */
54 | const ass = () => new Promise((resolve, reject) => {
55 | console.log('Searching for ass...')
56 | fetchJson('https://meme-api.herokuapp.com/gimme/animebooty')
57 | .then((result) => resolve(result))
58 | .catch((err) => reject(err))
59 | })
60 |
61 | /**
62 | * Get boobs pict.
63 | * @returns {Promise} Return boobs pict.
64 | */
65 | const boobs = () => new Promise((resolve, reject) => {
66 | console.log('Searching for boobs...')
67 | fetchJson('https://meme-api.herokuapp.com/gimme/biganimetiddies')
68 | .then((result) => resolve(result))
69 | .catch((err) => reject(err))
70 | })
71 |
72 | /**
73 | * Get belly pict.
74 | * @returns {Promise} Return belly pict.
75 | */
76 | const belly = () => new Promise((resolve, reject) => {
77 | console.log('Searching for belly...')
78 | fetchJson('https://meme-api.herokuapp.com/gimme/animebellybutton')
79 | .then((result) => resolve(result))
80 | .catch((err) => reject(err))
81 | })
82 |
83 | /**
84 | * Get sideboobs pict.
85 | * @returns {Promise} Return sideboobs pict.
86 | */
87 | const sideboobs = () => new Promise((resolve, reject) => {
88 | console.log('Searching for sideboobs...')
89 | fetchJson('https://meme-api.herokuapp.com/gimme/sideoppai')
90 | .then((result) => resolve(result))
91 | .catch((err) => reject(err))
92 | })
93 |
94 | /**
95 | * Get ahegao pict.
96 | * @returns {Promise} Return ahegao pict.
97 | */
98 | const ahegao = () => new Promise((resolve, reject) => {
99 | console.log('Searching for ahegao...')
100 | fetchJson('https://meme-api.herokuapp.com/gimme/ahegao')
101 | .then((result) => resolve(result))
102 | .catch((err) => reject(err))
103 | })
104 |
105 | /**
106 | * Sending pornhub metadata.
107 | * @param {String} url
108 | * @returns {Promise} Pornhub video metadata.
109 | */
110 | const phDl = (url) => new Promise((resolve, reject) => {
111 | console.log(`Searching pornhub for ${url}`)
112 | ph.page(url, ['title', 'download_urls', 'thumbnail_url'])
113 | .then((result) => resolve(result))
114 | .catch((err) => reject(err))
115 | })
116 |
117 | const xxx = (url) => new Promise((resolve, reject) => {
118 | console.log(`Getting XXX video from ${url}`)
119 | fetchJson('https://api.vhtear.com/xxxdownload?link=' + url + '&apikey=bdrsmsdn27')
120 | .then((result) => resolve(result))
121 | .catch((err) => reject(err))
122 | })
123 |
124 | module.exports = {
125 | randomLewd,
126 | armpits,
127 | feets,
128 | thighs,
129 | ass,
130 | boobs,
131 | belly,
132 | sideboobs,
133 | ahegao,
134 | phDl,
135 | xxx
136 | }
--------------------------------------------------------------------------------
/lib/nsfwz.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/poll.js:
--------------------------------------------------------------------------------
1 | const request = require('request');
2 | const fs = require('fs');
3 | const dm = require('@open-wa/wa-decrypt');
4 | const multer = require('multer');
5 | const upload = multer();
6 | module.exports = {
7 | addcandidate,
8 | voteadapter,
9 | getpoll,
10 | adminpollreset,
11 | readJsonFile,
12 | saveJsonFile
13 | }
14 |
15 | function voteadapter(client, message, pollfile, voterslistfile) {
16 | console.log('flag1')
17 | //voteadapter
18 | console.log(voterslistfile, 'Zelda')
19 | if (isvoted(message, voterslistfile)) {
20 | client.reply(message.chatId, 'Kamu sudah memvote dalam polling ini!', message.id, true);
21 | return;
22 | }
23 | //console.log('flag2')
24 | let data = readJsonFile(pollfile)
25 | if (data['candis'] === 'null') {
26 | client.reply(message.chatId, 'Tidak ada kandidat dalam poll ini!', message.id, true);
27 | return;
28 | }
29 | let arr = data['candis']
30 | // console.log(arr)
31 | for (let i = 0; i < arr.length; i++) {
32 | if (message.body.includes((i + 1)
33 | .toString())) {
34 | //console.log(i)
35 | addvote(client, message, i, pollfile);
36 | return;
37 | }
38 | }
39 | console.log('here')
40 | client.reply(message.chatId, 'Salah!!!', message.id, true);
41 | }
42 | async function addcandidate(client, message, candi, pollfile, voterslistfile) {
43 | if (await isGroupAdmin(client, message, message, message.author)) {
44 | // console.log('admin logging')
45 | } else {
46 | client.reply(message.chatId, `Hubungi admin grup untuk menambahkan ${candi}`, message.id, true);
47 | return;
48 | }
49 | let data = readJsonFile(pollfile)
50 | if (data['candis'] === 'null') {
51 | // let arra=[];
52 | let cd = {
53 | name: candi,
54 | votes: 0
55 | };
56 | // cd.put('name',candi);
57 | // cd.put('votes',0);
58 | // arra.push(cd);
59 | delete data['candis'];
60 | // data.put('candis',arra);
61 | data['candis'] = [cd, ]
62 | } else {
63 | if (data['candis'].length >= 9) {
64 | client.reply(message.chatId, 'Kamu tidak bisa menambahkan lebih dari 9 kandidat!', message.id, true);
65 | return;
66 | }
67 | let cd = {
68 | name: candi,
69 | votes: 0
70 | };
71 | data['candis'].push(cd);
72 | }
73 | //l(base.toString());
74 | saveJsonFile(pollfile, data)
75 | client.reply(message.chatId, `Berhasil menambahkan ${candi} sebagai kandidat`, message.id, true);
76 | }
77 |
78 | function addvote(client, message, num, pollfile, voterslistfile) {
79 | console.log(num)
80 | let data = readJsonFile(pollfile)
81 | let vts = data['candis'][num]['votes'];
82 | vts = vts + 1;
83 | delete data['candis'][num]['votes'];
84 | data['candis'][num]['votes'] = vts
85 | console.log(data)
86 | saveJsonFile(pollfile, data)
87 | let op;
88 | op = '*Kamu memilih ' + data['candis'][num]['name'] + '*\n* 🎯️ Poll : ' + data['title'] + '*\n';
89 | let ls = '';
90 | let arr = data['candis'];
91 | for (let i = 0; i < arr.length; i++) {
92 | let cd = arr[i];
93 | ls = ls + ((i + 1)
94 | .toString()) + ')' + cd['name'] + ' : [' + cd['votes'] + ' Votes] \n';
95 | }
96 | op = op + ls;
97 | op = op + '\n Untuk memvote silakan ketik !vote \n [Contoh *!vote 2*]';
98 | client.reply(message.chatId, op, message.id, true);
99 | addvotedlog(message);
100 | }
101 |
102 | function isvoted(message, voterslistfile) {
103 | let data = readJsonFile(voterslistfile)
104 | // console.log(data['list'])
105 | return data['list'].includes(message.author);
106 | }
107 |
108 | function addvotedlog(message) {
109 | let data = readJsonFile(voterslistfile)
110 | data['list'].push(message.author)
111 | saveJsonFile(voterslistfile, data);
112 | }
113 |
114 | function getpoll(client, message, pollfile, voterslistfile) {
115 | let data = readJsonFile(pollfile)
116 | //console.log(data)
117 | let op = '';
118 | if (data['candis'] == 'null') {
119 | op = '🎯️ *Poll : ' + data['title'] + '*\n Tidak ada kandidat! \n gunakan !addv untuk menambahkan kandidat';
120 | } else {
121 | op = '🎯️ *Poll : ' + data['title'] + '*\n';
122 | let ls = '';
123 | let arr = data['candis'];
124 | for (let i = 0; i < arr.length; i++) {
125 | let cd = arr[i];
126 | ls = ls + (i + 1)
127 | .toString() + ')' + cd['name'] + ' : [' + cd['votes'] + ' Votes] \n';
128 | }
129 | op = op + ls;
130 | op = op + '\n Untuk memvote silakan ketik !vote \n [Contoh *!vote 2*]';
131 | }
132 | client.reply(message.chatId, op, message.id, true)
133 | }
134 | async function adminpollreset(client, message, polltitle, pollfile, voterslistfile) {
135 | if (await isGroupAdmin(client, message, message.author)) {
136 | var datetime = new Date();
137 | // savefile(todaysdate+'.json',getFile(pollfile));
138 | try {
139 | saveJsonFile('poll_logs.json', readJsonFile(pollfile))
140 | } catch (e) {
141 | console.log('poll file not eist for backup')
142 | }
143 | let base = {
144 | title: polltitle,
145 | polldate: datetime.toISOString()
146 | .slice(0, 10),
147 | candis: 'null'
148 | }
149 | //l(base.toString());
150 | saveJsonFile(pollfile, base)
151 | client.reply(message.chatId, `*🎉️ *Berhasil membuat poll\n\n 🎯️ *Title : ${polltitle}*\n \n⭐️ gunakan !addv untuk menambahkan kandidat`, message.id);
152 | //voterresetter
153 | let data = {
154 | list: ['testentry']
155 | }
156 | saveJsonFile(voterslistfile, data);
157 | } else {
158 | client.reply(message.chatId, '*Mohon maaf fitur ini hanya bisa digunakan oleh admin grup!*', message.id)
159 | }
160 | }
161 | var configFiles = './configFiles/'
162 |
163 | function readJsonFile(filename) {
164 | filename = configFiles + filename;
165 | let rawdata = fs.readFileSync(filename);
166 | return JSON.parse(rawdata);
167 | }
168 |
169 | function saveJsonFile(filename, object) {
170 | filename = configFiles + filename;
171 | // console.log('pokelog '+filename)
172 | var jsonContent = JSON.stringify(object);
173 | fs.writeFile(filename, jsonContent, 'utf8', function(err) {
174 | if (err) {
175 | console.log('An error occured while writing JSON Object to File.' + filename);
176 | return console.log(err);
177 | }
178 | });
179 | }
180 | async function isGroupAdmin(client, message, author) {
181 | let value = await client.getGroupAdmins(message.chatId)
182 | return value.toString()
183 | .includes(message.author)
184 | }
--------------------------------------------------------------------------------
/lib/quote.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs');
2 |
3 | module.exports = () => {
4 | const data = fs.readFileSync('./lib/quote.json');
5 | const jsonData = JSON.parse(data);
6 | const randIndex = Math.floor(Math.random() * jsonData.length);
7 | const randKey = jsonData[randIndex];
8 | return `*❝ ${randKey.quote} ❞*\ndari *${randKey.by}*`;
9 | };
--------------------------------------------------------------------------------
/lib/rugaApi.js:
--------------------------------------------------------------------------------
1 | const axios = require('axios')
2 | const link = 'https://arugaz.herokuapp.com'
3 | const fileyt = 'https://raw.githubusercontent.com/ArugaZ/scraper-results/main/20201111_230923.jpg'
4 | const eroryt = 'https://raw.githubusercontent.com/ArugaZ/scraper-results/main/20201111_234624.jpg'
5 |
6 | const insta = async(url) => new Promise((resolve, reject) => {
7 | axios.get(`${link}/api/ig?url=${url}`)
8 | .then((res) => {
9 | resolve(`${res.data.result}`)
10 | })
11 | .catch((err) => {
12 | reject(err)
13 | })
14 | })
15 |
16 | const ytmp3 = async(url) => new Promise((resolve, reject) => {
17 | axios.get(`${link}/api/yta?url=${url}`)
18 | .then((res) => {
19 | if (res.data.error) resolve({ status: 'error', link: eroryt, judul: res.data.error })
20 | if (Number(res.data.filesize.split(' MB')[0]) >= 10.00) resolve({ status: 'filesize', link: fileyt, judul: '[❗] Terjadi kesalahan mungkin file audionya terlalu besar' })
21 | resolve({ status: 'success', link: res.data.result, size: res.data.filesize, thumb: res.data.thumb, judul: res.data.title })
22 | })
23 | .catch((err) => {
24 | reject(err)
25 | })
26 | })
27 |
28 | const ytmp4 = async(url) => new Promise((resolve, reject) => {
29 | axios.get(`${link}/api/ytv?url=${url}`)
30 | .then((res) => {
31 | if (res.data.error) resolve({ status: 'error', link: eroryt, judul: res.data.error })
32 | if (Number(res.data.filesize.split(' MB')[0]) >= 10.00) resolve({ status: 'filesize', link: fileyt, judul: '[❗] Terjadi kesalahan mungkin file audionya terlalu besar' })
33 | resolve({ status: 'success', link: res.data.result, size: res.data.filesize, thumb: res.data.thumb, judul: res.data.title })
34 | })
35 | .catch((err) => {
36 | reject(err)
37 | })
38 | })
39 |
40 | const fb = async(url) => new Promise((resolve, reject) => {
41 | axios.get(`${link}/api/fb?url=${url}`)
42 | .then((res) => {
43 | if (res.data.error) resolve({ status: 'error', link: res.data.result })
44 | resolve({ linkhd: res.data.result.hd, linksd: res.data.result.sd })
45 | })
46 | .catch((err) => {
47 | reject(err)
48 | })
49 | })
50 |
51 | const stalkig = async(url) => new Promise((resolve, reject) => {
52 | axios.get(`${link}/api/stalk?username=${url}`)
53 | .then((res) => {
54 | if (res.data.error) resolve(res.data.error)
55 | const text = `User: ${res.data.Username}\nName: ${res.data.Name}\nBio: ${res.data.Biodata}\nFollower: ${res.data.Jumlah_Followers}\nFollowing: ${res.data.Jumlah_Following}\nPost: ${res.data.Jumlah_Post}`
56 | resolve(text)
57 | })
58 | .catch((err) => {
59 | reject(err)
60 | })
61 | })
62 |
63 | const stalkigpict = async(url) => new Promise((resolve, reject) => {
64 | axios.get(`${link}/api/stalk?username=${url}`)
65 | .then((res) => {
66 | if (res.data.error) resolve('https://c4.wallpaperflare.com/wallpaper/976/117/318/anime-girls-404-not-found-glowing-eyes-girls-frontline-wallpaper-preview.jpg')
67 | resolve(`${res.data.Profile_pic}`)
68 | })
69 | .catch((err) => {
70 | reject(err)
71 | })
72 | })
73 |
74 | const quote = async() => new Promise((resolve, reject) => {
75 | axios.get(`${link}/api/randomquotes`)
76 | .then((res) => {
77 | const text = `Author: ${res.data.author}\n\nQuote: ${res.data.quotes}`
78 | resolve(text)
79 | })
80 | .catch((err) => {
81 | reject(err)
82 | })
83 | })
84 |
85 | const wiki = async(url) => new Promise((resolve, reject) => {
86 | axios.get(`${link}/api/wiki?q=${url}`)
87 | .then((res) => {
88 | resolve(res.data.result)
89 | })
90 | .catch((err) => {
91 | reject(err)
92 | })
93 | })
94 |
95 | const daerah = async() => new Promise((resolve, reject) => {
96 | axios.get(`${link}/daerah`)
97 | .then((res) => {
98 | resolve(res.data.result)
99 | })
100 | .catch((err) => {
101 | reject(err)
102 | })
103 | })
104 |
105 | const jadwaldaerah = async(url) => new Promise((resolve, reject) => {
106 | axios.get(`https://api.haipbis.xyz/jadwalsholat?daerah=${url}`)
107 | .then((res) => {
108 | if (res.data.error) resolve(res.data.error)
109 | const text = `Jadwal Sholat ${url}\n\nImsyak: ${res.data.Imsyak}\nSubuh: ${res.data.Subuh}\nDzuhur: ${res.data.Dzuhur}\nAshar: ${res.data.Ashar}\nMaghrib: ${res.data.Maghrib}\nIsya: ${res.data.Isya}`
110 | resolve(text)
111 | })
112 | .catch((err) => {
113 | reject(err)
114 | })
115 | })
116 |
117 | const cuaca = async(url) => new Promise((resolve, reject) => {
118 | axios.get(`https://rest.farzain.com/api/cuaca.php?id=${url}&apikey=O8mUD3YrHIy9KM1fMRjamw8eg`)
119 | .then((res) => {
120 | if (res.data.respon.cuaca == null) resolve('Maaf daerah kamu tidak tersedia')
121 | const text = `Cuaca di: ${res.data.respon.tempat}\n\nCuaca: ${res.data.respon.cuaca}\nAngin: ${res.data.respon.angin}\nDesk: ${res.data.respon.deskripsi}\nKelembapan: ${res.data.respon.kelembapan}\nSuhu: ${res.data.respon.suhu}\nUdara: ${res.data.respon.udara}`
122 | resolve(text)
123 | })
124 | .catch((err) => {
125 | reject(err)
126 | })
127 | })
128 |
129 | const chord = async(url) => new Promise((resolve, reject) => {
130 | axios.get(`${link}/api/chord?q=${url}`)
131 | .then((res) => {
132 | if (res.data.error) resolve(res.data.error)
133 | resolve(res.data.result)
134 | })
135 | .catch((err) => {
136 | reject(err)
137 | })
138 | })
139 |
140 | const tulis = async(teks) => new Promise((resolve, reject) => {
141 | axios.get(`${link}/api/nulis?text=${encodeURIComponent(teks)}`)
142 | .then((res) => {
143 | resolve(`${res.data.result}`)
144 | })
145 | .catch((err) => {
146 | reject(err)
147 | })
148 | })
149 |
150 | const artinama = async(nama) => new Promise((resolve, reject) => {
151 | axios.get(`${link}/api/artinama?nama=${nama}`)
152 | .then((res) => {
153 | resolve(res.data.result)
154 | })
155 | .catch((err) => {
156 | reject(err)
157 | })
158 | })
159 |
160 | const cekjodoh = async(nama, pasangan) => new Promise((resolve, reject) => {
161 | axios.get(`${link}/api/jodohku?nama=${nama}&pasangan=${pasangan}`)
162 | .then((res) => {
163 | const textc = `Nama : ${res.data.nama}\nPasangan : ${res.data.pasangan}\nPositif: ${res.data.positif}\nNegatif : ${res.data.negatif}`
164 | resolve({ link: res.data.gambar, text: textc })
165 | })
166 | .catch((err) => {
167 | reject(err)
168 | })
169 | })
170 |
171 | const covidindo = async() => new Promise((resolve, reject) => {
172 | axios.get(`${link}/api/coronaindo`)
173 | .then((res) => {
174 | const textv = `Info Covid-19 ${res.data.negara}\n\nKasus Baru: ${res.data.kasus_baru}\nTotal Kasus: ${res.data.kasus_total}\nSembuh: ${res.data.sembuh}\nPenanganan: ${res.data.penanganan}\nMeninggoy: ${res.data.meninggal}\n\nUpdate: ${res.data.terakhir}`
175 | resolve(textv)
176 | })
177 | .catch((err) => {
178 | reject(err)
179 | })
180 | })
181 |
182 | const bapakfont = async(kalimat) => new Promise((resolve, reject) => {
183 | axios.get(`${link}/api/bapakfont?kata=${kalimat}`)
184 | .then((res) => {
185 | resolve(res.data.result)
186 | })
187 | .catch((err) => {
188 | reject(err)
189 | })
190 | })
191 |
192 | const lirik = async(judul) => new Promise((resolve, reject) => {
193 | axios.get(`${link}/api/lirik?judul=${judul}`)
194 | .then((res) => {
195 | resolve(res.data.result)
196 | })
197 | .catch((err) => {
198 | reject(err)
199 | })
200 | })
201 |
202 | module.exports = {
203 | insta,
204 | ytmp3,
205 | ytmp4,
206 | stalkig,
207 | fb,
208 | stalkigpict,
209 | quote,
210 | wiki,
211 | daerah,
212 | jadwaldaerah,
213 | cuaca,
214 | chord,
215 | tulis,
216 | artinama,
217 | cekjodoh,
218 | covidindo,
219 | bapakfont,
220 | lirik
221 | }
--------------------------------------------------------------------------------
/lib/say.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/setting.json:
--------------------------------------------------------------------------------
1 | {
2 | "limitCount": "25",
3 | "medialimitCount": "5",
4 | "memberLimit": 10,
5 | "groupLimit": "100",
6 | "prefix": "!",
7 | "mtc": false,
8 | "restartState": false,
9 | "restartId": "undefined",
10 | "banChats": false,
11 | "Rest": true
12 | }
--------------------------------------------------------------------------------
/lib/shortener.js:
--------------------------------------------------------------------------------
1 | const { fetchText } = require('../utils/fetcher')
2 |
3 | /**
4 | * Create shorturl
5 | *
6 | * @param {String} url
7 | */
8 | module.exports = shortener = (url) => new Promise((resolve, reject) => {
9 | console.log('Creating short url...')
10 | fetchText(`https://tinyurl.com/api-create.php?url=${url}`)
11 | .then((text) => resolve(text))
12 | .catch((err) => reject(err))
13 | })
--------------------------------------------------------------------------------
/lib/tod.json:
--------------------------------------------------------------------------------
1 | [{
2 | "truth": "Siapa first kissmu?",
3 | "dare": "Coba nyanyi satu lagu tapi ganti semua huruf vokal menjadi i"
4 | },
5 | {
6 | "truth": "Acara tv apa yang paling memuakkan? Berikan alasannya!",
7 | "dare": "Ambil beberapa nomor dari kontakmu secara acak dan kirim pesan i love you sama mereka.(Lampirkan Screenshot!)"
8 | },
9 | {
10 | "truth": "Apa hal paling buruk yang pernah kamu bilang tentang temenmu?",
11 | "dare": "Ambil nomor secara acak dari kontakmu, telepon dia, dan bilang Aku mencintaimu"
12 | },
13 | {
14 | "truth": "Apa hal paling memalukan dari dirimu?",
15 | "dare": "Like semua foto mantan!"
16 | },
17 | {
18 | "truth": "Apa hal paling memalukan dari temanmu?",
19 | "dare": "Buat story tanpa hide siapapun dan bilang, 'aku hamil :('"
20 | },
21 | {
22 | "truth": "Apa hal pertama yang kamu lihat saat kamu melihat orang lain (beda gender)?i",
23 | "dare": "Kirim foto aibmu!"
24 | },
25 | {
26 | "truth": "Apa hal pertama yang terlintas di pikiranmu saat kamu melihat cermin",
27 | "dare": "Screenshot galeri kamu!"
28 | },
29 | {
30 | "truth": "Apa hal terbodoh yang pernah kamu lakukan?",
31 | "dare": "Screenshot chat whatsapp kamu!"
32 | },
33 | {
34 | "truth": "Apa ketakutan terbesar kamu",
35 | "dare": "Screenshot dm instagram!"
36 | },
37 | {
38 | "truth": "Apa mimpi terburukmu",
39 | "dare": "Post story foto mantan selama 5 menit!"
40 | },
41 | {
42 | "truth": "Apa mimpi terkonyol yang pernah kamu inget",
43 | "dare": "Pap selfie sekarang juga!"
44 | },
45 | {
46 | "truth": "Apa pekerjaan paling konyol yang pernah kamu bayangin kamu akan jadi?",
47 | "dare": "Tag temanmu lalu katakan 'i love u'"
48 | },
49 | {
50 | "truth": "Apa sifat terburukmu menurut kamu?",
51 | "dare": "Kirim vn tertawamu"
52 | },
53 | {
54 | "truth": "Apa sifat yang ingin kamu rubah dari dirimu?",
55 | "dare": "Kirim pap ke teman kontakmu!(lampirkan screenshot!)"
56 | },
57 | {
58 | "truth": "Apa sifat yang ingin kamu rubah dari temanmu?",
59 | "dare": "Chat kedua orangtuamu, katakan bahwa kamu kangen dengan mereka lengkap dengan emoticon sedih."
60 | },
61 | {
62 | "truth": "Apa yg kamu fikirkan sebelum kamu tidur ? ex: menghayal tentang jodoh,dll",
63 | "dare": "Confess perasaan kamu sekarang!"
64 | },
65 | {
66 | "truth": "Bagian tubuh temanmu mana yang paling kamu sukai dan ingin kamu punya?",
67 | "dare": "Chat gebetan kamu dan katakan kalo kamu suka!(lampirkan screenshot)"
68 | },
69 | {
70 | "truth": "Bagian tubuhmu mana yang paling kamu benci?",
71 | "dare": "Coba searcing google mengenai hal-hal yang mengerikan atau menggelikan seperti trypophobia, dll."
72 | },
73 | {
74 | "truth": "Dari semua kelas yang ada di sekolah, kelas mana yang paling ingin kamu masuki dan kelas mana yang paling ingin kamu hindari?",
75 | "dare": "Bilang pada seseorang di kelas, 'Aku baru saja diberi tahu aku adalah kembaranmu dulu, kita dipisahkan, lalu aku menjalani operasi plastik. Dan ini adalah hal paling serius yang pernah aku katakan.'"
76 | },
77 | {
78 | "truth": "Deksripsikan teman terdekat mu!",
79 | "dare": "Kirim pesan pada orangtuamu, 'Ma, Pa, aku sudah tahu bahwa aku adalah anak adopsi dari Panti Asuhan. Jangan menyembunyikan hal ini lagi.'"
80 | },
81 | {
82 | "truth": "Deskripsikan dirimu dalam satu kata!",
83 | "dare": "Marah-marah ketemen kamu yang gak nongol di grup!"
84 | },
85 | {
86 | "truth": "Hal apa yang kamu rahasiakan sampe sekarang dan gak ada satu orangpun yang tau?",
87 | "dare": "Telpon orang yang nyimak doang di grup!"
88 | },
89 | {
90 | "truth": "Hal paling romantis apa yang seseorang (beda gender) pernah lakuin atau kasih ke kamu?",
91 | "dare": "Minta pap ke siapapun teman kontak kamu!"
92 | },
93 | {
94 | "truth": "Hal-hal menjijikan apa yang pernah kamu alami ?",
95 | "dare": "Nyebutin 1 biru sampai 10 biru dengan cepat dan tidak boleh melakukan kesalahan. Jika salah maka harus diulang dari awal."
96 | },
97 | {
98 | "truth": "Jika kamu lahir kembali dan harus jadi salah satu dari temanmu, siapa yang akan kamu pilih untuk jadi dia?",
99 | "dare": "Suruh bersiul pas mulutnya lagi penuh dijejelin makanan."
100 | },
101 | {
102 | "truth": "Jika punya kekuatan super/ super power ingin melakukan apa",
103 | "dare": "Pura pura kerasukan ex: kerasukan macan dll"
104 | },
105 | {
106 | "truth": "Kalo kamu disuruh operasi plastik dengan contoh wajah dari teman sekelasmu, wajah siapa yang akan kamu tiru?",
107 | "dare": "Peluk orangtuamu dan katakan kalau kamu menyayanginya"
108 | },
109 | {
110 | "truth": "Jika sebentar lagi kiamat, apa yg kamu lakukan ?",
111 | "dare": "Pake celana kebalik sampe besok paginya."
112 | },
113 | {
114 | "truth": "Kamu pernah mencuri sesuatu gak?",
115 | "dare": "Buatlah video nyanyi dan upload ke instagram!"
116 | },
117 | {
118 | "truth": "Kapan terakhir kali menangis dan mengapa?",
119 | "dare": "Screenshot chat terakhir kamu(selain grup ini)"
120 | },
121 | {
122 | "truth": "kemampuan spesial kamu apa?",
123 | "dare": "Telepon sahabat kamu dan katakan jika kamu hamil!"
124 | },
125 | {
126 | "truth": "Kok bisa suka sama orang yang kamu sukai?",
127 | "dare": "Sebutkan nama guru yang paling kamu benci! Jelaskan alasannya!"
128 | },
129 | {
130 | "truth": "Menurutmu, apa sifat baik teman terdekatmu yang nggak dia sadari?",
131 | "dare": "Buat suara seperti monyet"
132 | },
133 | {
134 | "truth": "Orang seperti apa yang ingin kamu nikahi suatu saat nanti?",
135 | "dare": "Buat suara seperti kuda"
136 | },
137 | {
138 | "truth": "Pengen tukeran hidup sehari dengan siapa? (teman terdekat yang kalian sama-sama tahu) dan mengapa",
139 | "dare": "Buat suara hantu"
140 | },
141 | {
142 | "truth": "Pernahkah kamu diam-diam berharap hubungan seseorang dengan pacarnya putus? Siapa?",
143 | "dare": "Tatap foto mantan selama 1 menit!"
144 | },
145 | {
146 | "truth": "Pilih PACAR atau TEMAN ? berikan alasannya !",
147 | "dare": "Dengarkan lagu dari Kufaku Band"
148 | },
149 | {
150 | "truth": "Quote apa yang paling kamu ingat dan kamu suka?",
151 | "dare": "Tambahkan seseorang siapapun ke dalam grup"
152 | },
153 | {
154 | "truth": "Siapa diantara temen-temenmu yang paling NGGAK fotogenik dan kalo difoto lagi ketawa mukanya kaya kuda?",
155 | "dare": "Kick orang yang kamu benci dari grup!"
156 | },
157 | {
158 | "truth": "Siapa mantan terindah mu? dan mengapa kalian putus ?!",
159 | "dare": "Beribadah dulu gih"
160 | },
161 | {
162 | "truth": "Siapa nama mantan pacar teman mu yang pernah kamu sukai diam diam?",
163 | "dare": "Minum air yang banyak!"
164 | },
165 | {
166 | "truth": "Siapa orang (lawan jenis) yang paling sering terlintas di pikiranmu?",
167 | "dare": "Kirim foto terbaikmu!"
168 | },
169 | {
170 | "truth": "Siapa orang yg paling menjengkelkan di antara teman teman mu ? alasannya!",
171 | "dare": "Follow Instagram https://instagram.com/bdrsmsdn"
172 | }
173 | ]
--------------------------------------------------------------------------------
/lib/truth.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs');
2 |
3 | module.exports = () => {
4 | const data = fs.readFileSync('./lib/tod.json');
5 | const jsonData = JSON.parse(data);
6 | const randIndex = Math.floor(Math.random() * jsonData.length);
7 | const randKey = jsonData[randIndex];
8 | return `*TRUTH* : ${randKey.truth}?`;
9 | };
--------------------------------------------------------------------------------
/lib/ttp.js:
--------------------------------------------------------------------------------
1 | const fetch = require('node-fetch')
2 |
3 | const getStickerMaker = (link) => new Promise((resolve, reject) => {
4 | fetch('https://api.areltiyan.site/sticker_maker?text=' + encodeURIComponent(link), {
5 | method: 'GET',
6 | })
7 | .then(async res => {
8 | const text = await res.json()
9 |
10 | resolve(text)
11 |
12 | })
13 | .catch(err => reject(err))
14 | });
15 | exports.getStickerMaker = getStickerMaker
--------------------------------------------------------------------------------
/lib/user.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/lib/welcome.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs-extra')
2 |
3 | module.exports = welcome = async(client, event) => {
4 | //console.log(event.action)
5 | const welkom = JSON.parse(fs.readFileSync('./lib/welcome.json'))
6 | const isWelkom = welkom.includes(event.chat)
7 | try {
8 | if (event.action == 'add' && isWelkom) {
9 | const gChat = await client.getChatById(event.chat)
10 | const pChat = await client.getContact(event.who)
11 | const { contact, groupMetadata, name } = gChat
12 | const pepe = await client.getProfilePicFromServer(event.who)
13 | const capt = `Halo @${event.who.replace('@c.us', '')} 👋\n Welcome to the *Grup ${name}*\n═══════════════════\nHave fun with us✨\n═══════════════════\n`
14 | if (pepe == '' || pepe == undefined) {
15 | await client.sendFileFromUrl(event.chat, 'https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcTQcODjk7AcA4wb_9OLzoeAdpGwmkJqOYxEBA&usqp=CAU', 'profile.jpg')
16 | } else {
17 | await client.sendFileFromUrl(event.chat, pepe, 'profile.jpg')
18 | client.sendTextWithMentions(event.chat, capt)
19 | }
20 |
21 | }
22 | } catch (err) {
23 | console.log(err)
24 | }
25 | }
--------------------------------------------------------------------------------
/lib/welcome.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/media/aswu.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/aswu.mp4
--------------------------------------------------------------------------------
/media/aswu.mp4__tmp__palette_1605939035042.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/aswu.mp4__tmp__palette_1605939035042.png
--------------------------------------------------------------------------------
/media/aswu.mp4__tmp__palette_1606316598984.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/aswu.mp4__tmp__palette_1606316598984.png
--------------------------------------------------------------------------------
/media/bgjg.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/bgjg.mp3
--------------------------------------------------------------------------------
/media/img/Kaguya.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/img/Kaguya.png
--------------------------------------------------------------------------------
/media/img/before.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/img/before.jpg
--------------------------------------------------------------------------------
/media/img/nimek.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/img/nimek.jpg
--------------------------------------------------------------------------------
/media/img/origin.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/img/origin.jpg
--------------------------------------------------------------------------------
/media/img/screenshot.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/img/screenshot.jpeg
--------------------------------------------------------------------------------
/media/img/tutod.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/img/tutod.jpg
--------------------------------------------------------------------------------
/media/iri.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/iri.mp3
--------------------------------------------------------------------------------
/media/nobg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/nobg.png
--------------------------------------------------------------------------------
/media/output.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/output.gif
--------------------------------------------------------------------------------
/media/output.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/output.mp3
--------------------------------------------------------------------------------
/media/sticker/.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/sticker/.jpeg
--------------------------------------------------------------------------------
/media/sticker/arap.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/sticker/arap.jpeg
--------------------------------------------------------------------------------
/media/sticker/aswu.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/sticker/aswu.mp4
--------------------------------------------------------------------------------
/media/sticker/b:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/media/sticker/cya.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/sticker/cya.jpeg
--------------------------------------------------------------------------------
/media/sticker/hai_cewe.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/sticker/hai_cewe.jpeg
--------------------------------------------------------------------------------
/media/sticker/ketawa.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/sticker/ketawa.jpeg
--------------------------------------------------------------------------------
/media/sticker/output.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/sticker/output.gif
--------------------------------------------------------------------------------
/media/sticker/pukul.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/sticker/pukul.jpeg
--------------------------------------------------------------------------------
/media/sticker/santet.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/sticker/santet.jpeg
--------------------------------------------------------------------------------
/media/tarekses.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/tarekses.mp3
--------------------------------------------------------------------------------
/media/tts.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/tts.mp3
--------------------------------------------------------------------------------
/media/tts/nope.txt:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/media/tts/tts.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/tts/tts.mp3
--------------------------------------------------------------------------------
/media/welot.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/media/welot.mp3
--------------------------------------------------------------------------------
/options.js:
--------------------------------------------------------------------------------
1 |
2 | const fs = require('fs-extra')
3 |
4 | module.exports = options = (headless, start) => {
5 | const chromePath = {
6 | win32: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', // Windows 32 bit
7 | win64: 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe', // Windows 64 bit
8 | linuxChrome: '/usr/bin/google-chrome-stable', // Linux - Chrome
9 | linuxChromium: '/usr/bin/chromium-browser', // Linux - Chromium
10 | darwin: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome' // MacOS
11 | }
12 |
13 | if (fs.existsSync(chromePath.win32)) {
14 | execPath = chromePath.win32
15 | } else if (fs.existsSync(chromePath.win64)) {
16 | execPath = chromePath.win64
17 | } else if (fs.existsSync(chromePath.linuxChrome)) {
18 | execPath = chromePath.linuxChrome
19 | } else if (fs.existsSync(chromePath.linuxChromium)) {
20 | execPath = chromePath.linuxChromium
21 | } else if (process.platform === 'darwin') {
22 | execPath = chromePath.darwin
23 | } else {
24 | console.error(new Error('Google Chrome Is Not Installed'))
25 | process.exit(1)
26 | }
27 |
28 | const options = {
29 | headless: headless,
30 | autoRefresh: true,
31 | restartOnCrash: start,
32 | cacheEnabled: false,
33 | executablePath: execPath,
34 | useChrome: true,
35 | killProcessOnBrowserClose: true,
36 | throwErrorOnTosBlock: false,
37 | chromiumArgs: [
38 | '--no-sandbox',
39 | '--disable-setuid-sandbox',
40 | '--aggressive-cache-discard',
41 | '--disable-cache',
42 | '--disable-application-cache',
43 | '--disable-offline-load-stale-cache',
44 | '--disk-cache-size=0'
45 | ]
46 | }
47 |
48 | return options
49 | }
50 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "LUCYABOT",
3 | "version": "3.1.1",
4 | "description": "Bismillah, recode punya mhankbarbar.",
5 | "main": "index.js",
6 | "scripts": {
7 | "start": "node index.js",
8 | "test": "echo \"Error: no test specified\" && exit 1"
9 | },
10 | "author": "AKSARA",
11 | "license": "Apache-2.0",
12 | "dependencies": {
13 | "@open-wa/wa-automate": "^3.1.2",
14 | "@open-wa/wa-decrypt": "^2.0.1",
15 | "@justalk/pornhub-api": "^3.4.0",
16 | "app-root-path": "^3.0.0",
17 | "axios": "^0.19.2",
18 | "bent": "^7.3.10",
19 | "brainly-scraper": "^1.0.2",
20 | "brainly-scraper-v2": "^1.0.5",
21 | "chalk": "^4.1.0",
22 | "emoji-regex": "^9.0.0",
23 | "emoji-unicode": "2.0.1",
24 | "figlet": "^1.5.0",
25 | "file-type": "^15.0.1",
26 | "fluent-ffmpeg": "^2.1.2",
27 | "fs-extra": "^9.0.1",
28 | "get-youtube-id": "^1.0.1",
29 | "google-it": "^1.5.0",
30 | "g-i-s": "2.1.6",
31 | "got": "^11.7.0",
32 | "gtts": "^0.2.1",
33 | "image-size": "^0.9.1",
34 | "image-to-base64": "^2.1.1",
35 | "image-to-pdf": "^1.0.0",
36 | "jimp": "^0.16.0",
37 | "mathjs": "^8.0.1",
38 | "moment-timezone": "^0.5.31",
39 | "multer": "^1.4.2",
40 | "nana-api": "^1.1.2",
41 | "needle": "^2.5.2",
42 | "nhentai-api": "^3.0.2",
43 | "nhentai-js": "^4.0.0",
44 | "node-cron": "^2.0.3",
45 | "node-fetch": "^2.6.1",
46 | "node-wav": "0.0.2",
47 | "node-gtts": "^2.0.2",
48 | "object.entries": "^1.1.2",
49 | "performance-now": "^2.1.0",
50 | "pm2": "^4.5.0",
51 | "promise": "^8.1.0",
52 | "remove.bg": "^1.3.0",
53 | "request": "^2.88.2",
54 | "text2png": "^2.3.0",
55 | "tiktok-scraper": "^1.3.4",
56 | "translatte": "^2.5.8",
57 | "video-crop": "^1.1.0",
58 | "video-crop-cli": "^1.1.0",
59 | "video-url-link": "^0.1.4",
60 | "web-audio-api": "^0.2.2",
61 | "ytdl": "^1.3.5"
62 | },
63 | "directories": {
64 | "lib": "lib"
65 | },
66 | "devDependencies": {},
67 | "repository": {
68 | "type": "git",
69 | "url": "git+https://github.com/Angga23Bot/SashaBOT",
70 | "babel-eslint": "^10.1.0",
71 | "eslint": "^7.9.0",
72 | "eslint-config-standard": "^14.1.1",
73 | "eslint-plugin-import": "^2.22.0",
74 | "eslint-plugin-node": "^11.1.0",
75 | "eslint-plugin-promise": "^4.2.1",
76 | "eslint-plugin-standard": "^4.0.1"
77 | },
78 | "keywords": [
79 | "Whatsapp-Bot"
80 | ],
81 | "bugs": {
82 | "url": "https://github.com/TobyG74/issues"
83 | },
84 | "homepage": "https://github.com/TobyG74/"
85 | }
--------------------------------------------------------------------------------
/quote/compressed.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bdrsmsdn/lucya-bot/4129aed01952901334644be73e22dbafe49c9311/quote/compressed.jpeg
--------------------------------------------------------------------------------
/run.js:
--------------------------------------------------------------------------------
1 | const pm2 = require('pm2')
2 | const cron = require('node-cron');
3 | const fs = require('fs');
4 | const settings = JSON.parse(fs.readFileSync('./lib/setting.json'))
5 |
6 | pm2.connect((error) => {
7 | if (error) {
8 | console.error(error)
9 | }
10 |
11 | pm2.start({ script: 'index.js' }, (error, apps) => {
12 | pm2.disconnect()
13 | if (error) {
14 | console.error(error)
15 | }
16 | })
17 |
18 | if(settings.Rest){
19 | cron.schedule("50 59 8 * * *", function(){
20 | settings.banChats = true
21 | fs.writeFileSync('./lib/setting.json',JSON.stringify(settings,null,2))
22 | pm2.restart('index', (error) => {
23 | if (error) {
24 | console.error(error)
25 | }
26 | })
27 | console.log('[INFO] Time to rest!');
28 | })
29 |
30 | cron.schedule("0 0 9 * * *", function(){
31 | settings.banChats = false
32 | // fs.writeFileSync('./lib/setting.json',JSON.stringify(settings,null,2))
33 | pm2.restart('index', (error) => {
34 | if (error) {
35 | console.error(error)
36 | }
37 | })
38 | console.log('[INFO] Time to work :D');
39 | })
40 | }
41 |
42 | cron.schedule("0 0 0 * * *", function(){
43 | let obj = [{id: settings.owner, limit: 1}];
44 | fs.writeFileSync('./lib/limit.json', JSON.stringify(obj));
45 | pm2.restart('index', (error) => {
46 | if (error) {
47 | console.error(error)
48 | }
49 | })
50 | console.log('[INFO] Limit restarted!');
51 | })
52 | })
53 |
--------------------------------------------------------------------------------
/utils/fetcher.js:
--------------------------------------------------------------------------------
1 | const fetch = require('node-fetch')
2 | const FormData = require('form-data')
3 | const fs = require('fs')
4 | const { fromBuffer } = require('file-type')
5 | const resizeImage = require('./imageProcessing')
6 |
7 | /**
8 | *Fetch Json from Url
9 | *
10 | *@param {String} url
11 | *@param {Object} options
12 | */
13 |
14 | const fetchJson = (url, options) =>
15 | new Promise((resolve, reject) =>
16 | fetch(url, options)
17 | .then(response => response.json())
18 | .then(json => resolve(json))
19 | .catch(err => {
20 | console.error(err)
21 | reject(err)
22 | })
23 | )
24 |
25 | /**
26 | * Fetch Text from Url
27 | *
28 | * @param {String} url
29 | * @param {Object} options
30 | */
31 |
32 | const fetchText = (url, options) => {
33 | return new Promise((resolve, reject) => {
34 | return fetch(url, options)
35 | .then(response => response.text())
36 | .then(text => resolve(text))
37 | .catch(err => {
38 | console.error(err)
39 | reject(err)
40 | })
41 | })
42 | }
43 |
44 | /**
45 | * Fetch base64 from url
46 | * @param {String} url
47 | */
48 |
49 | const fetchBase64 = (url, mimetype) => {
50 | return new Promise((resolve, reject) => {
51 | console.log('Get base64 from:', url)
52 | return fetch(url)
53 | .then((res) => {
54 | const _mimetype = mimetype || res.headers.get('content-type')
55 | res.buffer()
56 | .then((result) => resolve(`data:${_mimetype};base64,` + result.toString('base64')))
57 | })
58 | .catch((err) => {
59 | console.error(err)
60 | reject(err)
61 | })
62 | })
63 | }
64 |
65 | /**
66 | * Upload Image to Telegra.ph
67 | *
68 | * @param {String} base64 image buffer
69 | * @param {Boolean} resize
70 | */
71 |
72 | const uploadImages = (buffData, type) => {
73 | // eslint-disable-next-line no-async-promise-executor
74 | return new Promise(async(resolve, reject) => {
75 | const { ext } = await fromBuffer(buffData)
76 | const filePath = 'utils/tmp.' + ext
77 | const _buffData = type ? await resizeImage(buffData, false) : buffData
78 | fs.writeFile(filePath, _buffData, { encoding: 'base64' }, (err) => {
79 | if (err) return reject(err)
80 | console.log('Uploading image to telegra.ph server...')
81 | const fileData = fs.readFileSync(filePath)
82 | const form = new FormData()
83 | form.append('file', fileData, 'tmp.' + ext)
84 | fetch('https://telegra.ph/upload', {
85 | method: 'POST',
86 | body: form
87 | })
88 | .then(res => res.json())
89 | .then(res => {
90 | if (res.error) return reject(res.error)
91 | resolve('https://telegra.ph' + res[0].src)
92 | })
93 | .then(() => fs.unlinkSync(filePath))
94 | .catch(err => reject(err))
95 | })
96 | })
97 | }
98 |
99 | const custom = async(imageUrl, top, bott = '') => new Promise((resolve, reject) => {
100 | topText = top.replace(/ /g, '%20').replace('\n', '%5Cn')
101 | fetchBase64(`https://api.memegen.link/images/custom/${topText}/${bott}.png?background=${imageUrl}`, 'image/png')
102 | .then((result) => resolve(result))
103 | .catch((err) => {
104 | console.error(err)
105 | reject(err)
106 | })
107 | })
108 |
109 | module.exports = {
110 | fetchJson,
111 | fetchText,
112 | fetchBase64,
113 | uploadImages,
114 | custom
115 | }
--------------------------------------------------------------------------------
/utils/imageProcessing.js:
--------------------------------------------------------------------------------
1 | const sharp = require('sharp')
2 | const { fromBuffer } = require('file-type')
3 |
4 | /**
5 | * Resize image to buffer or base64
6 | * @param {Buffer} bufferdata
7 | * @param {Boolean} encode
8 | * @param {String} mimType
9 | */
10 | // eslint-disable-next-line no-async-promise-executor
11 | module.exports = resizeImage = (buff, encode) => new Promise(async(resolve, reject) => {
12 | console.log('Resizeing image...')
13 | const { mime } = await fromBuffer(buff)
14 | sharp(buff, { failOnError: false })
15 | .resize(512, 512)
16 | .toBuffer()
17 | .then(resizedImageBuffer => {
18 | if (!encode) return resolve(resizedImageBuffer)
19 | console.log('Create base64 from resizedImageBuffer...')
20 | const resizedImageData = resizedImageBuffer.toString('base64')
21 | const resizedBase64 = `data:${mime};base64,${resizedImageData}`
22 | resolve(resizedBase64)
23 | })
24 | .catch(error => reject(error))
25 | })
--------------------------------------------------------------------------------
/utils/index.js:
--------------------------------------------------------------------------------
1 | const chalk = require('chalk')
2 | const moment = require('moment-timezone')
3 | moment.tz.setDefault('Asia/Jakarta').locale('id')
4 |
5 | /**
6 | * Get text with color
7 | * @param {String} text
8 | * @param {String} color
9 | * @return {String} Return text with color
10 | */
11 | const color = (text, color) => {
12 | return !color ? chalk.blueBright(text) : chalk.keyword(color)(text)
13 | }
14 |
15 | // Message type Log
16 | const messageLog = (fromMe, type) => updateJson('utils/stat.json', (data) => {
17 | (fromMe) ? (data.sent[type]) ? data.sent[type] += 1: data.sent[type] = 1: (data.receive[type]) ? data.receive[type] += 1 : data.receive[type] = 1
18 | return data
19 | })
20 |
21 | /**
22 | * Get Time duration
23 | * @param {Date} timestamp
24 | * @param {Date} now
25 | */
26 | const processTime = (timestamp, now) => {
27 | // timestamp => timestamp when message was received
28 | return moment.duration(now - moment(timestamp * 1000)).asSeconds()
29 | }
30 |
31 | /**
32 | * is it url?
33 | * @param {String} url
34 | */
35 | const isUrl = (url) => {
36 | return url.match(new RegExp(/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&/=]*)/gi))
37 | }
38 |
39 | // Message Filter / Message Cooldowns
40 | const usedCommandRecently = new Set()
41 |
42 | /**
43 | * Check is number filtered
44 | * @param {String} from
45 | */
46 | const isFiltered = (from) => {
47 | return !!usedCommandRecently.has(from)
48 | }
49 |
50 | /**
51 | * Add number to filter
52 | * @param {String} from
53 | */
54 | const addFilter = (from) => {
55 | usedCommandRecently.add(from)
56 | setTimeout(() => {
57 | return usedCommandRecently.delete(from)
58 | }, 3000) // 5sec is delay before processing next command
59 | }
60 |
61 | module.exports = {
62 | msgFilter: {
63 | isFiltered,
64 | addFilter
65 | },
66 | processTime,
67 | isUrl,
68 | color,
69 | messageLog
70 | }
--------------------------------------------------------------------------------
/utils/stat.json:
--------------------------------------------------------------------------------
1 | {
2 | "sent": {
3 |
4 | },
5 | "receive": {
6 |
7 | }
8 | }
--------------------------------------------------------------------------------