MinatoAquaCrews / nonebot_plugin_what2eat

What2eat & what2drink plugin for nonebot2
MIT License
59 stars 9 forks source link

🔥 dev: 今天喝什么/What to Drink? #15

Open KafCoppelia opened 2 years ago

KafCoppelia commented 2 years ago

dev-v0.4.0 新的功能:今天喝什么?实现你问今天喝什么,Bot随机选取并回答:

不如来一杯 大杯 去冰 半糖 四季玛奇朵,加波霸和椰果!

当然,上述回答形式没有固定,但是我想实现的随机选取的变量有:

  1. 杯型,例如:中杯、大杯;
  2. 冰度,例如:少冰、去冰、常温、热;
  3. 甜度(糖度),例如:全糖、半糖、无糖;
  4. 饮品,这个随不同品牌菜单而选择,数据来源各品牌小程序的菜单;
  5. 配料,例如波霸、珍珠等,随机选取0~3项为宜;

可以去dev分支查看drinking.jsondrinking2.json以及data_source.py的部分代码:

class DrinkingManager:
    ...

json文件存有诸如一点点茶颜悦色蜜雪冰城CoCo的菜单信息,代码部分仅列出了选取的逻辑。目前,我仅考虑一点点的点单逻辑就稍显复杂了,后续喜茶等品牌则更复杂。问题有:

  1. 部分饮品仅支持热/冷(例如冰沙🍧,但仍可选择全冰、少冰),由此带来的冰度选取逻辑的改动;
  2. 部分饮品仅一种杯型(在喜茶中更为常见);
  3. 多数品牌配料有免费与付费两种,当然大多数情况下只会加免费配料,且不止一种(尤其是一点点)。期望实现大概率添加1~3项不同的配料,小概率添加1项付费配料,总配料不宜过多;
  4. 更复杂的情况:不同饮品有不同的配料选择(例如茶颜悦色泡沫茶仅有茶小冻选项,而奶盖茶无茶小冻而有加坚果碎等选项)、或者配料均付费(例如CoCo)一般人不会加太多种、或者更复杂如喜茶部分饮品的配料升级/替换的逻辑(冷热饮可选或可更换的配料不同);
  5. 上述几点问题导致菜单数据存储格式未定,目前我所拟定的菜单项目有(简化了部分内容,参见json),虽然比较清晰,如此选择逻辑的实现也导致代码会比较复杂,例如Q1、Q3:
    {
    "一点点": {
        "cup": [
            "中杯",
            "大杯"
        ],
        "sugar_level": [
            "无糖",
            "三分糖",
            "五分糖",
            "七分糖",
            "全糖"
        ],
        "ice_level": [
            "热",
            "标准冰",
            "少冰",
            "去冰",
            "常温"
        ],
        "ingredients": {
            "free": [
                ...
            ],
            "paid": [
                ...
            ]
        },
        "drinks": {
            "general": [
                ...
            ],
            "hot_only": [
                ...
            ],
            "ice_only": [
                ...
            ]
        }
    }
    }
  6. 后续会加入更多的品牌:瑞幸、茶百道等……

如果您有更好的想法或建议,欢迎提出!🥳 此issue长期开启

xiaochenmisty commented 4 months ago

希望能加入命令能只从群特色菜单里抽取,比如发送“今天吃什么特色菜”只能抽到群特色菜单(基础菜单基数太大了,有群友很难抽到特色菜)