def PrepareImage(self, message: Tuple[str, str]) -> None: imageFromS3 = S3.readImage(self.GetImagePath(message[0])) img = Image.open(BytesIO(imageFromS3)) editable_img = ImageDraw.Draw(img) image_width = img.width image_height = img.height font = S3.readFont("fonts/DejaVuSans.ttf") myFont = ImageFont.truetype(font, 40) w, h = myFont.getsize(message[0]) w2, h2 = myFont.getsize(message[1]) if w > image_width - 200: myFont = ImageFont.truetype(font, 30) w, h = myFont.getsize(message[0]) w2, h2 = myFont.getsize(message[1]) editable_img.text(((image_width - w) / 2, image_height - 96), message[0], fill="white", font=myFont) editable_img.text(((image_width - w2) / 2, image_height - 50), message[1], fill="white", font=myFont) img.save("result.png", "PNG")
def __init__(self, bot): self.bot = bot self.battle = "" response = S3.read('soldiers.txt') self.soldiers = jsonpickle.decode(response['Body'].read().decode('utf-8'), keys=True) response2 = S3.read('prawda.txt') self.opened = json.loads(response2['Body'].read().decode('utf-8'))
async def otworz(self, ctx, battle_link="A wtedy Jezus rzekł: Idźcie i nabijajcie expa."): """Prawidłowy sposób użycia: @otworz link\nlink - link do bitwy w eRepie [albo jakis komentarz zamiast linku] [opcjonalny argument]. Pozwala żołnierzom używać komend join i finish. Jeśli użyjemy cudzysłowów, możemy do bitwy dodać jakiś komentarz, np. "link all div all in". Możemy też w cudzysłowiu dodać sam komentarz.""" if self.opened: await ctx.send("Zbjumrka jest już otworzona!") return self.opened = True self.battle = battle_link await ctx.send("@everyone dołączamy i bijemy wedle wytycznych: " + battle_link) S3.write('prawda.txt', json.dumps(self.opened))
async def zamknij(self, ctx): """Prawidłowy sposób użycia: @zamknij\nZabiera możliwość używania komend @join i @finish. Zeruje zapisany poziom XP żołnierzy [hity zostają w bazie]. Jeśli ktoś zapomniał użyć @finish to ucina zrobione na zbiórce hitki :(.""" if self.opened: self.opened = False self.battle = "" for item in list(self.soldiers.values()): item.xp_start = 0 await ctx.send("```\nDziękujemy za udział w zbiórce!```") self.logsoldiers() S3.write('prawda.txt', json.dumps(self.opened)) else: await ctx.send("```\nBrak otwartych zbiórek, proszę mnie nie molestować.```")
def connect(self): self.conn = S3.AWSAuthConnection(self.options['aws_key'], self.options['aws_secret_key']) res = self.conn.check_bucket_exists(self.options['bucket']) if res.status != 200: res = self.conn.create_bucket(self.options['bucket']) if res.http_response.status != 200: raise S3Error, 'Unable to create bucket %s' % ( self.options['bucket']) return True
def __init__(self, bot): self.bot = bot self.punktyTGS = {} response = S3.read('punkty.txt') self.punktyTGS = json.loads(response['Body'].read().decode('utf-8')) random.seed()
def logsoldiers(self): S3.write('punkty.txt', json.dumps(self.soldiers)) print(json.dumps(self.punktyTGS))
def logsoldiers(self): S3.write('soldiers.txt', jsonpickle.encode(self.soldiers, keys=True, indent=4)) print(jsonpickle.encode(self.soldiers, keys=True, indent=4))
async def zapisz(self, ctx): """Prawidłowy sposób użycia: @zapisz Zapisuje obecnych w bazie żołnierzy na trwałym pliku.""" S3.write('soldiers.txt', jsonpickle.encode(self.soldiers, keys=True, indent=4))
def SaveSoldiersData(self, data: Dict[int, SoldierData]) -> None: S3.write('stats.txt', json.dumps(data))
def ReadSoldiersDataFromDatabase(self) -> Dict[int, SoldierData]: response = S3.read('stats.txt') return json.loads(response['Body'].read().decode('utf-8'))
def SaveSoldiersIds(self, ids: Dict[str, List[str]]) -> None: S3.write('spying-ids.txt', json.dumps(ids))
def ReadSoldiersIdsFromDatabase(self) -> Dict[str, List[str]]: response = S3.read('spying-ids.txt') return json.loads(response['Body'].read().decode('utf-8'))
content.content_type except AttributeError, e: guess_type = True if guess_type or not content.content_type: import mimetypes content_type = mimetypes.guess_type(filename)[0] if content_type is None: content_type = 'text/plain' else: content_type = content.content_type perm = self.options['default_perm'] res = self.conn.put(self.options['bucket'], filename, S3.S3Object(data), { 'x-amz-acl': perm, 'Content-Type': content_type }) if res.http_response.status != 200: raise S3Error, 'Unable to upload file %s: Error code %s: %s' % ( filename, self.options['bucket'], res.body) content.filename = filename content.url = self.url(filename) return filename def delete(self, filename): res = self.conn.delete(self.options['bucket'], filename)