├── config └── config.json ├── index.py ├── README.md ├── messages └── help.txt ├── LICENSE └── fedded.py /config/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "token": "Token_HERE", 3 | "prefix": "+", 4 | "sniper_webhook" : "" 5 | } 6 | -------------------------------------------------------------------------------- /index.py: -------------------------------------------------------------------------------- 1 | import subprocess 2 | import os 3 | 4 | # List of packages to install 5 | packages = [ 6 | "discord.py-self", 7 | "requests", 8 | "pynacl", 9 | "python-dateutil", 10 | "instaloader" 11 | ] 12 | 13 | # Function to install packages 14 | def install_package(package): 15 | try: 16 | print(f"Installing {package}...") 17 | subprocess.check_call([f"pip", "install", package]) 18 | print(f"{package} installed successfully!") 19 | except subprocess.CalledProcessError as e: 20 | print(f"Error installing {package}: {e}") 21 | 22 | # Function to install all packages 23 | def install_all_packages(packages): 24 | for package in packages: 25 | install_package(package) 26 | 27 | # Function to run the fedded.py script 28 | def run_fedded(): 29 | try: 30 | print("Running fedded.py...") 31 | subprocess.check_call(["python", "fedded.py"]) 32 | print("fedded.py executed successfully!") 33 | except subprocess.CalledProcessError as e: 34 | print(f"Error running fedded.py: {e}") 35 | 36 | # Main function 37 | def main(): 38 | # Install all packages 39 | install_all_packages(packages) 40 | 41 | # Run the fedded.py script 42 | run_fedded() 43 | 44 | if __name__ == "__main__": 45 | main() 46 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # FEDDED - A Discord Selfbot 2 | 3 | ### This Selfbot has a total of about 25+ commands to make your life on discord easier. It has a nice and intuitive interface to make it easy to use for everyone, help and explanations for each command, a very complete help command. 4 | 5 | ## Discord Servers 6 | - https://discord.com/invite/nCyKKRAC9u (Support Server) 7 | 8 | ## Disclaimer 9 | 10 | - SelfBot was made for Educational purposes. 11 | - This selfbot is made for Nitro users so if you want emojis in Help message join this [server](https://discord.com/invite/W6JfvA4y66) 12 | __________________________________________________ 13 | - By using this SelfBot, you agree that you hold responsibility and accountability of any consequences caused by your actions. 14 | 15 | ## ( HOW TO SETUP/START ) 16 | 17 | ### For Termux 18 | - add your token to config/config.json 19 | - apt install python3 20 | - pkg install git 21 | - git clone https://github.com/zentir0g/fedded-selfbot 22 | - cd fedded-selfbot 23 | - python index.py 24 | 25 | ### For PC 26 | - Download The ZiP 27 | - Extract the ZIP file 28 | - add your token to config/config.json 29 | - Then Type 'CMD' In The Path Of The Folder 30 | - Then Just Enter The Command: python index.py 31 | 32 | ## ENJOY ! 33 | 34 | ## HOW TO OVERCOME ERROR ? 35 | 36 | To overcome any error or problem or any query you can contact me on discord(z_zx). 37 | 38 | If you get error after entering the command: 'pip install -r requirements.txt' if it displays any error like 'pip module psutils not found' Then just type: pip install "module nane" 39 | 40 | ### TYPE &help ON DISCORD TO SEE FEATURES OF YOU BOT... 41 | 42 | # This Project Is Made By: Harry Uchiha. 43 | -------------------------------------------------------------------------------- /messages/help.txt: -------------------------------------------------------------------------------- 1 | # 🎂 __Fedded Selfbot__ 🎂 2 | `🎁` **+autoreact :** It will toggle on or off the autoreact. 3 | `🎁` **+spam :** It will spams the message according to the given ammount. 4 | `🎁` **+afk :** Sets your AFK to the given reason. 5 | `🎁` **+unafk :** Unsets your AFK to the given reason. 6 | `🎁` **+bal :** Gives you the LTC addy info. 7 | `🎁` **+av :** Shows the avatar of the user. 8 | `🎁` **+banner :** Shows the banner of the user. 9 | `🎁` **+clear ** Delete the messages according to the given ammount. 10 | `🎁` **+hackclear :** Sends a very long empty message. 11 | `🎁` **+vcjoin :** Joins the vc from the panel. 12 | `🎁` **+vcleave :** Leaves the vc from the panel. 13 | `🎁` **+stream :** Sets your status as streaming. 14 | `🎁` **+deleteallchannels :** Delete all the channels. 15 | `🎁` **+deleteallroles :** Delete all the roles. 16 | `🎁` **+clone_channels :**Clone the channels from the old server to the new server. 17 | `🎁` **+clone_roles :**Clone the channels from the old server to the new server. 18 | `🎁` **+phc :** Makes the pornhub comment screenshot. 19 | `🎁` **+iplookup < ip > :** shows the info of the IP. 20 | `🎁` **+math :** Solves the math for you. 21 | `🎁` **+insta :** Shows the info of the instagram account. 22 | `🎁` **+cat :** Sends the random cat image. 23 | `🎁` **checkpromo :** Shows you the info of the promo. 24 | `🎁` **+rizz :** Sends the random pickup line. 25 | `🎁` **+closealldms :** Close all the dms. 26 | `🎁` **+delfriends :** Remove all the friends. 27 | `🎁` **+roast :** Will roast the user to whom message you replied. 28 | `🎁` **+tokencheck :** Gives you the token info. 29 | `🎀` **+react :** Start adding the reaction of the given emoji to all the messages of the mentioned user. 30 | `🎀` **+react_off:** Turn off the auto add reaction command. 31 | 32 | `🍳` **Made by `z_zx` ** 33 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /fedded.py: -------------------------------------------------------------------------------- 1 | import sys 2 | sys.path.insert(0, 'discord.py-self') 3 | import discord 4 | import threading 5 | import requests 6 | import requests 7 | import asyncio 8 | import json 9 | import re 10 | import datetime 11 | import urllib 12 | import pickle 13 | import os 14 | import instaloader 15 | import aiohttp 16 | import datetime 17 | from dateutil import parser 18 | from discord.ext import commands, tasks 19 | from datetime import datetime, timezone 20 | from datetime import datetime 21 | from datetime import datetime, timedelta 22 | 23 | with open('config/config.json') as f: 24 | config = json.load(f) 25 | token = config['token'] 26 | prefix = config['prefix'] 27 | BOT_TOKEN = config['token'] 28 | MAIN_TOKEN = config['token'] 29 | ALT_TOKEN = config['token'] 30 | WEBHOOK_URL = config['sniper_webhook'] 31 | bot = commands.Bot(command_prefix=prefix, self_bot=True) 32 | bot.remove_command('help') 33 | 34 | statuses = [] 35 | current_status = 0 36 | afk_users = {} 37 | afk_reason = None 38 | SPECIFIC_USER_ID = 333014456399560705 39 | status_changing = False 40 | spamming = False 41 | vc_join_tasks = {} 42 | spam_task = None 43 | greeting_settings = {} 44 | fonts_folder = "fonts" 45 | react_mode = False 46 | target_user = None 47 | reaction_emoji = None 48 | fonts = {} 49 | usedcodes = [] 50 | auto_react_enabled = True 51 | status_file = "trash/status_lines.txt" 52 | nitro_sniper = True 53 | onalt = False 54 | sound_notification = False 55 | webhooknotification = True 56 | changing_time = 10 57 | status_tag = discord.Status.online 58 | 59 | def NitroInfo(elapsed, code): 60 | print(f"Elapsed Time: {elapsed} seconds\nNitro Code: {code}") 61 | 62 | def mainHeader(): 63 | headers = { 64 | 'accept': '*/*', 65 | 'accept-language': 'en-US', 66 | 'Content-Type': 'application/json', 67 | 'authorization': token, 68 | 'sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120"', 69 | 'sec-ch-ua-mobile': '?0', 70 | 'sec-ch-ua-platform': '"Windows"', 71 | 'sec-fetch-dest': 'empty', 72 | 'sec-fetch-mode': 'cors', 73 | 'sec-fetch-site': 'same-origin', 74 | 'Content-Type': 'application/json', 75 | 'x-debug-options': 'bugReporterEnabled', 76 | 'x-discord-locale': 'en-US', 77 | 'x-discord-timezone': 'America/Chicago', 78 | 'x-super-properties': 'eyJvcyI6IldpbmRvd3MiLCJicm93c2VyIjoiRGlzY29yZCBDbGllbnQiLCJyZWxlYXNlX2NoYW5uZWwiOiJwdGIiLCJjbGllbnRfdmVyc2lvbiI6IjEuMC4xMDcyIiwib3NfdmVyc2lvbiI6IjEwLjAuMTkwNDQiLCJvc19hcmNoIjoieDY0IiwiYXBwX2FyY2giOiJpYTMyIiwic3lzdGVtX2xvY2FsZSI6ImVuLVVTIiwiYnJvd3Nlcl91c2VyX2FnZW50IjoiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV09XNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIGRpc2NvcmQvMS4wLjEwNzIgQ2hyb21lLzEyMC4wLjYwOTkuMjkxIEVsZWN0cm9uLzI4LjIuMTAgU2FmYXJpLzUzNy4zNiIsImJyb3dzZXJfdmVyc2lvbiI6IjI4LjIuMTAiLCJjbGllbnRfYnVpbGRfbnVtYmVyIjoyOTM5NTksIm5hdGl2ZV9idWlsZF9udW1iZXIiOjQ3Njk3LCJjbGllbnRfZXZlbnRfc291cmNlIjpudWxsLCJkZXNpZ25faWQiOjB9' 79 | } 80 | return headers 81 | 82 | @bot.event 83 | async def on_ready(): 84 | print(f'Logged in as {bot.user.name}') 85 | 86 | @bot.event 87 | async def on_message(message): 88 | # Only add reactions if the auto_react_enabled variable is True 89 | if message.author == bot.user and auto_react_enabled: 90 | reactions = { 91 | 'hii': '👋', 92 | 'happy': '😄', 93 | 'sad': '😢', 94 | 'fix': '🛠️', 95 | 'bruh': '🗿', 96 | 'oof': '🙃', 97 | 'listen': '👂', 98 | 'nvm': '☝️', 99 | 'sahi': '👌', 100 | 'hmm': '🤔', 101 | 'let me check': '✔️', 102 | 'welcome': '🙏', 103 | 'wlc': '🙏', 104 | 'fool': '🤪', 105 | 'nice' : '✨', 106 | 'cool' : '😎', 107 | 'great' : '✨', 108 | 'wait' : '⌛', 109 | 'wtf' : '🖕', 110 | 'ik' : '️☝️', 111 | 'i know' : '☝️', 112 | 'win it' : '🎉', 113 | 'fuck off' : '🖕', 114 | 'nice': '✨', 115 | 'good': '👍', 116 | 'great': '👌', 117 | 'awesome': '🤩', 118 | 'amazing': '👏', 119 | 'excellent': '👌', 120 | 'fantastic': '🌟', 121 | 'superb': '👌', 122 | 'wonderful': '👏', 123 | 'brilliant': '👍', 124 | 'impressive': '👏', 125 | 'outstanding': '🌟', 126 | 'phenomenal': '👌', 127 | 'splendid': '🌟', 128 | 'terrific': '👍', 129 | 'top-notch': '👏', 130 | 'stellar': '⭐', 131 | 'flawless': '👌', 132 | 'exceptional': '🌟', 133 | 'remarkable': '👏', 134 | 'super': '👍', 135 | 'first-rate': '👌', 136 | 'incredible': '👏', 137 | 'marvelous': '🌟', 138 | 'perfect': '💯', 139 | 'no': '❌', 140 | 'nah': '❌', 141 | 'not': '❌', 142 | 'never': '❌', 143 | 'negative': '❌', 144 | 'don\'t': '❌', 145 | 'do not': '❌', 146 | 'cannot': '❌', 147 | 'can\'t': '❌', 148 | 'won\'t': '❌', 149 | 'refuse': '❌', 150 | 'decline': '❌', 151 | 'reject': '❌', 152 | 'denied': '❌', 153 | 'negative': '❌', 154 | 'thanks': '🙏', 155 | 'thank you': '🙏', 156 | 'thx': '🙏', 157 | 'ty': '🙏', 158 | 'appreciate': '🙏', 159 | 'grateful': '🙏', 160 | 'thankful': '🙏', 161 | 'cheers': '🙏', 162 | 'much obliged': '🙏', 163 | 'many thanks': '🙏', 164 | 'thanks a lot': '🙏', 165 | 'thank you very much': '🙏', 166 | 'thank you so much': '🙏', 167 | 'welcome': '🙏', 168 | 'wlc': '🙏', 169 | 'welc': '🙏', 170 | 'hi': '👋', 171 | 'hello': '👋', 172 | 'hey': '👋', 173 | 'greetings': '👋', 174 | 'salutations': '👋', 175 | 'howdy': '👋', 176 | 'hola': '👋', 177 | 'bonjour': '👋', 178 | 'ciao': '👋', 179 | 'namaste': '👋', 180 | 'welcome back': '👋', 181 | 'good to see you': '👋', 182 | 'ok': '👌', 183 | 'yes': '✅', 184 | 'yeah': '👍', 185 | 'yep': '👍', 186 | 'yup': '👍', 187 | 'sure': '👍', 188 | 'absolutely': '👍', 189 | 'definitely': '👍', 190 | 'certainly': '👍', 191 | 'agreed': '👍', 192 | 'nice': '👌', 193 | 'fine': '👌', 194 | 'cool': '😎', 195 | 'love it': '❤️', 196 | 'thumbs up': '👍', 197 | 'clap': '👏', 198 | 'congrats': '🎉', 199 | 'celebrate': '🎉', 200 | 'cheers': '🥂', 201 | 'high five': '🖐️', 202 | 'bye': '👋', 203 | 'goodbye': '👋', 204 | 'farewell': '👋', 205 | 'see you': '👋', 206 | 'see ya': '👋', 207 | 'see you later': '👋', 208 | 'see you soon': '👋', 209 | 'catch you later': '👋', 210 | 'talk to you later': '👋', 211 | 'till next time': '👋', 212 | 'until we meet again': '👋', 213 | 'take care': '👋', 214 | 'have a good one': '👋', 215 | 'have a great day': '👋', 216 | 'have a nice day': '👋', 217 | 'have a wonderful day': '👋', 218 | 'have a fantastic day': '👋', 219 | 'have a lovely day': '👋', 220 | 'have a pleasant day': '👋', 221 | 'goodnight': '🌙', 222 | 'sweet dreams': '🌙💤', 223 | 'adios': '👋', 224 | 'cheerio': '👋', 225 | 'take it easy': '👋', 226 | 'peace out': '✌️', 227 | 'later': '👋', 228 | 'ttyl': '👋', 229 | 'talk to you soon': '👋', 230 | 'until later': '👋', 231 | 'until next time': '👋', 232 | 'so long': '👋', 233 | 'fare thee well': '👋', 234 | 'be well': '👋', 235 | 'lol': '🤣', 236 | 'lmao': '🤣', 237 | 'lmfao': '🤣', 238 | 'haha': '😄', 239 | 'hehe': '🤭', 240 | 'rofl': '🤣', 241 | 'hahaha': '😄', 242 | 'lolol': '🤣', 243 | 'lolz': '🤣', 244 | 'lmfao': '🤣', 245 | 'lmfaoo': '🤣', 246 | 'bahaha': '😄', 247 | 'bwahaha': '😄', 248 | 'hahah': '😄', 249 | 'hahahaha': '😄', 250 | 'hahahah': '😄', 251 | 'hehehe': '🤭', 252 | 'hehehehe': '🤭', 253 | 'roflmao': '🤣', 254 | 'roflmaoo': '🤣', 255 | 'rotfl': '🤣', 256 | 'teehee': '😄', 257 | 'ha': '😄', 258 | 'haha': '😄', 259 | 'hah': '😄', 260 | 'heheh': '🤭', 261 | 'heheheh': '🤭', 262 | 'ahah': '😄', 263 | 'ahahaha': '😄', 264 | 'ahaha': '😄', 265 | 'ahahah': '😄', 266 | 'ahahaha': '😄', 267 | 'maybe': '🤷', 268 | 'perhaps': '🤷', 269 | 'possibly': '🤷', 270 | 'uncertain': '🤷', 271 | 'undecided': '🤷', 272 | 'unsure': '🤷', 273 | 'dunno': '🤷', 274 | 'not sure': '🤷', 275 | 'no idea': '🤷', 276 | 'no clue': '🤷', 277 | 'i don\'t know': '🤷', 278 | 'idk': '🤷', 279 | 'i have no idea': '🤷', 280 | 'i\'m unsure': '🤷', 281 | 'who knows': '🤷', 282 | 'beats me': '🤷', 283 | 'can\'t say': '🤷', 284 | 'hard to say': '🤷', 285 | 'it\'s up in the air': '🤷', 286 | 'i\'m not certain': '🤷', 287 | 'i\'m not sure': '🤷', 288 | 'i\'m undecided': '🤷', 289 | 'i\'m not convinced': '🤷', 290 | 'i\'m on the fence': '🤷', 291 | 'how are you': '👋', 292 | 'how\'s it going': '🤔', 293 | 'hru': '🤷', 294 | 'how are u': '👋', 295 | 'how are ya': '🤷', 296 | 'how\'s life': '🌟', 297 | 'how have you been': '🤔', 298 | 'what\'s up': '👋', 299 | 'what\'s new': '🌟', 300 | 'how\'s everything': '🌟', 301 | 'how do you do': '👋', 302 | 'are you okay': '🤷', 303 | 'r u ok': '🤷', 304 | 'how\'s your day': '🌞', 305 | 'how\'s your day going': '🌞', 306 | 'how\'s your day been': '🌞', 307 | 'how\'s your day so far': '🌞', 308 | 'how\'s your week': '📆', 309 | 'how\'s your weekend': '🌴', 310 | 'how are things': '🤷', 311 | 'how\'s your health': '🌡️', 312 | 'how\'s your mood': '😊', 313 | 'how\'s your spirit': '✨', 314 | 'nvm': '🙅', 315 | 'never mind': '🙅', 316 | 'forget it': '🙅', 317 | 'ignore': '🙈', 318 | 'disregard': '🙉', 319 | 'skip': '⏭️', 320 | 'pass': '⏭️', 321 | 'not important': '🤷', 322 | 'not relevant': '🤷‍', 323 | 'not interested': '🤷‍', 324 | 'don\'t care': '🤷‍', 325 | 'let it go': '🧘', 326 | 'nothing': '😐', 327 | 'nope': '🙅‍', 328 | 'ignore me': '🙈', 329 | 'disregard me': '🙉', 330 | 'not important to me': '🤷‍', 331 | 'not relevant to me': '🤷‍', 332 | 'I don\'t care': '🤷', 333 | 'let me go': '🧘', 334 | 'don\'t bother': '🙅', 335 | 'bruh': '🗿', 336 | 'oof': '🙃', 337 | 'yikes': '😬', 338 | 'facepalm': '🤦', 339 | 'disappointed': '😞', 340 | 'disaster': '💥', 341 | 'fail': '👎', 342 | 'epic fail': '🤦', 343 | 'disaster': '😱', 344 | 'tragic': '😢', 345 | 'awful': '😖', 346 | 'terrible': '😫', 347 | 'horrible': '😣', 348 | 'cringe': '🤢', 349 | 'oh no': '😱', 350 | 'disappointing': '😕', 351 | 'regrettable': '😔', 352 | 'shocking': '😳', 353 | 'unexpected': '😮', 354 | 'unbelievable': '🤯', 355 | 'chaos': '🌪️', 356 | 'nightmare': '🌙', 357 | 'mess': '🧹', 358 | 'botch': '🤪', 359 | 'sloppy': '🤷', 360 | 'disorganized': '🌀', 361 | 'unprofessional': '🤦', 362 | 363 | } 364 | 365 | for word, emoji in reactions.items(): 366 | if message.content.lower() == word: 367 | await message.add_reaction(emoji) 368 | 369 | if message.content.endswith('?'): 370 | await message.add_reaction('❓') 371 | 372 | global react_mode, target_user, reaction_emoji 373 | 374 | await bot.process_commands(message) # Ensure commands are processed 375 | 376 | if react_mode and target_user and reaction_emoji: 377 | if message.author == target_user: 378 | try: 379 | await message.add_reaction(reaction_emoji) 380 | except Exception as e: 381 | print(f"Failed to react: {e}") 382 | 383 | if not message.author.bot: 384 | if isinstance(message.channel, discord.DMChannel): 385 | if afk_reason is not None: 386 | reply_message = f"Sorry, I am currently AFK with the reason: {afk_reason}." 387 | await message.author.send(reply_message) 388 | else: 389 | if bot.user in message.mentions: 390 | if afk_reason is not None: 391 | reply_message = f"Sorry, **{message.author.name}**, I am currently AFK with the reason: {afk_reason}." 392 | await message.channel.send(reply_message) 393 | 394 | if ( 395 | "discord.gift/" in message.content 396 | or "discord.com/gifts/" in message.content 397 | or "discordapp.com/gifts/" in message.content 398 | ): 399 | if nitro_sniper: 400 | start = datetime.now() 401 | if "discord.gift/" in message.content: 402 | code = re.findall(r"discord[.]gift/(\w+)", message.content) 403 | if "discordapp.com/gifts/" in message.content: 404 | code = re.findall(r"discordapp[.]com/gifts/(\w+)", message.content) 405 | if "discord.com/gifts/" in message.content: 406 | code = re.findall(r"discord[.]com/gifts/(\w+)", message.content) 407 | for code in code: 408 | if len(code) == 16 or len(code) == 24: 409 | if code not in usedcodes: 410 | usedcodes.append(code) 411 | headers = {"Authorization": ALT_TOKEN if onalt else MAIN_TOKEN} 412 | r = requests.post( 413 | f"https://discordapp.com/api/v6/entitlements/gift-codes/{code}/redeem", 414 | headers=headers, 415 | ).text 416 | elapsed = datetime.now() - start 417 | elapsed = f"{elapsed.seconds}.{elapsed.microseconds}" 418 | time = datetime.now().strftime("%H:%M") 419 | if "This gift has been redeemed already." in r: 420 | print(f"\n{time} - Nitro is Already Redeemed") 421 | NitroInfo(elapsed, code) 422 | elif "subscription_plan" in r: 423 | print(f"\n{time} - Nitro Successfully Claimed!") 424 | NitroInfo(elapsed, code) 425 | if webhooknotification: 426 | message_content = ( 427 | "# ??__Fedded Selfbot__??\n" 428 | "`??` **Congrats!!** your nitro GIFT LINK has been claimed.\n" 429 | "||@everyone|| ||@here||" 430 | ) 431 | data = { 432 | "content": message_content 433 | } 434 | requests.post(WEBHOOK_URL, json=data) 435 | elif "Unknown Gift Code" in r: 436 | print(f"\n{time} - Unknown Nitro Gift Code") 437 | NitroInfo(elapsed, code) 438 | 439 | await bot.process_commands(message) 440 | 441 | @bot.command() 442 | async def help(ctx): 443 | await ctx.message.delete() 444 | with open('messages/help.txt', 'r', encoding='utf-8') as file: 445 | help_message = file.read() 446 | await ctx.send(help_message) 447 | 448 | @bot.command() 449 | async def autoreact(ctx, option: str): 450 | await ctx.message.delete() 451 | global auto_react_enabled 452 | if option.lower() == "on": 453 | auto_react_enabled = True 454 | await ctx.send("# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **Auto-reactions are now enabled.**") 455 | elif option.lower() == "off": 456 | auto_react_enabled = False 457 | await ctx.send("# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **Auto-reactions are now disabled.**") 458 | else: 459 | await ctx.send("# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **Invalid option. Use +autoreact on or +autoreact off.**") 460 | 461 | @bot.command() 462 | async def spam(ctx, amount: int, *, message: str): 463 | await ctx.message.delete() 464 | for _ in range(amount): 465 | await ctx.send(message) 466 | 467 | @bot.command() 468 | async def afk(ctx, *, reason): 469 | await ctx.message.delete() 470 | global afk_reason 471 | afk_reason = reason 472 | message = f"# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **I am now AFK with the reason: {reason}.**" 473 | await ctx.send(message) 474 | 475 | @bot.command() 476 | async def unafk(ctx): 477 | await ctx.message.delete() 478 | global afk_reason 479 | afk_reason = None 480 | message = "# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **I am no longer AFK.**" 481 | await ctx.send(message) 482 | 483 | @bot.command(aliases=['bal', 'ltcbal']) 484 | async def getbal(ctx, ltcaddress): 485 | await ctx.message.delete() 486 | response = requests.get(f'https://api.blockcypher.com/v1/ltc/main/addrs/{ltcaddress}/balance') 487 | if response.status_code == 200: 488 | data = response.json() 489 | balance = data['balance'] / 10**8 490 | total_balance = data['total_received'] / 10**8 491 | unconfirmed_balance = data['unconfirmed_balance'] / 10**8 492 | else: 493 | await ctx.send("Failed to retrieve balance. Please check the Litecoin address.") 494 | return 495 | cg_response = requests.get('https://api.coingecko.com/api/v3/simple/price?ids=litecoin&vs_currencies=usd') 496 | if cg_response.status_code == 200: 497 | usd_price = cg_response.json()['litecoin']['usd'] 498 | else: 499 | await ctx.send("Failed to retrieve the current price of Litecoin.") 500 | return 501 | usd_balance = balance * usd_price 502 | usd_total_balance = total_balance * usd_price 503 | usd_unconfirmed_balance = unconfirmed_balance * usd_price 504 | message = f"# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **LTC Address: `{ltcaddress}`**\n" 505 | message += f"`🔏` Current LTC: **${usd_balance:.2f} USD**\n" 506 | message += f"`🔏` Total LTC Received: **${usd_total_balance:.2f} USD**\n" 507 | message += f"`🔏` Unconfirmed LTC: **${usd_unconfirmed_balance:.2f} USD**" 508 | response_message = await ctx.send(message) 509 | await asyncio.sleep(60) 510 | await response_message.delete() 511 | 512 | @bot.command(aliases=['av', 'ava']) 513 | async def avatar(ctx, user: discord.User = None): 514 | await ctx.message.delete() 515 | member = user or ctx.author 516 | 517 | avatar_url = member.display_avatar.url 518 | await ctx.send(f"# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **Here is the [avatar]({avatar_url}) of {member.mention} **") 519 | 520 | @bot.command(name='banner') 521 | async def fetch_user_banner(ctx, user: discord.User = None): 522 | await ctx.message.delete() 523 | member = user or ctx.author 524 | uid = member.id 525 | url = f"https://discord.com/api/v8/users/{uid}" 526 | headers = mainHeader() 527 | 528 | response = requests.get(url, headers=headers) 529 | 530 | banner = 'https://cdn.discordapp.com/attachments/829722741288337428/834016013678673950/banner_invisible.gif' # invisible image 531 | 532 | if response.status_code != 404: 533 | data = response.json() 534 | receive = data.get('banner', None) 535 | 536 | if receive is not None: 537 | format = 'png' 538 | if receive.startswith('a_'): 539 | format = 'gif' 540 | 541 | banner = f"https://cdn.discordapp.com/banners/{uid}/{receive}.{format}?size=1024" # Adjust the size here 542 | 543 | await ctx.send(f"# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **Here is the [banner]({banner}) of {member.mention} **") 544 | 545 | @bot.command() 546 | async def clear(ctx, amount: int): 547 | def is_bot_message(message): 548 | return message.author == bot.user 549 | 550 | messages = [] 551 | if isinstance(ctx.channel, discord.TextChannel): 552 | # Collect bot messages up to the specified amount 553 | async for message in ctx.channel.history(limit=None): 554 | if is_bot_message(message): 555 | messages.append(message) 556 | if len(messages) >= amount: 557 | break 558 | 559 | # Delete the messages and handle any errors 560 | for message in messages: 561 | try: 562 | await message.delete() 563 | except Exception as e: 564 | print(f"Could not delete message {message.id}: {e}") 565 | 566 | elif isinstance(ctx.channel, discord.DMChannel): 567 | # Collect bot messages up to the specified amount in a DM 568 | async for message in ctx.channel.history(limit=None): 569 | if is_bot_message(message): 570 | messages.append(message) 571 | if len(messages) >= amount: 572 | break 573 | 574 | # Delete messages one by one (bulk delete isn't available for DMs) 575 | for message in messages: 576 | try: 577 | await message.delete() 578 | except Exception as e: 579 | print(f"Could not delete message {message.id}: {e}") 580 | 581 | 582 | @bot.command() 583 | async def hackclear(ctx): 584 | await ctx.send("⠀" + "\n"*1998 + "⠀") 585 | await ctx.message.delete() 586 | 587 | @bot.command() 588 | async def vcjoin(ctx, channel_id: int, mute: str, deafen: str, camera: str): 589 | await ctx.message.delete() 590 | 591 | # Convert input strings to boolean values 592 | mute = mute.lower() == 'y' 593 | deafen = deafen.lower() == 'y' 594 | camera = camera.lower() == 'y' 595 | 596 | # Get the voice channel by ID 597 | channel = ctx.guild.get_channel(channel_id) 598 | 599 | if channel is None or not isinstance(channel, discord.VoiceChannel): 600 | await ctx.send('# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **Invalid voice channel ID.**') 601 | return 602 | 603 | # Join the voice channel 604 | try: 605 | voice_client = await channel.connect() 606 | await voice_client.guild.change_voice_state( 607 | channel=channel, 608 | self_mute=mute, 609 | self_deaf=deafen, 610 | self_video=camera 611 | ) 612 | await ctx.send(f'# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **Joined voice channel `{channel.name}` with mute={mute}, deafen={deafen}, camera={camera}.**') 613 | except discord.Forbidden: 614 | await ctx.send('# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **I do not have permission to join this voice channel.**') 615 | except discord.ClientException: 616 | await ctx.send('# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **Already connected to a voice channel.**') 617 | except Exception as e: 618 | await ctx.send(f'# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **An error occurred: {e}**') 619 | 620 | @bot.command() 621 | async def stream(ctx, *, text): 622 | await ctx.message.delete() 623 | activity = discord.Streaming(name=text, url='https://www.twitch.tv/devilharisyt') 624 | await bot.change_presence(activity=activity) 625 | await ctx.send(f'# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **Status Updated to streaming**\n`🔏` **Text :** {text}') 626 | 627 | @bot.command() 628 | async def vcleave(ctx): 629 | await ctx.message.delete() 630 | try: 631 | voice_client = ctx.voice_client 632 | if voice_client: 633 | await voice_client.disconnect() 634 | await ctx.send("# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **Successfully disconnected from VC.**") 635 | else: 636 | await ctx.send("# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **I'm not currently in a VC.**") 637 | except Exception as e: 638 | await ctx.send(f"# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **An error occurred: {e}**") 639 | 640 | @bot.command() 641 | async def deleteallchannels(ctx): 642 | await ctx.message.delete() 643 | channel_ids = [] 644 | 645 | TEMP_DIR = "trash" 646 | TEMP_FILE = os.path.join(TEMP_DIR, "channel_ids.pkl") 647 | 648 | # Create the trash folder if it doesn't exist 649 | if not os.path.exists(TEMP_DIR): 650 | os.makedirs(TEMP_DIR) 651 | 652 | # Collect channel IDs from the server 653 | for guild in bot.guilds: 654 | if guild.id == ctx.guild.id: # Ensure we're scraping the channels from the current server 655 | for channel in guild.channels: 656 | channel_ids.append(channel.id) 657 | 658 | # Save channel IDs to the temporary file using pickle 659 | with open(TEMP_FILE, 'wb') as f: 660 | pickle.dump(channel_ids, f) 661 | 662 | # Create a thread for each channel and start it 663 | for channel_id in channel_ids: 664 | thread = threading.Thread(target=delete_channel, args=(channel_id,)) 665 | thread.start() 666 | 667 | await ctx.send("# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **All channels are being deleted.**") 668 | 669 | def delete_channel(channel_id): 670 | url = f"https://canary.discord.com/api/v9/channels/{channel_id}" 671 | 672 | headers = { 673 | "accept": "*/*", 674 | "accept-language": "en-US", 675 | "authorization": token, 676 | "priority": "u=1, i", 677 | "sec-ch-ua": "\"Not-A.Brand\";v=\"99\", \"Chromium\";v=\"124\"", 678 | "sec-ch-ua-mobile": "?0", 679 | "sec-ch-ua-platform": "\"Windows\"", 680 | "sec-fetch-dest": "empty", 681 | "sec-fetch-mode": "cors", 682 | "sec-fetch-site": "same-origin", 683 | "x-debug-options": "bugReporterEnabled", 684 | "x-discord-locale": "en-US", 685 | "x-discord-timezone": "America/Chicago", 686 | "x-super-properties": "eyJvcyI6IldpbmRvd3MiLCJicm93c2VyIjoiRGlzY29yZCBDbGllbnQiLCJyZWxlYXNlX2NoYW5uZWwiOiJjYW5hcnkiLCJjbGllbnRfdmVyc2lvbiI6IjEuMC4zNzMiLCJvc192ZXJzaW9uIjoiMTAuMC4xOTA0NCIsIm9zX2FyY2giOiJ4NjQiLCJhcHBfYXJjaCI6Ing2NCIsInN5c3RlbV9sb2NhbGUiOiJlbi1VUyIsImJyb3dzZXJfdXNlcl9hZ2VudCI6Ik1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIGRpc2NvcmQvMS4wLjM3MyBDaHJvbWUvMTI0LjAuNjM2Ny4yMDcgRWxlY3Ryb24vMzAuMC42IFNhZmFyaS81MzcuMzYiLCJicm93c2VyX3ZlcnNpb24iOiIzMC4wLjYiLCJjbGllbnRfYnVpbGRfbnVtYmVyIjozMDA3MDcsIm5hdGl2ZV9idWlsZF9udW1iZXIiOjQ4NjAyLCJjbGllbnRfZXZlbnRfc291cmNlIjpudWxsLCJkZXNpZ25faWQiOjB9" 687 | } 688 | 689 | response = requests.delete(url, headers=headers) 690 | 691 | if response.status_code == 204: 692 | print(f"Closed channel with ID {channel_id}") 693 | else: 694 | print(f"Failed to close channel with ID {channel_id}: {response.status_code} {response.text}") 695 | 696 | @bot.command() 697 | async def deleteallroles(ctx): 698 | await ctx.message.delete() 699 | server = ctx.guild 700 | 701 | if server is None: 702 | await ctx.send("# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **The server does not exist.**") 703 | return 704 | 705 | roles = server.roles 706 | 707 | for role in roles: 708 | if role.name != "@everyone": # Skip the @everyone role 709 | try: 710 | await role.delete(reason="Deleting all roles") 711 | except Exception as e: 712 | print(f"# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **Failed to delete role {role.name}: {e}**") 713 | 714 | await ctx.send("# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **All roles have been deleted successfully!**") 715 | 716 | @bot.command() 717 | async def clone_channels(ctx, old_server_id: int, new_server_id: int): 718 | await ctx.message.delete() 719 | old_server = bot.get_guild(old_server_id) 720 | new_server = bot.get_guild(new_server_id) 721 | 722 | if not old_server: 723 | await ctx.send('# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **Old server not found.**') 724 | return 725 | if not new_server: 726 | await ctx.send('# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **New server not found.**') 727 | return 728 | category_map = {} 729 | 730 | clone_messages = [] # List to store clone messages 731 | 732 | for old_category in old_server.categories: 733 | new_category = await new_server.create_category_channel(name=old_category.name, overwrites=old_category.overwrites) 734 | category_map[old_category.id] = new_category 735 | 736 | for old_text_channel in old_category.text_channels: 737 | new_text_channel = await new_category.create_text_channel(name=old_text_channel.name, overwrites=old_text_channel.overwrites) 738 | clone_messages.append(f'Text channel cloned: {old_text_channel.name} -> {new_text_channel.name} in category: {old_category.name} -> {new_category.name}') 739 | 740 | for old_voice_channel in old_category.voice_channels: 741 | new_voice_channel = await new_category.create_voice_channel(name=old_voice_channel.name, overwrites=old_voice_channel.overwrites) 742 | clone_messages.append(f'Voice channel cloned: {old_voice_channel.name} -> {new_voice_channel.name} in category: {old_category.name} -> {new_category.name}') 743 | 744 | for old_channel in old_server.channels: 745 | if isinstance(old_channel, (discord.TextChannel, discord.VoiceChannel)) and old_channel.category is None: 746 | if isinstance(old_channel, discord.TextChannel): 747 | new_channel = await new_server.create_text_channel(name=old_channel.name, overwrites=old_channel.overwrites) 748 | clone_messages.append(f'Text channel cloned: {old_channel.name} (No Category) -> {new_channel.name}') 749 | elif isinstance(old_channel, discord.VoiceChannel): 750 | new_channel = await new_server.create_voice_channel(name=old_channel.name, overwrites=old_channel.overwrites) 751 | clone_messages.append(f'Voice channel cloned: {old_channel.name} (No Category) -> {new_channel.name}') 752 | 753 | # Print all clone messages in console 754 | for message in clone_messages: 755 | print(message) 756 | 757 | # Send one final message indicating channels are cloned 758 | await ctx.send("# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **Channels cloned successfully!**") 759 | 760 | # 5. Clone Roles 761 | @bot.command() 762 | async def clone_roles(ctx, old_server_id: int, new_server_id: int): 763 | await ctx.message.delete() 764 | old_server = bot.get_guild(old_server_id) 765 | new_server = bot.get_guild(new_server_id) 766 | 767 | if old_server is None: 768 | await ctx.send("# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **The old server does not exist.**") 769 | return 770 | 771 | if new_server is None: 772 | await ctx.send("# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **The new server does not exist.**") 773 | return 774 | 775 | old_roles = old_server.roles 776 | 777 | role_map = {} 778 | 779 | clone_messages = [] # List to store clone messages 780 | 781 | for role in reversed(old_roles): # Iterate in reverse order 782 | new_role = await new_server.create_role(name=role.name, color=role.color, hoist=role.hoist, 783 | mentionable=role.mentionable, permissions=role.permissions, 784 | reason="Cloning roles") 785 | role_map[role.id] = new_role 786 | clone_messages.append(f'Role cloned: {role.name} -> {new_role.name}') 787 | print(f'Role cloned: {role.name} -> {new_role.name}') 788 | 789 | for member in old_server.members: 790 | member_roles = member.roles 791 | new_member = new_server.get_member(member.id) 792 | if new_member is not None: 793 | for role in reversed(member_roles): # Iterate in reverse order 794 | if role.id in role_map: 795 | new_role = role_map[role.id] 796 | await new_member.add_roles(new_role) 797 | 798 | # Send one final message indicating roles are cloned 799 | await ctx.send("# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **Roles have been cloned successfully!**") 800 | 801 | # Print all clone messages in console 802 | for message in clone_messages: 803 | print(message) 804 | 805 | @bot.command(aliases=["pornhubcomment", 'phc']) 806 | async def phcomment(ctx, user: discord.Member = None, *, args=None): 807 | await ctx.message.delete() 808 | 809 | if user is None or args is None: 810 | await ctx.send("# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **Missing parameters.**") 811 | return 812 | 813 | encoded_args = urllib.parse.quote(args) 814 | 815 | endpoint = f"https://nekobot.xyz/api/imagegen?type=phcomment&text={encoded_args}&username={user.display_name}&image={user.avatar.url}" 816 | 817 | r = requests.get(endpoint) 818 | res = r.json() 819 | 820 | await ctx.send(res["message"]) # Directly send the URL 821 | 822 | @bot.command() 823 | async def iplookup(ctx, ip): 824 | await ctx.message.delete() 825 | api_key = 'a91c8e0d5897462581c0c923ada079e5' 826 | api_url = f'https://api.ipgeolocation.io/ipgeo?apiKey={api_key}&ip={ip}' 827 | 828 | response = requests.get(api_url) 829 | data = response.json() 830 | 831 | if 'country_name' in data: 832 | country = data['country_name'] 833 | city = data['city'] 834 | isp = data['isp'] 835 | current_time_unix = data['time_zone']['current_time_unix'] 836 | 837 | current_time_formatted = f"" 838 | 839 | message = f"# 🎈 __Fedded Selfbot__ 🎈\n" 840 | message += f"`🔏` **IP Lookup Results for `{ip}`**\n" 841 | message += f"`🔏` **Country**: {country}\n" 842 | message += f"`🔏` **City**: {city}\n" 843 | message += f"`🔏` **ISP**: {isp}\n" 844 | message += f"`🔏` **Current Time**: {current_time_formatted}\n" 845 | 846 | await ctx.send(message) 847 | else: 848 | await ctx.send("Invalid IP address or an error occurred during the lookup.") 849 | 850 | @bot.command() 851 | async def math(ctx, *, expression): 852 | await ctx.message.delete() 853 | try: 854 | result = eval(expression) 855 | await ctx.send(f'# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **Result: `{result}`**') 856 | except: 857 | await ctx.send('# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **Invalid expression.**') 858 | 859 | L = instaloader.Instaloader() 860 | 861 | @bot.command() 862 | async def insta(ctx, username: str): 863 | await ctx.message.delete() 864 | try: 865 | # Load the Instagram profile 866 | profile = instaloader.Profile.from_username(L.context, username) 867 | 868 | # Prepare the response with profile details in the specified format 869 | response = ( 870 | "# 🎈 __Fedded Selfbot__ 🎈\n" 871 | f"`🔏` **Username:** {profile.username}\n" 872 | f"`🔏` **Full Name:** {profile.full_name}\n" 873 | f"`🔏` **Followers:** {profile.followers}\n" 874 | f"`🔏` **Following:** {profile.followees}\n" 875 | f"`🔏` **Number of Posts:** {profile.mediacount}\n" 876 | f"`🔏` **Profile Picture URL:** [Click here for link]({profile.profile_pic_url})\n" 877 | f"`🔏` **Bio:** {profile.biography}\n" 878 | ) 879 | except instaloader.exceptions.ProfileNotExistsException: 880 | response = f"Profile '{username}' does not exist." 881 | except Exception as e: 882 | response = f"An error occurred: {str(e)}" 883 | 884 | await ctx.send(response) 885 | 886 | @bot.command() 887 | async def cat(ctx): 888 | await ctx.message.delete() 889 | response = requests.get('https://api.thecatapi.com/v1/images/search') 890 | if response.status_code == 200: 891 | data = response.json() 892 | if data: 893 | cat_image_url = data[0]['url'] 894 | await ctx.send(cat_image_url) 895 | else: 896 | await ctx.send('# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **Could not retrieve a cat image.**') 897 | else: 898 | await ctx.send('# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **Failed to fetch cat image.**') 899 | 900 | def extract_promo_code(promo_link): 901 | return promo_link.split('/')[-1] 902 | 903 | # Command to check the promo code status 904 | @bot.command() 905 | async def checkpromo(ctx, promo_link: str): 906 | async with aiohttp.ClientSession() as session: 907 | promo_code = extract_promo_code(promo_link) 908 | url = f'https://ptb.discord.com/api/v10/entitlements/gift-codes/{promo_code}' 909 | 910 | async with session.get(url) as response: 911 | if response.status in [200, 201, 204]: 912 | data = await response.json() 913 | 914 | # Check if the promo is already claimed 915 | if data["uses"] == data["max_uses"]: 916 | await ctx.send(f"# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **Code :** `{promo_code}`\n`🔏` **Valid :** No") 917 | else: 918 | # Extract expiration and other details 919 | try: 920 | now = datetime.datetime.utcnow() 921 | exp_at = data["expires_at"].split(".")[0] 922 | parsed = parser.parse(exp_at) 923 | remaining_time = parsed - now 924 | days_left = remaining_time.days 925 | duration = data["subscription_plan"]["name"] if "subscription_plan" in data else "Unknown Duration" 926 | except Exception as e: 927 | print(e) 928 | days_left = "Failed To Parse" 929 | duration = "Unknown" 930 | 931 | # Send the result 932 | await ctx.send(f"# 🎈 __Fedded Selfbot__ 🎈\n" 933 | f"`🔏` **Code :** `{promo_code}`\n" 934 | f"`🔏` **Valid :** Yes\n" 935 | f"`🔏` **Expires in :** {days_left} days\n") 936 | elif response.status == 429: 937 | retry_after = response.headers.get("retry-after", 2) 938 | await ctx.send(f"Rate limited for {retry_after} seconds, please try again later.") 939 | else: 940 | await ctx.send(f"# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **Code :** `{promo_code}`\n`🔏` **Valid :** No") 941 | 942 | @bot.command() 943 | async def rizz(ctx, user: discord.User): 944 | await ctx.message.delete() 945 | async with aiohttp.ClientSession() as session: 946 | async with session.get('https://rizzapi.vercel.app/random') as response: 947 | if response.status == 200: 948 | data = await response.json() 949 | pickup_line = data.get("text", "Couldn't fetch a pickup line.") 950 | await ctx.send(f'{user.mention} {pickup_line}') 951 | else: 952 | await ctx.send(f'# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **Sorry, {ctx.author.mention}, I couldn\'t fetch a pickup line.**') 953 | 954 | @bot.command() 955 | async def closealldms(ctx): 956 | await ctx.message.delete() 957 | dm_user_ids = [] 958 | 959 | TEMP_DIR = "trash" 960 | TEMP_FILE = os.path.join(TEMP_DIR, "dm_user_ids.pkl") # Use .pkl extension for pickle files 961 | 962 | # Create the trash folder if it doesn't exist 963 | if not os.path.exists(TEMP_DIR): 964 | os.makedirs(TEMP_DIR) 965 | 966 | # Collect user IDs from DM channels 967 | for dm in bot.private_channels: 968 | if isinstance(dm, discord.DMChannel): 969 | dm_user_ids.append(dm.id) 970 | 971 | # Save user IDs to the temporary file using pickle 972 | with open(TEMP_FILE, 'wb') as f: 973 | pickle.dump(dm_user_ids, f) 974 | 975 | # Create a thread for each DM channel and start it 976 | for channel_id in dm_user_ids: 977 | thread = threading.Thread(target=close_dm, args=(channel_id,)) 978 | thread.start() 979 | 980 | await ctx.send("# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **All DMs are being closed.**") 981 | 982 | def close_dm(channel_id): 983 | # URL for closing the DM channel 984 | url = f"https://ptb.discord.com/api/v9/channels/{channel_id}?silent=false" 985 | 986 | # Use the provided headers 987 | headers = mainHeader() 988 | 989 | response = requests.delete(url, headers=headers) 990 | 991 | if response.status_code == 204: 992 | print(f"Closed DM with channel ID {channel_id}") 993 | else: 994 | print(f"Failed to close DM with channel ID {channel_id}: {response.status_code} {response.text}") 995 | 996 | def remove_friend(user_id): 997 | url = f"https://canary.discord.com/api/v9/users/@me/relationships/{user_id}" 998 | response = requests.delete(url, headers=mainHeader()) 999 | if response.status_code == 204: 1000 | print(f"Removed friend {user_id}") 1001 | else: 1002 | print(f"Failed to remove friend {user_id}, status code: {response.status_code}") 1003 | 1004 | async def get_friends(): 1005 | relationships = await bot.http.get_relationships() 1006 | return [relationship['id'] for relationship in relationships if relationship['type'] == 1] 1007 | 1008 | @bot.command() 1009 | async def delfriends(ctx): 1010 | await ctx.message.delete() 1011 | 1012 | while True: 1013 | friend_ids = await get_friends() 1014 | if not friend_ids: 1015 | break 1016 | 1017 | # Save the friend IDs to a file using pickle 1018 | with open('trash/friend_ids.pkl', 'wb') as f: 1019 | pickle.dump(friend_ids, f) 1020 | 1021 | threads = [] 1022 | for friend_id in friend_ids: 1023 | thread = threading.Thread(target=remove_friend, args=(friend_id,)) 1024 | threads.append(thread) 1025 | 1026 | # Start all threads 1027 | for thread in threads: 1028 | thread.start() 1029 | 1030 | # Wait for all threads to complete 1031 | for thread in threads: 1032 | thread.join() 1033 | 1034 | time.sleep(2) # Adding a short delay between each check 1035 | 1036 | total_friends = len(friend_ids) 1037 | await ctx.send(f"# 🎈 __Fedded Selfbot__ 🎈\n`🔏` **All Friends Have Been Removed**") 1038 | 1039 | @bot.command() 1040 | async def roast(ctx): 1041 | # Check if the message is a reply 1042 | if ctx.message.reference is None: 1043 | await ctx.send("You need to reply to a message to use this command.") 1044 | return 1045 | 1046 | # Get the message being replied to 1047 | reply_to_message = await ctx.channel.fetch_message(ctx.message.reference.message_id) 1048 | message_content = reply_to_message.content 1049 | 1050 | # Prepare the payload for the API request 1051 | payload = { 1052 | "userMessage": { 1053 | "role": "user", 1054 | "content": message_content 1055 | }, 1056 | "history": [ 1057 | { 1058 | "role": "assistant", 1059 | "content": "Hello there. I'm here to roast you." 1060 | } 1061 | ], 1062 | "style": "default" 1063 | } 1064 | 1065 | # Perform the API request 1066 | response = requests.post( 1067 | "https://www.roastedby.ai/api/generate", 1068 | headers={ 1069 | "accept": "*/*", 1070 | "accept-language": "en-US,en;q=0.9", 1071 | "content-type": "application/json", 1072 | "priority": "u=1, i", 1073 | "sec-ch-ua": "\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"Google Chrome\";v=\"126\"", 1074 | "sec-ch-ua-mobile": "?0", 1075 | "sec-ch-ua-platform": "\"Windows\"", 1076 | "sec-fetch-dest": "empty", 1077 | "sec-fetch-mode": "cors", 1078 | "sec-fetch-site": "same-origin" 1079 | }, 1080 | json=payload 1081 | ) 1082 | 1083 | # Extract the response content 1084 | try: 1085 | response_data = response.json() 1086 | roast_response = response_data.get('content', 'No response from the API.') 1087 | except requests.exceptions.JSONDecodeError: 1088 | roast_response = 'Failed to decode the API response.' 1089 | except Exception as e: 1090 | roast_response = f"Error processing the response: {str(e)}" 1091 | 1092 | # Send the response as a message 1093 | await ctx.message.edit(roast_response) 1094 | 1095 | def get_token_info(token): 1096 | headers = { 1097 | 'Authorization': token, 1098 | 'Content-Type': 'application/json' 1099 | } 1100 | 1101 | # API call to check the token 1102 | res = requests.get('https://discordapp.com/api/v6/users/@me', headers=headers) 1103 | 1104 | if res.status_code == 200: 1105 | res_json = res.json() 1106 | 1107 | user_name = f'{res_json["username"]}#{res_json["discriminator"]}' 1108 | user_id = res_json['id'] 1109 | phone_number = res_json.get('phone', 'None') 1110 | email = res_json.get('email', 'N/A') 1111 | mfa_enabled = res_json.get('mfa_enabled', False) 1112 | flags = res_json.get('flags', 'N/A') 1113 | locale = res_json.get('locale', 'N/A') 1114 | verified = res_json.get('verified', False) 1115 | 1116 | # Calculate account creation date from user ID 1117 | timestamp = ((int(user_id) >> 22) + 1420070400000) / 1000 1118 | creation_date = datetime.fromtimestamp(timestamp, timezone.utc).strftime('%d-%m-%Y %H:%M:%S UTC') 1119 | 1120 | # Get detailed payment methods info 1121 | billing_info = [] 1122 | payment_sources = requests.get('https://discordapp.com/api/v6/users/@me/billing/payment-sources', headers=headers).json() 1123 | 1124 | for source in payment_sources: 1125 | if source['type'] == 1: # Credit Card 1126 | brand = source['brand'].capitalize() 1127 | last_4 = source['last_4'] 1128 | expires = f"{source['expires_month']:02d}/{source['expires_year']}" 1129 | address = f"{source['billing_address']['line_1']}, {source['billing_address']['city']}, {source['billing_address']['postal_code']}, {source['billing_address']['country']}" 1130 | billing_info.append(f"💳 **Credit Card**\nBrand: {brand}\nLast 4 Digits: {last_4}\nExpires: {expires}\nAddress: {address}") 1131 | elif source['type'] == 2: # PayPal 1132 | billing_info.append(f"💰 **PayPal**\nEmail: {source['email']}") 1133 | 1134 | billing_info_text = "\n\n".join(billing_info) if billing_info else "No payment methods linked." 1135 | 1136 | # Return all the information in plain text format 1137 | return ( 1138 | f"# 🎈 __Fedded Selfbot__ 🎈\n`👤` **Username**: {user_name}\n" 1139 | f"`🆔` **User ID**: {user_id}\n" 1140 | f"`📅` **Creation Date**: {creation_date}\n" 1141 | f"`📱` **Phone Number**: {phone_number}\n" 1142 | f"`✉️` **Email**: {email}\n" 1143 | f"`🔒` **MFA Enabled**: {mfa_enabled}\n" 1144 | f"`🏳️` **Flags**: {flags}\n" 1145 | f"`🌐` **Locale**: {locale}\n" 1146 | f"`✅` **Email Verified**: {verified}\n" 1147 | f"`🛒` **Billing Info**:\n{billing_info_text}\n" 1148 | f"`🔑` **Token**: ```{token}```" 1149 | ) 1150 | 1151 | elif res.status_code == 401: 1152 | return "The token is not valid." 1153 | 1154 | else: 1155 | return "An error occurred while checking the token." 1156 | 1157 | # Bot command to check token 1158 | @bot.command() 1159 | async def tokencheck(ctx, token: str): 1160 | await ctx.message.delete() 1161 | token_info = get_token_info(token) 1162 | 1163 | # Send token information in plain text format 1164 | await ctx.send(f"{token_info}") 1165 | 1166 | @bot.command() 1167 | async def react(ctx, *args): 1168 | global react_mode, target_user, reaction_emoji 1169 | 1170 | if len(args) == 0: 1171 | await ctx.send("Usage: `+react <@user> ` or `+react `.") 1172 | return 1173 | 1174 | # Determine if the first argument is a user mention 1175 | if len(ctx.message.mentions) > 0: 1176 | target_user = ctx.message.mentions[0] 1177 | reaction_emoji = args[1] if len(args) > 1 else None 1178 | else: 1179 | target_user = ctx.author 1180 | reaction_emoji = args[0] 1181 | 1182 | if not reaction_emoji: 1183 | await ctx.send("You must provide an emoji to react with.") 1184 | return 1185 | 1186 | react_mode = True 1187 | await ctx.send(f"React mode enabled. Reacting with {reaction_emoji} to messages by {target_user.display_name}.") 1188 | 1189 | @bot.command() 1190 | async def react_off(ctx): 1191 | global react_mode 1192 | react_mode = False 1193 | await ctx.send("React mode disabled.") 1194 | 1195 | bot.run(token) 1196 | --------------------------------------------------------------------------------