Battleorders WIP

This commit is contained in:
KEriks 2021-08-28 15:12:46 +03:00
parent 0c5fa46e2b
commit fc7c57abe5
2 changed files with 49 additions and 0 deletions

View File

@ -64,6 +64,31 @@ async def control_mention_remove(ctx, kind: str, division: str):
return await ctx.send(MESSAGES["nothing_to_do"])
async def control_order_set(ctx, battle_id, side):
if not DB.get_battle_order(battle_id):
side_id = None
try:
side_id = COUNTRIES[int(side)].id
except (ValueError, KeyError):
try:
side_id = [c for c in COUNTRIES.values() if side.lower() in repr(c).lower()][0].id
except IndexError:
return await ctx.send(MESSAGES["command_failed"])
DB.set_battle_order(battle_id, side_id)
return await ctx.send(f"✅ Order has been set! {COUNTIRES[side_id].name} must win")
return await ctx.send(MESSAGES["nothing_to_do"])
async def control_order_unset(ctx, battle_id):
if DB.delete_battle_order(battle_id):
return await ctx.send(f"✅ Order has been unset!")
return await ctx.send(MESSAGES["nothing_to_do"])
async def control_order(ctx, action, *args):
if action == "set":
return await control_order_set(ctx, *args)
return await ctx.send(MESSAGES["nothing_to_do"])
@bot.event
async def on_ready():
logger.info("Bot loaded")

View File

@ -20,6 +20,7 @@ class DiscordDB:
self.rss_feed = self._db.table("rss_feed")
self.channel = self._db.table("channel")
self.role_mapping = self._db.table("role_mapping")
self.battleorder = self._db.table("battleorder")
def initialize(self):
hard_tables = ["member", "player", "channel", "role_mapping"]
@ -59,6 +60,7 @@ class DiscordDB:
self._db.create_table("division", {"division_id": int, "epic": bool, "empty": bool}, pk="id", defaults={"epic": False, "empty": False}, not_null={"division_id"})
self._db.create_table("rss_feed", {"timestamp": float}, pk="id", not_null={"timestamp"})
self._db.create_table("battleorder", {"battle_id": int, "side": int}, pk="id", not_null={"battle_id","side"}, defaults={"side":71})
self._db.vacuum()
@ -277,3 +279,25 @@ class DiscordDB:
rows = self.role_mapping.rows_where("channel_id = ? and division = ?", (ch_id, division))
for row in rows:
return row["role_id"]
def set_battle_order(self, battle_id:int, side:int):
if self.get_battle_order(battle_id):
return False
self.battleorder.insert(dict(battle_id=battle_id, side=side))
return True
def get_battle_order(self, battle_id: int = None):
if battle_id is None:
return list(sef.battleorder.rows)
try:
row = next(self.battleorder.rows_where('battle_id = ?', (battle_id,)))
return row
except StopIterationError:
return
def delete_battle_order(self, battle_id: int):
bo = self.get_battle_order(battle_id)
if bo:
DB.battleorder.delete(bo['id'])
return True
return False