├── README.md └── Code.gs /README.md: -------------------------------------------------------------------------------- 1 | # Discord-Selfbot-Google-Script 2 | Discord Selfbot Google App Script 3 | 4 | Created By viloid (github.com/vsec7) 5 | 6 | *** NOTE : USE AT YOUR OWN RISK! *** 7 | 8 | ## • Features 9 | - Send Quote message 10 | - Send Response Simsimi message 11 | - Send Repost message from channel chat history 12 | - Send select random text from custom array 13 | - Auto Delete message 14 | 15 | ## • How to get Discord SelfBot Token? 16 | 17 | ``` 18 | javascript:(()=>{var t=document.body.appendChild(document.createElement`iframe`).contentWindow.localStorage.token.replace(/["]+/g, '');prompt('Get Selfbot Discord Token by github.com/vsec7', t)})(); 19 | ``` 20 | 21 | [DETAILS CLICK HERE](https://gist.github.com/vsec7/12066af3f704bd337c52c30f4c492ba2) 22 | 23 | ## • How to Run? 24 | 25 | - go to >> https://script.google.com/ 26 | - Edit Config at source code 27 | - Add Trigger 28 | - run main function 29 | 30 | ## • Donate 31 | 32 | SOL Address : viloid.sol 33 | 34 | BSC Address : 0xd3de361b186cc2Fc0C77764E30103F104a6d6D07 35 | -------------------------------------------------------------------------------- /Code.gs: -------------------------------------------------------------------------------- 1 | // Simple Discord SelfBot Google App Script 2 | // Coded by https://github.com/vsec7 3 | // Dont sell this script and use with your own risk 4 | 5 | // ------------------------ CONFIG ------------------------- 6 | // multiple selfbot token token 7 | token = [ 8 | "ODE3MzkzOTQ4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 9 | "ODE3MzkzOTQ4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 10 | ]; 11 | 12 | // multiple channel id 13 | channel_id = [ 14 | "103009xxxxxxxxxxxxx", 15 | "103009xxxxxxxxxxxxx" 16 | ] 17 | 18 | mode = "simsimi" // mode : quote, repost, simsimi, custom 19 | reply = "" // reply : Y or "" * for simsimi mode only 20 | del_after = "" // del_after : Y or "" 21 | simi_lang = "id" // simi_lang : id, en, etc 22 | repost_last = "30" 23 | 24 | // custom text 25 | custom = [ 26 | "hi", 27 | "iya kah?", 28 | "ohh iyaa", 29 | "GM", 30 | "GN" 31 | ] 32 | 33 | base = "https://discord.com/api/v9" 34 | // ------------------------------------------------------------ 35 | 36 | function main() { 37 | 38 | for (i = 0; i < token.length; i++) { 39 | me = getMe(token[i]) 40 | if (me == "undefined#undefined") { 41 | console.log("[Token Error] " + token[i]) 42 | } else { 43 | 44 | for (n = 0; n < channel_id.length; n++) { 45 | switch (mode) { 46 | case "quote": 47 | q = quote() 48 | s = sendMessage(token[i], channel_id[n], q) 49 | 50 | console.log("[" + me + "][QUOTE][" + channel_id[n] + "] " + q) 51 | 52 | if (del_after == "Y") { 53 | deleteMessage(token[i], channel_id[n], s['id']) 54 | console.log("[" + me + "][" + channel_id[n] + "] DELETE : " + s['id']) 55 | } 56 | break; 57 | 58 | case "repost": 59 | rand = Math.floor((Math.random() * repost_last) + 1) 60 | g = getMessage(token[i], channel_id[n], repost_last).reverse() 61 | 62 | s = sendMessage(token[i], channel_id[n], g[rand]['content']) 63 | 64 | console.log("[" + me + "][REPOST][" + channel_id[n] + "] " + g[rand]['content']) 65 | 66 | if (del_after == "Y") { 67 | deleteMessage(token[i], channel_id[n], s['id']) 68 | console.log("[" + me + "][" + channel_id[n] + "] DELETE : " + s['id']) 69 | } 70 | break; 71 | case "simsimi": 72 | gs = getMessage(token[i], channel_id[n], "1").reverse()[0] 73 | simi = simsimi(simi_lang, gs['content']) 74 | 75 | if (reply == "Y") { 76 | s = sendReply(token[i], channel_id[n], gs['id'], simi) 77 | console.log("[" + me + "][SIMSIMI][REPLY][" + channel_id[n] + "] " + simi) 78 | 79 | if (del_after == "Y") { 80 | deleteMessage(token[i], channel_id[n], s['id']) 81 | console.log("[" + me + "][" + channel_id[n] + "] DELETE : " + s['id']) 82 | } 83 | } else { 84 | s = sendMessage(token[i], channel_id[n], simi) 85 | console.log("[" + me + "][SIMSIMI][" + channel_id[n] + "] " + simi) 86 | 87 | if (del_after == "Y") { 88 | deleteMessage(token[i], channel_id[n], s['id']) 89 | console.log("[" + me + "][" + channel_id[n] + "] DELETE : " + s['id']) 90 | } 91 | } 92 | break; 93 | case "custom": 94 | rand = Math.floor((Math.random() * custom.length) + 1) 95 | cc = custom[rand] 96 | s = sendMessage(token[i], channel_id[n], cc) 97 | console.log("[" + me + "][CUSTOM][" + channel_id[n] + "] " + cc) 98 | 99 | if (del_after == "Y") { 100 | deleteMessage(token[i], channel_id[n], s['id']) 101 | console.log("[" + me + "][" + channel_id[n] + "] DELETE : " + s['id']) 102 | } 103 | break; 104 | default: 105 | break; 106 | } 107 | } 108 | } 109 | } 110 | } 111 | 112 | function quote() { 113 | url = "https://gist.githubusercontent.com/vsec7/45b5b362d9dde8bd381dc9b8a3b6331a/raw/7934009fc02655de3ffc4a28af22a6c0c1ecd102/quote-id.json"; 114 | r = UrlFetchApp.fetch(url); 115 | q = JSON.parse(r.getContentText()) 116 | rand = Math.round(Math.random() * q.length) 117 | return q[rand]['quote'] 118 | } 119 | 120 | function simsimi(lc, txt) { 121 | url = "https://api.simsimi.vn/v1/simtalk"; 122 | opt = { 123 | "method": "post", 124 | "payload": { 125 | "lc": lc, 126 | "text": txt 127 | }, 128 | "muteHttpExceptions": true 129 | }; 130 | r = UrlFetchApp.fetch(url, opt); 131 | return JSON.parse(r)['message'] 132 | } 133 | 134 | function getMe(t) { 135 | url = base + "/users/@me"; 136 | opt = { 137 | "method": "get", 138 | "headers": { 139 | "Authorization": t 140 | }, 141 | "muteHttpExceptions": true 142 | }; 143 | res = UrlFetchApp.fetch(url, opt); 144 | r = JSON.parse(res) 145 | return r['username'] + "#" + r['discriminator'] 146 | } 147 | 148 | function getMessage(t, c, l) { 149 | url = base + "/channels/" + c + "/messages?limit=" + l; 150 | opt = { 151 | "method": "get", 152 | "headers": { 153 | "Authorization": t 154 | }, 155 | "muteHttpExceptions": true 156 | }; 157 | res = UrlFetchApp.fetch(url, opt); 158 | r = JSON.parse(res) 159 | return r 160 | } 161 | 162 | function sendMessage(t, cid, txt) { 163 | url = base + "/channels/" + cid + "/messages"; 164 | opt = { 165 | "method": "post", 166 | "contentType": "application/json", 167 | "headers": { 168 | "Authorization": t 169 | }, 170 | "payload": JSON.stringify({ 171 | "content": txt 172 | }), 173 | "muteHttpExceptions": true 174 | }; 175 | res = UrlFetchApp.fetch(url, opt); 176 | r = JSON.parse(res) 177 | return r 178 | } 179 | 180 | function sendReply(t, cid, mid, txt) { 181 | url = base + "/channels/" + cid + "/messages"; 182 | opt = { 183 | "method": "post", 184 | "contentType": "application/json", 185 | "headers": { 186 | "Authorization": t 187 | }, 188 | "payload": JSON.stringify({ 189 | "content": txt, 190 | "message_reference": { 191 | "message_id": mid 192 | } 193 | }), 194 | "muteHttpExceptions": true 195 | }; 196 | res = UrlFetchApp.fetch(url, opt); 197 | r = JSON.parse(res) 198 | return r 199 | } 200 | 201 | function deleteMessage(t, cid, mid) { 202 | url = base + "/channels/" + cid + "/messages/" + mid; 203 | opt = { 204 | "method": "delete", 205 | "contentType": "application/json", 206 | "headers": { 207 | "Authorization": t 208 | }, 209 | "muteHttpExceptions": true 210 | }; 211 | return UrlFetchApp.fetch(url, opt); 212 | } 213 | --------------------------------------------------------------------------------