forked from SlavyanDesu/BocchiBot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
138 lines (129 loc) · 7.28 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/* eslint-disable no-unused-vars */
const { create, Client } = require('@open-wa/wa-automate')
const { color, options } = require('./tools')
const { ind, eng } = require('./message/text/lang/')
const { loader } = require('./function')
const { version, bugs } = require('./package.json')
const msgHandler = require('./message/index.js')
const figlet = require('figlet')
const canvas = require('discord-canvas')
const { ownerBot } = require('./config.json')
const fs = require('fs-extra')
const { groupLimit, memberLimit } = require('./database/bot/setting.json')
const start = (bocchi = new Client()) => {
console.log(color(figlet.textSync('BocchiBot', 'Larry 3D'), 'cyan'))
console.log(color('=> Bot successfully loaded! Database:', 'yellow'), color(loader.getAllDirFiles('./database').length), color('Library:', 'yellow'), color(loader.getAllDirFiles('./lib').length), color('Function:', 'yellow'), color(loader.getAllDirFiles('./function').length))
console.log(color('=> Source code version:', 'yellow'), color(version))
console.log(color('=> Bug? Error? Suggestion? Visit here:', 'yellow'), color(bugs.url))
console.log(color('[BOCCHI]'), color('BocchiBot is now online!', 'yellow'))
console.log(color('[DEV]', 'cyan'), color('Welcome back, Owner! Hope you are doing well~', 'magenta'))
// Uncomment code di bawah untuk mengaktifkan auto-update file changes. Tidak disarankan untuk long-time use.
// Uncomment code below to activate auto-update file changes. Not recommended for long-time use.
// loader.nocache('../message/index.js', (m) => console.log(color('[WATCH]', 'orange'), color(`=> '${m}'`, 'yellow'), 'file is updated!'))
bocchi.onStateChanged((state) => {
console.log(color('[BOCCHI]'), state)
if (state === 'UNPAIRED' || state === 'CONFLICT' || state === 'UNLAUNCHED') bocchi.forceRefocus()
})
bocchi.onAddedToGroup(async (chat) => {
const gc = await bocchi.getAllGroups()
console.log(color('[BOCCHI]'), 'Added to a new group. Name:', color(chat.contact.name, 'yellow'), 'Total members:', color(chat.groupMetadata.participants.length, 'yellow'))
if (chat.groupMetadata.participants.includes(ownerBot)) {
await bocchi.sendText(chat.id, ind.addedGroup(chat))
} else if (gc.length > groupLimit) {
await bocchi.sendText(chat.id, `Max groups reached!\n\nCurrent status: ${gc.length}/${groupLimit}`)
await bocchi.deleteChat(chat.id)
await bocchi.leaveGroup(chat.id)
} else if (chat.groupMetadata.participants.length < memberLimit) {
await bocchi.sendText(chat.id, `Need at least ${memberLimit} members in group!`)
await bocchi.deleteChat(chat.id)
await bocchi.leaveGroup(chat.id)
} else {
await bocchi.sendText(chat.id, ind.addedGroup(chat))
}
})
bocchi.onMessage((message) => {
// Uncomment code di bawah untuk mengaktifkan auto-delete cache pesan.
// Uncomment code below to activate auto-delete message cache.
/*
bocchi.getAmountOfLoadedMessages()
.then((msg) => {
if (msg >= 1000) {
console.log(color('[BOCCHI]'), color(`Loaded message reach ${msg}, cuting message cache...`, 'yellow'))
bocchi.cutMsgCache()
console.log(color('[BOCCHI]'), color('Cache deleted!', 'yellow'))
}
})
*/
// Comment code msgHandler di bawah untuk mengaktifkan auto-update. Kemudian, uncomment code require di bawah msgHandler.
// Comment code below to activate auto-update. Then, uncomment require code below msgHandler.
msgHandler(bocchi, message)
// require('./message/index.js')(bocchi, message)
})
bocchi.onIncomingCall(async (callData) => {
await bocchi.sendText(callData.peerJid, ind.blocked(ownerBot))
await bocchi.contactBlock(callData.peerJid)
console.log(color('[BLOCK]', 'red'), color(`${callData.peerJid} has been blocked.`, 'yellow'))
})
bocchi.onGlobalParticipantsChanged(async (event) => {
const _welcome = JSON.parse(fs.readFileSync('./database/group/welcome.json'))
const isWelcome = _welcome.includes(event.chat)
const gcChat = await bocchi.getChatById(event.chat)
const pcChat = await bocchi.getContact(event.who)
let { pushname, verifiedName, formattedName } = pcChat
pushname = pushname || verifiedName || formattedName
const { name, groupMetadata } = gcChat
const botNumbers = await bocchi.getHostNumber() + '@c.us'
try {
if (event.action === 'add' && event.who !== botNumbers && isWelcome) {
const pic = await bocchi.getProfilePicFromServer(event.who)
if (pic === undefined) {
var picx = 'https://i.ibb.co/Tq7d7TZ/age-hananta-495-photo.png'
} else {
picx = pic
}
const welcomer = await new canvas.Welcome()
.setUsername(pushname)
.setDiscriminator(event.who.substring(6, 10))
.setMemberCount(groupMetadata.participants.length)
.setGuildName(name)
.setAvatar(picx)
.setColor('border', '#00100C')
.setColor('username-box', '#00100C')
.setColor('discriminator-box', '#00100C')
.setColor('message-box', '#00100C')
.setColor('title', '#00FFFF')
.setBackground('https://www.photohdx.com/images/2016/05/red-blurry-background.jpg')
.toAttachment()
const base64 = `data:image/png;base64,${welcomer.toBuffer().toString('base64')}`
await bocchi.sendFile(event.chat, base64, 'welcome.png', `Welcome ${pushname}!`)
} else if (event.action === 'remove' && event.who !== botNumbers && isWelcome) {
const pic = await bocchi.getProfilePicFromServer(event.who)
if (pic === undefined) {
var picxs = 'https://i.ibb.co/Tq7d7TZ/age-hananta-495-photo.png'
} else {
picxs = pic
}
const bye = await new canvas.Goodbye()
.setUsername(pushname)
.setDiscriminator(event.who.substring(6, 10))
.setMemberCount(groupMetadata.participants.length)
.setGuildName(name)
.setAvatar(picxs)
.setColor('border', '#00100C')
.setColor('username-box', '#00100C')
.setColor('discriminator-box', '#00100C')
.setColor('message-box', '#00100C')
.setColor('title', '#00FFFF')
.setBackground('https://www.photohdx.com/images/2016/05/red-blurry-background.jpg')
.toAttachment()
const base64 = `data:image/png;base64,${bye.toBuffer().toString('base64')}`
await bocchi.sendFile(event.chat, base64, 'welcome.png', `Bye ${pushname}, we will miss you~`)
}
} catch (err) {
console.error(err)
}
})
}
create(options(start))
.then((bocchi) => start(bocchi))
.catch((err) => console.error(err))