Fix ordering. Add patch info.

This commit is contained in:
AB
2019-09-07 00:49:11 +03:00
parent 937d38de5c
commit 56ce493d27
2 changed files with 54 additions and 10 deletions

37
app.py
View File

@ -45,8 +45,8 @@ def smart_append(line, text, lenght=4000):
def shorten(text): def shorten(text):
max_len = 4000 max_len = 4000
if len(text) > max_len: if len(text) > max_len:
text = text[len(text)-max_len:] text = 'Message too long...\n' + text[len(text)-max_len:]
return 'Message too long...\n' + text return text
def button(update, context): def button(update, context):
query = update.callback_query query = update.callback_query
@ -68,11 +68,34 @@ def button(update, context):
reply_markup = InlineKeyboardMarkup([[InlineKeyboardButton("Back", callback_data='patches'),]]) reply_markup = InlineKeyboardMarkup([[InlineKeyboardButton("Back", callback_data='patches'),]])
text = f'Patch *{patch}*\n' text = f'Patch *{patch}*\n'
general_info = DB.get_general_history(patch) general_info = DB.get_general_history(patch)
i = 1 heroes_affected = DB.get_heroes_affected(patch)
for change in general_info: items_affected = DB.get_items_affected(patch)
text += f" {i} - {change[0]}\n" if len(general_info) == 0:
i += 1 text += f"There isn't general changes in {patch}\n"
query.edit_message_text(text, parse_mode=ParseMode.MARKDOWN, reply_markup=reply_markup) else:
text += "*General changes:\n*"
i = 1
for change in general_info:
text += f" {i} - {change[0]}\n"
i += 1
if len(heroes_affected) == 0:
text += f"There isn't heroes changed in {patch}"
else:
i = 1
text += "*Heroes changed:\n*"
for hero in heroes_affected:
text += f" {i} - {hero[0]}\n"
i += 1
if len(items_affected) == 0:
text += f"There isn't items changed in {patch}"
else:
i = 1
text += "*Items changed:\n*"
for item in items_affected:
text += f" {i} - {item[0]}\n"
i += 1
query.edit_message_text(shorten(text), parse_mode=ParseMode.MARKDOWN, reply_markup=reply_markup)
if query.data.split('_')[0] == 'item': if query.data.split('_')[0] == 'item':
keyboard = [[InlineKeyboardButton("Back", callback_data='items')]] keyboard = [[InlineKeyboardButton("Back", callback_data='items')]]
if 'expand' in query.data: if 'expand' in query.data:

View File

@ -209,12 +209,33 @@ class DataBase:
patches.append(patch[0]) patches.append(patch[0])
return patches return patches
def get_items_affected(self, patch):
patch = patch.replace("'", "''")
patch = self.get_patch_id(patch)
sql = f"""SELECT i.name FROM item_changes ic
LEFT JOIN items i ON i.ROWID = ic.item
WHERE ic.patch = {patch}
GROUP BY i.name
ORDER BY i.name"""
return self.execute(sql)
def get_heroes_affected(self, patch):
patch = patch.replace("'", "''")
patch = self.get_patch_id(patch)
sql = f"""SELECT h.name FROM hero_changes hc
LEFT JOIN heroes h ON h.ROWID = hc.hero
WHERE hc.patch = {patch}
GROUP BY hero
ORDER BY h.name"""
return self.execute(sql)
def get_general_history(self, patch): def get_general_history(self, patch):
patch = patch.replace("'", "''") patch = patch.replace("'", "''")
patch = self.get_patch_id(patch) patch = self.get_patch_id(patch)
sql = f"""SELECT gc.info FROM general_changes gc sql = f"""SELECT gc.info FROM general_changes gc
LEFT JOIN patches p on p.ROWID = gc.patch LEFT JOIN patches p on p.ROWID = gc.patch
WHERE gc.patch = '{patch}'""" WHERE gc.patch = '{patch}'
ORDER BY p.version ASC"""
return self.execute(sql) return self.execute(sql)
def get_hero_history(self, hero): def get_hero_history(self, hero):
@ -228,7 +249,7 @@ class DataBase:
LEFT JOIN patches p ON hc.patch = p.ROWID LEFT JOIN patches p ON hc.patch = p.ROWID
WHERE hc.hero = {hero} WHERE hc.hero = {hero}
) a ON p.version = a.version ) a ON p.version = a.version
ORDER BY p.rowid DESC;""" ORDER BY p.version ASC"""
return self.execute(sql) return self.execute(sql)
def get_item_history(self, item): def get_item_history(self, item):
@ -241,7 +262,7 @@ class DataBase:
LEFT JOIN patches p ON p.rowid = ic.patch LEFT JOIN patches p ON p.rowid = ic.patch
WHERE ic.item = {item} WHERE ic.item = {item}
) a ON p.version = a.version ) a ON p.version = a.version
ORDER BY p.rowid DESC""" ORDER BY p.version ASC"""
return self.execute(sql) return self.execute(sql)
def close(self, conn): def close(self, conn):