crunk
2 weeks ago
7 changed files with 88 additions and 0 deletions
@ -0,0 +1,18 @@ |
|||||
|
beautifulsoup4==4.12.3 |
||||
|
certifi==2024.8.30 |
||||
|
charset-normalizer==3.4.0 |
||||
|
click==8.1.7 |
||||
|
distro==1.9.0 |
||||
|
html2text==2024.2.26 |
||||
|
idna==3.10 |
||||
|
importlib_metadata==8.5.0 |
||||
|
lxml==5.3.0 |
||||
|
req==1.0.0 |
||||
|
requests==2.32.3 |
||||
|
six==1.16.0 |
||||
|
soupsieve==2.6 |
||||
|
typing_extensions==4.12.2 |
||||
|
urllib3==2.2.3 |
||||
|
zipp==3.20.2 |
||||
|
zulip==0.9.0 |
||||
|
zulip-bots==0.9.0 |
Binary file not shown.
Binary file not shown.
@ -0,0 +1,15 @@ |
|||||
|
from snackfinder import menu |
||||
|
from typing import Any, Dict |
||||
|
from zulip_bots.lib import BotHandler |
||||
|
|
||||
|
|
||||
|
class AtoomSnackHandler: |
||||
|
def usage(self) -> str: |
||||
|
return "" |
||||
|
|
||||
|
def handle_message(self, message: Dict[str, Any], bot_handler: BotHandler) -> None: |
||||
|
bot_handler.send_reply(message, menu()) |
||||
|
|
||||
|
|
||||
|
handler_class = AtoomSnackHandler |
||||
|
|
@ -0,0 +1 @@ |
|||||
|
[{"usedAt":[],"_id":"61d09ea9436e2474f4269035","cat_code":"cat1","cat_name":"Actie's","sort_number":1,"cat_description":""},{"usedAt":[],"group_items":[],"_id":"5fb2989e4c74b862a5a8c70d","cat_code":"cat2","cat_name":"Populair gerechten","sort_number":2},{"usedAt":[],"_id":"60181524f823670165a7cdf9","cat_code":"cat3","cat_name":"Schotels","sort_number":4,"cat_description":""},{"usedAt":[],"_id":"64459be7fb649c277ff2a3cd","cat_code":"cat4","cat_name":"Atoom keuze menu","sort_number":5,"cat_description":"","image_link":"."},{"usedAt":[],"_id":"60181533f823670165a7cdfa","cat_code":"cat5","cat_name":"Patat & Snacks","sort_number":3,"cat_description":""},{"usedAt":[],"_id":"61d09f04436e2474f42690a9","cat_code":"cat6","cat_name":"Belegde broodjes","sort_number":9,"cat_description":""},{"usedAt":[],"group_items":[],"_id":"5fb30a521daa333b1e53c257","cat_code":"cat7","cat_name":"Stokbrood","sort_number":10},{"usedAt":[],"group_items":[],"_id":"5fb30a501daa333b1e53c256","cat_code":"cat8","cat_name":"Soepen & Voor gerechten","sort_number":11},{"usedAt":[],"group_items":[],"_id":"5fb30a491daa333b1e53c255","cat_code":"cat9","cat_name":"Nasi & Bami & Mihoen","sort_number":12},{"usedAt":[],"group_items":[],"_id":"5fb3fc9a1daa333b1e53c2a9","cat_code":"cat10","cat_name":"Eieren & Groenten gerechten","sort_number":13},{"usedAt":[],"group_items":[],"_id":"5fb30a441daa333b1e53c253","cat_code":"cat11","cat_name":"Vlees & Kip gerechten","sort_number":14},{"usedAt":[],"group_items":[],"_id":"5fb2f02c1daa333b1e53c215","cat_code":"cat12","cat_name":"Combi gerechten","sort_number":15},{"usedAt":[],"group_items":[],"_id":"5fb2f0291daa333b1e53c214","cat_code":"cat13","cat_name":"Sauzen","sort_number":16},{"usedAt":[],"group_items":[],"_id":"5fb2f0261daa333b1e53c213","cat_code":"cat14","cat_name":"Dranken","sort_number":17},{"usedAt":[],"group_items":[],"_id":"5fb2f0231daa333b1e53c212","cat_code":"cat15","cat_name":"Milkshake's","sort_number":18},{"usedAt":[],"_id":"6018151af823670165a7cdf7","cat_code":"cat16","cat_name":"Surinaamse broodjes, telo en bara","sort_number":6,"cat_description":""},{"usedAt":[],"_id":"60181515f823670165a7cdf6","cat_code":"cat17","cat_name":"Surinaamse maaltijden","sort_number":7,"cat_description":""},{"usedAt":[],"_id":"60181511f823670165a7cdf5","cat_code":"cat18","cat_name":"Specialiteiten","sort_number":8,"cat_description":""}] |
File diff suppressed because one or more lines are too long
@ -0,0 +1,53 @@ |
|||||
|
import json |
||||
|
import random |
||||
|
|
||||
|
products = "products.json" |
||||
|
categories = "categories.json" |
||||
|
|
||||
|
def findthesnacks(products): |
||||
|
"""these are the snacks you are looking for""" |
||||
|
with open(products, 'r') as snacks: |
||||
|
snackdata = json.load(snacks) |
||||
|
return random.choice(snackdata) |
||||
|
|
||||
|
|
||||
|
def munchies(amount): |
||||
|
snack_menu = [] |
||||
|
for _ in range(amount): |
||||
|
snack_menu.append(findthesnacks(products)) |
||||
|
return snack_menu |
||||
|
|
||||
|
|
||||
|
def findthecategory(snack): |
||||
|
snack_category = snack["categorie"][0] |
||||
|
with open(categories, 'r') as category_json: |
||||
|
categorydata = json.load(category_json) |
||||
|
for category in categorydata: |
||||
|
if category["cat_code"] == snack_category: |
||||
|
return category["cat_name"] |
||||
|
|
||||
|
def has_snack_image(snack): |
||||
|
return "img_url" in snack |
||||
|
|
||||
|
def menu(): |
||||
|
snack_menu = munchies(3) |
||||
|
menu = "Have you tried" |
||||
|
first_snack = True |
||||
|
for snack in snack_menu: |
||||
|
snack_title = snack["title"] |
||||
|
snack_price = snack["price"] |
||||
|
snack_category = findthecategory(snack) |
||||
|
happy_snack_image = has_snack_image(snack) |
||||
|
if not first_snack: |
||||
|
menu += "Or" |
||||
|
menu += f" *{snack_title}* from the menu section {snack_category} for the price of **{snack_price}** euros?" |
||||
|
first_snack = False |
||||
|
|
||||
|
if happy_snack_image: |
||||
|
menu += "\r\n" |
||||
|
snack_img = snack["img_url"] |
||||
|
menu += f"\t{snack_img}" |
||||
|
menu += "\r\n\r\n" |
||||
|
return menu |
||||
|
|
||||
|
print(menu()) |
Loading…
Reference in new issue