]> apps.delaporte.us Git - matrix-shop-bot.git/blobdiff - matrix_shop_bot/bot.py
Use contains check for zones
[matrix-shop-bot.git] / matrix_shop_bot / bot.py
index 581e19b7f180304fa145ff7e97f459ab2afb70ed..8894ce61cc1d92c993cefc3d358d2199aafe4bd9 100644 (file)
@@ -31,21 +31,36 @@ async def do_shop(match):
       add  - add an item to shop for
       add.store - add a store
       at STORE_ID - use this store for future commands
-      buy - mark item as purchased
+      buy ID ID ID - mark items as purchased
       clear STORE - clear all purchased items for STORE
       list - re-show list from last used store
-      past STORE - re-show past purchased items from STORE 
+      past STORE - show purchased items from STORE in last 90 days
       stores - list all stores
+
+    Examples:
+      .shop past costco
+      .shop at costco
+
+      .shop add sour cream
+      .shop add milk
+    
+      .shop list
+
+      .shop buy 1 2 5 7
+
     '''
     extended_help = '''
       assign ITEM_ID - assign item to last used store id
       assign.item.to.store ITEM_ID STORE_ID - plan to shop for at store for item
-      clear.all STORE - clear **all** items for STORE
+      clear.all STORE - clear **all** items for STORE, including un-purchased
       remove ITEM_ID - remove a shopping item from the datatbase
       remove.store STORE_ID - remove a store from the datatbase (requires clearing the list first)
       setup - run one time database setup
       unsorted - list all items not assigned to any store
+      zone ZONE ITEM - list ITEM under given ZONE 
 
+      Example: 
+        .shop zone dairy sour cream
     '''
 
     if match.command('setup'):
@@ -78,6 +93,12 @@ async def do_shop(match):
         Data().assign_store(item_id, store_id)
         return ['Success']
 
+    if match.command('zone'):
+        zone = match.args()[1]
+        item = ' '.join(match.args()[2:])
+        Data().assign_zone(item, zone)
+        return ['Success']
+
     if match.command('assign'):
         item_id  = int(match.args()[1])
         Data().assign_last_store(item_id)
@@ -126,7 +147,7 @@ async def do_shop(match):
     if match.command('past'):
         store_name = ' '.join(match.args()[1:])
         items = Data().list_purchases(store_name)
-        results = ['Past purchases...']
+        results = [f'# Previously purchased at {store_name}']
         for item in items:
             results.append(str(item))
         return results
@@ -164,9 +185,16 @@ async def shop_bot(room, message, bot):
     try:
         if match.prefix():
             result_lines = await do_shop(match)
+
+            message_lines = []
             for line in result_lines:
-                await bot.api.send_text_message(
-                    room.room_id, str(line))
+                message_lines.append(str(line))
+
+            message = '\n'.join(message_lines)
+
+            await bot.api.send_text_message(
+                room.room_id, message)
+
     except Exception as ex:
         for line in ['You have:', '    no tea', str(ex)]:
             await bot.api.send_text_message(