def __init__(self): # Print Accord client side messages f = Figlet(font="smslant") print(f.renderText("Welcome to ACCORD")) print("Chat away!") self.console_lock = threading.Lock() self.private_key = b"" # Private key for the client self.contacts = {} # {user: {"aes_key", "hmac_key", "public_key"}} self.groups = {} # {group_name: {"aes_key", "hmac_key", "members"}} self.username = "" # Username of this client self.loggedin = False self.ca_public_key = "" self.password_aes = b"" self.password_hmac = b"" self.received_timestamps = {} self.PUBLIC_CA_FILE = 'public_ca.pem' # Get CA public key f = open(self.PUBLIC_CA_FILE, 'rb') self.ca_public_key = f.read() f.close() # Initializes the database w/username, public key, signatures Database.initialize_username_database() Database.initialize_saved_accounts_database() Database.initialize_groups_database() self.start_client()
def __init__(self): self.CA_EMAIL = '*****@*****.**' self.CA_PASS = '******' f = Figlet(font="smslant") print(f.renderText("Certificate Authority")) # Load the private key for CA f = open('private_ca.pem', 'rb') self.private_key = f.read() f.close() # Load the public key for CA f = open('public_ca.pem', 'rb') self.public_key = f.read() f.close() CA_Database.initialize_database() self.start_ca()
async def on_message(message): print("'" + message.clean_content + "'") message_to_bot = False image_in_message = False settings = "" old_settings = "" bot_message = "" if not message.author.bot: for mention in message.mentions: if mention.bot: print("message sent to bot") message_to_bot = True print("message sent by " + message.author.name) if message.server: serverid = message.server.id owner = message.server.owner if os.path.exists("server/" + message.server.name): os.rename("server/" + message.server.name, "server/" + serverid) if not os.path.exists("server/" + serverid): os.makedirs("server/" + serverid) os.makedirs("server/" + serverid + "/images") os.makedirs("server/" + serverid + "/output") print("created server folder structure for " + serverid) if os.path.isfile("server/" + serverid + "/settings.json"): with open("server/" + serverid + "/settings.json", "r") as settings_file: settings = settings_file.read() settings = json.loads(settings) if settings != "": current_settings_ver = settings["version"] else: current_settings_ver = 0 if current_settings_ver != settings_ver: with open("server/" + serverid + "/settings.json", "w") as settings_file: settings_file.write('{"version" : '+str(settings_ver)+', "farewell": false, "farewell_text": "**Hope to see you soon again, $member <3**", "greetings": false, "greetings_text" : "**Welcome $mention to __$server__**!", "fakku": true, "sadpanda": true,"animated": "'+message.server.default_role.id+'", "meme_txt": "'+message.server.default_role.id+'", "meme_img": "'+message.server.default_role.id+'", "image": "'+message.server.default_role.id+'", "say": "'+message.server.owner.top_role.id+'", "ascii": "'+message.server.default_role.id+'", "rate": true, "sleep": true, "question": true, "info": "'+message.server.default_role.id+'", "help": "'+message.server.default_role.id+'", "options": "'+message.server.owner.top_role.id+'", "slot_machine": [":pizza:", ":frog:", ":alien:", ":green_apple:", ":heart:"] }') print("created new settings_file") if message.server.me.nick: my_name = message.server.me.nick else: my_name = client.user.name if os.path.isfile("server/" + serverid + "/settings.json"): if current_settings_ver != settings_ver: old_settings = settings if os.path.isfile("server/" + serverid + "/settings.json"): with open("server/" + serverid + "/settings.json", "r") as settings_file: settings = settings_file.read() settings = json.loads(settings) if old_settings != "": for key, value in old_settings.items(): if key != "version": settings[key] = old_settings[key] with open("server/" + serverid + "/settings.json", "w") as settings_file: json.dump(settings, settings_file) print("settings updated") else: serverid = "None" owner = message.author my_name = client.user.name settings = json.loads('{"slot_machine": [":pizza:", ":frog:", ":alien:", ":green_apple:", ":heart:"], "sadpanda": true, "fakku": true, "question": true }') if not os.path.exists("server/" + serverid + "/images/last_image.png"): file_download(random.choice(requests.get('https://pastebin.com/raw/90WCeZp9').text.split()), "server/" + serverid + "/images/", "last_image.png") with open("server/" + serverid + "/log.txt", "a") as myfile: if message.clean_content.endswith(".") or message.clean_content.endswith("!") or message.clean_content.endswith("?") or message.clean_content.endswith("="): myfile.write(message.clean_content.replace("@", "")) elif message.clean_content.startswith(("?", "!", "=", "`", "´", "^", ";", "~", "+", "\/", "\\", "]", "}", ")", ":", "<")): print("message sent to bot") message_to_bot = True else: myfile.write(message.clean_content.replace("@", "") + ". ") for attachment in message.attachments: file_download(attachment["proxy_url"], "server/" + serverid + "/", "last_image.png") image_in_message = True images = re.findall('(?i)https?:\/\/.*\.(?:png|jpg|jpeg|gif)', message.content) for image in images: file_download(image, "server/" + serverid + "/", "last_image.png") if not message_to_bot: sadpanda = re.findall('(?i)https?:\/\/(?:ex|g.e-)hentai.org\/g\/(\S{6})\/(\S{10})', message.content) fakku = re.findall('(?i)https:\/\/(?:www\.)fakku\.net\/(?:hentai|manga)\/\S*', message.content) if settings["sadpanda"] == True and sadpanda: await client.send_typing(message.channel) gidlist = [] manga_info = "" payload = json.loads('{"method" : "gdata", "gidlist" : [], "namespace": 1 }') for index, manga in enumerate(sadpanda): gid = int(manga[0]) gt = manga[1] payload["gidlist"].append([gid, gt]) url = 'http://g.e-hentai.org/api.php' header = {'Content-type' : 'application/json'} print("creating json request for mangas") ex_response = requests.post(url, data=json.dumps(payload), headers=header) if ex_response.status_code == 200: brackets = re.compile(r'(?:\(|\[|\{)[^(?:\)|\]|\})]*(?:\)|\]|\})') manga_info = ex_response.json() print(manga_info) for manga in manga_info["gmetadata"]: title_eng = re.sub(brackets, '', re.sub(brackets, '', manga["title"])).strip() title_jpn = re.sub(brackets, '', re.sub(brackets, '', manga["title_jpn"])).strip() date = datetime.datetime.fromtimestamp( int(manga["posted"]) ).strftime('%Y-%m-%d %H:%M') artists, male_tags, female_tags, misc_tags, parodies, groups, characters, languages = ([] for i in range(8)) artist, male, female, misc, parody, group, character, language = ("" for i in range(8)) for tag in manga["tags"]: if "artist:" in tag: artists.append(tag[7:]) elif "female:" in tag: female_tags.append(tag[7:]) elif "male:" in tag and not "female:" in tag: male_tags.append(tag[5:]) elif "parody:" in tag: parodies.append(tag[7:]) elif "group:" in tag: groups.append(tag[6:]) elif "character:" in tag: characters.append(tag[10:]) elif "language:" in tag: languages.append(tag[9:]) else: misc_tags.append(tag) if artists: artist = "\n **Artist:** " + str(artists)[:-1][1:].replace("'", "") if groups: group = "\n **Group:** " + str(groups)[:-1][1:].replace("'", "") if parodies: parody = "\n **Parody:** " + str(parodies)[:-1][1:].replace("'", "") if characters: character = "\n **Character:** " + str(characters)[:-1][1:].replace("'", "") if female_tags: female = "\n **Female:** " + str(female_tags)[:-1][1:].replace("'", "") if male_tags: male = "\n **Male:** " + str(male_tags)[:-1][1:].replace("'", "") if misc_tags: misc = "\n **Misc:** " + str(misc_tags)[:-1][1:].replace("'", "") if languages: language = "\n **Language:** " + str(languages)[:-1][1:].replace("'", "") rating = "" for i in range(round(float(manga["rating"])*2)): rating += ":star:" if title_jpn != title_eng: title = "__" + title_eng + "** / **" + title_jpn + "__" else: title = "__" + title_eng + "__" bot_message += ":information_source: " + title + "\n **Category:** " + manga["category"] + language + artist + group + "\n **Posted:** " + date + "\n **Rating:** " + rating + " (" + manga["rating"] + ")\n **Tags:** " + parody + character + female + male + misc + "\n **Thumb:** " + manga["thumb"] print("posting manga info") await client.send_message(message.channel, bot_message) else: manga_info = None print(ex_response) if settings["fakku"] == True and fakku: await client.send_typing(message.channel) for manga in fakku: manga = manga.replace("hentai", "manga") manga = manga.split('fakku.net', 1)[-1] manga = "https://api.fakku.net" + manga data = requests.get(manga).json() data = data["content"] date = datetime.datetime.fromtimestamp( int(data["content_date"]) ).strftime('%Y-%m-%d %H:%M') tags = "[" for tag in data["content_tags"]: tags += "'" + tag["attribute"] + "', " tags = tags[:-2] + "]" if len(data["content_artists"]) > 1: artist_tag = "\n **Artists:** " else: artist_tag = "\n **Artist:** " for artist in data["content_artists"]: artist_tag += artist["attribute"] + ", " artist_tag = artist_tag[:-2] if len(data["content_series"]) > 1: parody_tag = "\n **Parodies:** " else: parody_tag = "\n **Parody:** " for serie in data["content_series"]: parody_tag += serie["attribute"] + ", " parody_tag = parody_tag[:-2] if "content_description" in data: description = "\n **Description:** " + data["content_description"] else: description = "" bot_message += ":information_source: __" + data["content_name"] + "__\n **Category:** " + data["content_category"] + artist_tag + parody_tag + "\n **Posted:** " + date + "\n **Favorites:** " + str(data["content_favorites"]) + " :heart:" + description + "\n **Tags: **" + tags[:-1][1:].replace("'", "") await client.send_message(message.channel, bot_message) if client.user.mentioned_in(message) or serverid == "None": if "roles" in message.content.lower() and message.author.id == (await client.application_info()).owner.id: if serverid == "None": await client.send_message(message.channel, "This only works on servers.") else: bot_message = "**top role:** " + str(owner.top_role.name) + " **position:** " + str(owner.top_role.position) + "\n**default role:** " + str(message.server.default_role.name) + " **position:** " + str(message.server.default_role.position) + "\n**your roles are:** " + str(user_role_ids(message.author)) bot_message += " \n__role hierachy:__\n" for roles in message.server.role_hierarchy: bot_message += "**name:** " + roles.name + " **position: **" + str(roles.position) + " **ID: **" + str(roles.id) + "\n" await client.send_message(message.channel, bot_message) elif " raw" in message.content.lower() or "raw " in message.content.lower(): await client.send_message(message.channel, ":page_with_curl: `" + message.content + "`") elif ( "settings" in message.content.lower() ) and ( message.author.id == owner.id or settings["options"] in user_role_ids(message.author) or discord.utils.get(message.server.roles, id=settings["options"]).position <= message.author.top_role.position ): await client.send_typing(message.channel) REMOVE_LIST = [client.user.mention[:2] + '!' + client.user.mention[2:], client.user.mention, "settings"] if " set " in message.content.lower(): REMOVE_LIST.append("set") remove = '|'.join(REMOVE_LIST) regex = re.compile(r'('+remove+')', flags=re.IGNORECASE) text = regex.sub("", message.content.lower()).strip().split(' ', 1) if text[0] == "version": await client.send_message(message.channel, ":x: **Error:** you can't change the version.") elif text[0] not in settings: await client.send_message(message.channel, ":x: **Error:** this option doesn't exist.") elif text[0] == "slot_machine": settings["slot_machine"] = text[1].split() else: if text[1] == "true": settings[text[0]] = True elif text[1] == "false": settings[text[0]] = False elif text[1] == "@everyone": settings[text[0]] = message.server.default_role.id elif text[1].startswith("<"): settings[text[0]] = text[1][3:21] else: settings[text[0]] = text[1] if serverid == "None": await client.send_message(message.channel, ":x: **Error:** You can not change settings in privat messages.") else: await client.send_message(message.channel, ":white_check_mark: **Success:** set `" + text[0] + "` to `" + text[1] + "`.") with open("server/" + serverid + "/settings.json", "w") as settings_file: json.dump(settings, settings_file) print("updated settings_file") elif " show" in message.content.lower(): await client.send_typing(message.channel) REMOVE_LIST.append("show") remove = '|'.join(REMOVE_LIST) regex = re.compile(r'('+remove+')', flags=re.IGNORECASE) text = regex.sub("", message.content.lower()).strip().split(' ', 1) bot_message = "__Settings:__\n" for key, value in settings.items(): if isinstance(value, (int, bool, list)): value = str(value) elif key != "farewell_text" and key != "greetings_text": value = "<@&" + value + ">" if not text == ['']: if text[0] == "quiet": bot_message += "`Option: " + key + " Value: " + value + "`\n" elif text[0] not in settings: bot_message = ":x: **Error:** this option doesn't exist.\n" break else: if isinstance(settings[text[0]], (int, bool, list)): value = str(settings[text[0]]) elif text[0] != "farewell_text" and text[0] != "greetings_text": value = "<@&" + settings[text[0]] + ">" else: value = settings[text[0]] if len(text) > 2: bot_message = "**Error**: too many arguments\n" elif len(text) > 1 and text[1] == "quiet": bot_message = "`Option: " + text[0] + " Value: " + value + "`\n" elif len(text) > 1 and text[1] != "quiet": bot_message = "**Error**: wrong argument\n" else: bot_message = "**Option:** " + text[0] + " **Value:** " + value + "\n" break else: bot_message += "**Option:** " + key + " **Value:** " + value + "\n" await client.send_message(message.channel, bot_message) elif " json dump" in message.content.lower(): await client.send_message(message.server.owner, ":floppy_disk: These were your old settings for your server: __"+message.server.name+"__\n```js\n" + json.dumps(settings) + "```") if message.server: sent_message = await client.send_message(message.channel, ":incoming_envelope: **Sent!**") await asyncio.sleep(100) await client.delete_message(sent_message) if message.channel.permissions_for(message.server.me).manage_messages: await client.delete_message(message) elif " settings set" in message.content.lower(): for key, value in settings.items(): bot_message += key + "\n" await client.send_message(message.channel, ":x: **Error:** You need to choose one of the following options: \n**" + bot_message + "**\nFor current values use `settings show`") else: await client.send_message(message.channel, ":x: **Error:** Further arguments are needed, eg: `show, set`") elif ( "say" in message.content.lower() and message.channel_mentions ) and ( message.author.id == owner.id or settings["say"] in user_role_ids(message.author) or discord.utils.get(message.server.roles, id=settings["say"]).position <= message.author.top_role.position ): REMOVE_LIST = ["@" + my_name, "@", "say" ,"#"] for channel in message.channel_mentions: REMOVE_LIST.append(channel.name) remove = '|'.join(REMOVE_LIST) regex = re.compile(r'('+remove+')', flags=re.IGNORECASE) text = regex.sub("", message.clean_content).strip() for channel in message.channel_mentions: await client.send_message(channel, ":mega: " + text) elif ( "animated" in message.content.lower() ) and ( message.author.id == owner.id or settings["animated"] in user_role_ids(message.author) or discord.utils.get(message.server.roles, id=settings["animated"]).position <= message.author.top_role.position ): if "dick" in message.content.lower(): bot_message = "8" dick = await client.send_message(message.channel, bot_message) for i in range(randint(4,15)): bot_message += "=" await asyncio.sleep(1) await client.edit_message(dick, bot_message) bot_message += "D" await client.edit_message(dick, bot_message) elif "slot" in message.content.lower() and "machine" in message.content.lower(): choice = ["","",""] for y in range(3): choice[y] = random.choice(settings["slot_machine"]) bot_message = "[" + choice[0] + "][" + choice[1] + "][" + choice[2] + "]" slot_machine = await client.send_message(message.channel, bot_message) for x in range(5): for y in range(3): choice[y] = random.choice(settings["slot_machine"]) bot_message = "[" + choice[0] + "][" + choice[1] + "][" + choice[2] + "]" await asyncio.sleep(1) await client.edit_message(slot_machine, bot_message) if choice[0]==choice[1] and choice[0]==choice[2]: await client.send_message(message.channel, ":trophy: **"+message.author.name.upper()+" WON!** :trophy:") else: await client.send_message(message.channel, "maybe next time.") else: await client.send_message(message.channel, ":x: **Error:** You need to choose one of the following memes: \n **dick**\n **slot_machine**") elif ( "meme_text" in message.content.lower() or "meme_txt" in message.content.lower() ) and ( ( message.author.id == owner.id or settings["meme_txt"] in user_role_ids(message.author) or discord.utils.get(message.server.roles, id=settings["meme_txt"]).position <= message.author.top_role.position ) ): await client.send_typing(message.channel) REMOVE_LIST = ["@" + my_name, "@", "meme_text", "meme_txt"] remove = '|'.join(REMOVE_LIST) regex = re.compile(r'('+remove+')', flags=re.IGNORECASE) text = regex.sub("", message.clean_content).strip() if len(text) == 0: print("no text entered") text = shitpost(serverid) print("Text: " + text) await client.send_file(message.channel, meme_text(text, serverid)) elif ( "meme_image" in message.content.lower() or "meme_img" in message.content.lower() ) and (( message.author.id == owner.id or settings["meme_img"] in user_role_ids(message.author) or discord.utils.get(message.server.roles, id=settings["meme_img"]).position <= message.author.top_role.position )): await client.send_typing(message.channel) REMOVE_LIST = ["@" + my_name, "@", "meme_image", "meme_img", "(?i)https?:\/\/.*\.(?:png|jpg|jpeg|gif)"] remove = '|'.join(REMOVE_LIST) regex = re.compile(r'('+remove+')', flags=re.IGNORECASE) text = regex.sub("", message.clean_content).strip().lower() data = requests.get('https://pastebin.com/raw/fAHJ6gbC').json() print(text) if text in data["memes_images"]: print("Meme: " + text) await client.send_file(message.channel, meme_image("last_image.png", text, serverid)) else: for memes in data["memes_images"]: bot_message += " " + memes + "\n" await client.send_message(message.channel, ":x: **Error:** You need to choose one of the following memes: \n**" + bot_message + "**") elif "ascii" in message.content.lower() and (( message.author.id == owner.id or settings["ascii"] in user_role_ids(message.author) or discord.utils.get(message.server.roles, id=settings["ascii"]).position <= message.author.top_role.position )): emoji = re.findall('<(:\S*:)\d*>', message.clean_content) print(emoji) REMOVE_LIST = ["@" + my_name, "@", "ascii", "<:\S*:\d*>"] remove = '|'.join(REMOVE_LIST) regex = re.compile(r'('+remove+')', flags=re.IGNORECASE) text = regex.sub("", message.clean_content).strip().upper() f = Figlet(font='alphabet') if not text: await client.send_message(message.channel, ":x: **Error:** You need to write some text") else: await client.send_message(message.channel, ":a: :regional_indicator_s: :regional_indicator_c: :regional_indicator_i: :regional_indicator_i: \n```" + f.renderText(text) + "```") elif "random" in message.content.lower() and "gallery" in message.content.lower(): await client.send_message(message.channel, ":link:http://pururin.us/gallery/" + str(randint(1,30000))) elif (" rate" in message.content.lower() or "rate " in message.content.lower()) and (settings["rate"] == True): rating = randint(1,10) if rating == 10: bot_message = "i r8 8/8 m8.\n" else: bot_message =str(rating) + "/10 " + random.choice(["memepoints", "points", "goodboipoints", "faggotpoints"]) + ".\n" bot_message += ":star:" * rating await client.send_message(message.channel, bot_message) elif (" sleep" in message.content.lower() or "sleep " in message.content.lower() or " night" in message.content.lower() or "night " in message.content.lower()) and (settings["sleep"] == True): await client.send_typing(message.channel) kaga = requests.get('https://pastebin.com/raw/4DxVcG4n').text.split() kaga_posting = random.choice (kaga) await client.send_message(message.channel, ":sleeping_accommodation: " + kaga_posting) elif message.content.endswith('?') and (settings["question"] == True): if " or " in message.content.lower(): REMOVE_LIST = ["@" + my_name, "@", "\?", "should I rather", "should I", "would you rather", "what do you prefer", "who do you prefer", "do you prefer", "what is better", "what should I do", "what could I do" , "would you prefer", "decide between", "what do you like more", "decide for me between"] remove = '|'.join(REMOVE_LIST) regex = re.compile(r'('+remove+')', flags=re.IGNORECASE) shitdecision = re.split('; |, | Or | oR | or | OR |\n', regex.sub("", message.clean_content)) shitdecision = " ".join(random.choice(shitdecision).split()) await client.send_message(message.channel, ":heavy_check_mark: " + shitdecision) elif " who" in message.content.lower() or "who " in message.content.lower() or "who?" in message.content.lower(): if message.server: await client.send_message(message.channel, ":bust_in_silhouette: " + random.choice(list(message.server.members)).display_name) else: await client.send_message(message.channel, ":bust_in_silhouette: " + random.choice(["you", "I"])) else: yesno = requests.get('https://pastebin.com/raw/90WCeZp9').text.split() shitanswer = random.choice (yesno) await client.send_message(message.channel, ":link:" + shitanswer) elif "info" in message.content.lower() and ( ( message.author.id == owner.id or settings["info"] in user_role_ids(message.author) or discord.utils.get(message.server.roles, id=settings["info"]).position <= message.author.top_role.position ) ): await client.send_typing(message.channel) if serverid == "None": servername = "None" else: servername = message.server.name num_lines = 0 num_words = 0 num_chars = 0 with open("server/" + serverid + "/log.txt", 'r') as f: for line in f: words = line.split() num_lines += 1 num_words += len(words) num_chars += len(line) user_count = 0 for server in client.servers: user_count += server.member_count await client.send_message(message.channel, """:information_source: *Information:* I'm :robot: **""" + client.user.name + "**. I'm running on " + platform.dist()[0] + " *" + platform.dist()[1] + "* with :snake: python *" + platform.python_version() + "* using discord.py *" + discord.__version__ + """*. I've been online since :clock1: *""" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(p.create_time())) + "* on **" + str(len(client.servers)) + """** servers with a total user count of :busts_in_silhouette: **""" + str(user_count) + """**. The :card_box: log file for **""" + servername + "** is currently **" + str(num_words) + "** words and **" + str(num_chars) + """** characters long. This bot was created by **""" + (await client.application_info()).owner.name + "**#" + (await client.application_info()).owner.discriminator + " with :heart:\nSource: :link:https://github.com/ZerataX/ebooks") elif "help" in message.content.lower() and ( ( message.author.id == owner.id or settings["help"] in user_role_ids(message.author) or discord.utils.get(message.server.roles, id=settings["help"]).position <= message.author.top_role.position ) ): await client.send_typing(message.channel) await client.send_message(message.author, """:exclamation: __Mention me with one of the following commands:__ **set username** to change my username *(this only works twice per hour)* `""" + client.user.mention + """" set username newusername` **set avatar** to change my avatar `""" + client.user.mention + """ set avatar http(s)://website.tld/imageurl` **settings set** to change an option `""" + client.user.mention + """ settings set option value` **settings show** shows the currently set options `""" + client.user.mention + """ settings show` **meme_text** to get a dank meme *(if no text is given a random sentence will be generated)* `""" + client.user.mention + """ meme_text sentence` **meme_image** to get a meme_image *(uses the last posted image on the server)* `""" + client.user.mention + """ meme_image` **ascii** ascii turns your message into huge ascii letters `""" + client.user.mention + """ ascii string` **say** sends a message to all mentioned channels `""" + client.user.mention + """ say string #channel-mention1 #channel-mention2 … #channel-mentionN` **information** sends the current stats `""" + client.user.mention + """ info` **invite** to receive an invite link for another server `""" + client.user.mention + """ invite` A more detailed :page_facing_up: documentation is available here: :link:https://github.com/ZerataX/ebooks/blob/master/README.md """) if message.server: sent_message = await client.send_message(message.channel, ":incoming_envelope: **Sent!**") await asyncio.sleep(100) await client.delete_message(sent_message) if message.channel.permissions_for(message.server.me).manage_messages: await client.delete_message(message) elif "invite" in message.content.lower(): await client.send_typing(message.channel) if "all" in message.content.lower() and message.author.id == (await client.application_info()).owner.id: print("creating invites") bot_message = ":love_letter: __Invites:__\n" for server in client.servers: print("trying to create invite") try: if server.me.server_permissions.create_instant_invite: print("succeeded") invite = await client.create_invite(server, max_age=60, max_uses=1) bot_message += "**Server:** " + server.name + " **Invite**: " + invite.url + "\n" else: print("failed") bot_message += "**Server:** " + server.name + " **Invite**: could not create invite *(missing permission)*\n" except: pass await client.send_message(message.channel, bot_message) elif "delete" in message.content.lower() and message.author.id == (await client.application_info()).owner.id: invites = re.findall("(https?:\/\/discord\.gg\/[\da-zA-Z]+)", message.content) for invite in invites: print("trying to delete invite: '" + invite + "'") invite = await client.get_invite(invite) if invite.inviter == client.user: await client.delete_invite(invite) print("succeeded") await client.send_message(message.channel, ":white_check_mark: **Success:** deleted invite: " + invite.url) else: print("failed") await client.send_message(message.channel, ":x: **Error:** could not deleted invite: " + invite.url) else: await client.send_message(message.author, discord.utils.oauth_url((await client.application_info())[0], permissions=None, server=None)) if message.server: sent_message = await client.send_message(message.channel, ":incoming_envelope: **Sent!**") await asyncio.sleep(100) await client.delete_message(sent_message) if message.channel.permissions_for(message.server.me).manage_messages: await client.delete_message(message) elif "set avatar " in message.content.lower(): await client.send_typing(message.channel) if message.author.id == (await client.application_info()).owner.id: if image_in_message: with open("server/images/last_image.png", 'rb') as f: await client.edit_profile(password=None,avatar=f.read()) await client.send_message(message.author, ":white_check_mark: **Success:** Avatar set!") else: await client.send_message(message.channel, ":x: **Error:** No image given!") else: await client.send_message(message.channel, ":x: **Error:** You are not allowed to do that!") elif "set username " in message.content.lower(): await client.send_typing(message.channel) if message.author.id == (await client.application_info()).owner.id: REMOVE_LIST = ["@", my_name , " set username "] remove = '|'.join(REMOVE_LIST) regex = re.compile(r'('+remove+')', flags=re.IGNORECASE) name = regex.sub("", message.clean_content) print("New username: "******":white_check_mark: **Success:** Username set!") else: await client.send_message(message.channel, ":x: **Error:** **You are not allowed to do that!") else: await client.send_typing(message.channel) await client.send_message(message.channel, shitpost(serverid)) else: print("message sent by bot")
def Main(): #Opening Text f = Figlet(font='slant') print(f.renderText('Mission Command')) #Console Style style = style_from_dict({ Token.Separator: '#cc5454', Token.QuestionMark: '#673ab7 bold', Token.Selected: '#cc5454', # default Token.Pointer: '#673ab7 bold', Token.Instruction: '', # default Token.Answer: '#f44336 bold', Token.Question: '', }) #Input API Key API = [{ 'type': 'input', 'name': 'API', 'message': 'CoinMarketCap API Key', }] #Input Coin Name questions = [{ 'type': 'input', 'name': 'Coin', 'message': 'Coin/Token Name (All Caps)', }] #Coin Parameter Checkboxes questions2 = [ { 'type': 'checkbox', 'message': 'Select Token/Coin Parameters', 'name': 'dataReq', 'choices': [ Separator('= Parameters ='), { 'name': 'price', }, { 'name': 'change' }, { 'name': 'volume' }, Separator('= Metrics ='), { 'name': 'MarketCap' }, { 'name': 'TotalSupply' }, { 'name': 'Circulating' }, Separator('= Enviornment ='), { 'name': 'Platform' }, { 'name': 'ContractAddress', }, { 'name': 'Rank' } ], 'validate': lambda answer: 'You must choose at least one variable' \ if len(answer) == 0 else True } ] #Format Answers apiKey = prompt(API, style=style) answers = prompt(questions, style=style) answers2 = prompt(questions2, style=style) #pprint(answers) #pprint(answers2) #Convert Answers json_Api = json.dumps(apiKey, sort_keys=True, indent=2) json_Answer = json.dumps(answers, sort_keys=True, indent=2) json_Answers = json.dumps(answers2, sort_keys=True, indent=2) #Load 'Coin' Varible json_Answer_Var = json.loads(json_Answer) coin = json_Answer_Var['Coin'] #Load 'API' Varible json_Api_Var = json.loads(json_Api) cmcApi = json_Api_Var['API'] #print (coin) #API URL url = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest' parameters = {'symbol': '' + str(coin) + '', 'convert': 'USD'} #API Headers & Key headers = { 'Accepts': 'application/json', 'X-CMC_PRO_API_KEY': '' + str(cmcApi) + '', } #API Session session = Session() session.headers.update(headers) response = session.get(url, params=parameters) #Data Conversion & Offline File Store data1 = json.loads(response.text) json_string = json.dumps(data1, sort_keys=True, indent=2) f = open('data.txt', 'w') f.write(json_string) with open('data.txt', 'rb') as f: byte = f.read() byte f.close() with open('data.txt', 'r') as order: for data in json_miner(order): json_string = json.dumps(data, sort_keys=True, indent=2) data = json.loads(json_string) #print (json_string) #print (data) pairs = data.items() #Loop To Display Data def Release(): while True: try: if 'price' in json_Answers: for key, value in pairs: print( ' Price: ', value['' + str(coin) + '']['quote']['USD']['price']) sleep(i) clear() Main() elif 'change' in json_Answers: for key, value in pairs: print( ' 24Hr Change: ', value['' + str(coin) + '']['quote']['USD']['percent_change_24h']) sleep(i) clear() Main() elif 'volume' in json_Answers: for key, value in pairs: print( ' Volume: ', value['' + str(coin) + '']['quote']['USD']['volume_24h']) sleep(i) clear() Main() elif 'MarketCap' in json_Answers: for key, value in pairs: print( ' Market Cap: ', value['' + str(coin) + '']['quote']['USD']['market_cap']) sleep(i) clear() Main() elif 'TotalSupply' in json_Answers: for key, value in pairs: print(' Total Supply: ', value['' + str(coin) + '']['total_supply']) sleep(i) clear() Main() elif 'Circulating' in json_Answers: for key, value in pairs: print(' Circulating Supply: ', value['' + str(coin) + '']['circulating_supply']) sleep(i) clear() Main() elif 'Platform' in json_Answers: for key, value in pairs: print(' Platform: ', value['' + str(coin) + '']['platform']['name']) sleep(i) clear() Main() elif 'ContractAddress' in json_Answers: for key, value in pairs: print( ' Token Address: ', value['' + str(coin) + '']['platform']['token_address']) sleep(i) clear() Main() elif 'Rank' in json_Answers: for key, value in pairs: print(' CMC-Rank: ', value['' + str(coin) + '']['cmc_rank']) sleep(i) clear() Main() elif 'null' in data: print('Null: ', data['null']) else: print('Error') break except: clear() Main() #print ("EXCEPTION: Error - Dumping Data >> ", data) Release()
print(" ") if GPU_USE: client.containers.run(image=CONTAINER_IMAGE, command=COMMAND, user=DOCKER_USER, runtime='nvidia', remove=True, volumes=VOLUMES) else: client.containers.run(image=CONTAINER_IMAGE, user=DOCKER_USER, command=COMMAND, remove=True, volumes=VOLUMES) # update probability from the container tmp_prob_path = os.path.join(DATA_PATH, '.view.txt') if os.path.exists(tmp_prob_path): f = open(tmp_prob_path, 'r') prob = f.read() # remove tmp file os.remove(tmp_prob_path) else: prob = "?" print('Current view:', prob) print("--------------------------------------------------") print('Computing time: %0.2f sec.' % (time.time() - t))