コード例 #1
0
ファイル: Client.py プロジェクト: MWRose/Accord
    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()
コード例 #2
0
ファイル: CA.py プロジェクト: MWRose/Accord
    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()
コード例 #3
0
ファイル: ebooks.py プロジェクト: ZerataX/ebooks
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")
コード例 #4
0
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()
コード例 #5
0
    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))